Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)]

Type "copyright", "credits" or "license" for more information.


IPython 7.29.0 -- An enhanced Interactive Python.


In [1]: #n=12000


In [2]:

   ...: """

   ...: Purpose: Train and test a depression prediction model using Yamnet embeddings and SVR.

   ...: """

   ...:

   ...: import pandas as pd

   ...: emb_dir=r'C:\Users\marks\Dropbox\JAR Registered Report\Final_version_submisison\data\daicwoz_nosilence_segment_yamnet\emb'

   ...: import os

   ...:

   ...: os.chdir(emb_dir)

   ...: print(os.listdir())

   ...:

   ...: index_df2=pd.read_csv('df_concat_index2.csv')

   ...:

   ...:

   ...: import os

   ...: import pandas as pd

   ...: import numpy as np

   ...:

   ...: import tensorflow as tf

   ...: from tensorflow.keras import datasets, layers, models

   ...: import matplotlib.pyplot as plt

   ...: import numpy as np

   ...: import os

   ...: import PIL

   ...: import PIL.Image

   ...:

   ...:

   ...: import tensorflow as tf

   ...: import cv2

   ...: import numpy as np

   ...: from tensorflow.keras.applications.efficientnet import EfficientNetB0, preprocess_input

   ...: import os

   ...:

   ...:

   ...:

   ...:

   ...: import os

   ...: import pandas as pd

   ...: import numpy as np

   ...: from sklearn.preprocessing import LabelEncoder

   ...:

   ...:

   ...: from sklearn.model_selection import train_test_split

   ...: from sklearn.preprocessing import StandardScaler

   ...: from sklearn.svm import SVC

   ...:

   ...: from sklearn.metrics import classification_report

   ...: from statistics import mean

   ...:

   ...: from sklearn.decomposition import PCA

   ...: from sklearn.utils import class_weight

   ...:

   ...: from sklearn.svm import SVR

   ...: from sklearn.datasets import make_regression

   ...: from sklearn.model_selection import train_test_split

   ...: from sklearn.metrics import mean_squared_error

   ...: from sklearn.metrics import mean_absolute_error

   ...:

   ...: df=index_df2.copy()

   ...:

   ...:

   ...: source_dir=r'C:\Users\marks\Dropbox\JAR Registered Report\Final_version_submisison\data\daicwoz_nosilence_segment_yamnet\emb'

   ...: df['source_dir']=source_dir

   ...:

   ...:

   ...: def make_full_path(row):

   ...: return os.path.join(row['source_dir'], row['train_test_dev_x'],

   ...: row['category'], row['file_name_yamnetemb'])

   ...:

   ...: df['full_path'] = df.apply(make_full_path, axis=1)

   ...:

   ...:

   ...:

   ...: #n=12000

   ...: print(len(df))

   ...: data = df.sample(len(df))

   ...:

   ...: data=data.reset_index()

   ...:

   ...: X = np.array([np.load(full_path) for full_path in data['full_path']])

   ...:

   ...:

   ...:

   ...: le = LabelEncoder()

   ...:

   ...: y = le.fit_transform(data['PHQ8_Score'])

   ...:

   ...:

   ...: y_bi = le.fit_transform(data['label'])

   ...:

   ...:

   ...:

   ...: p_id = le.fit_transform(data['p_id'])

   ...:

   ...: size = X.shape[0]

   ...: shape1=X.shape[1]

   ...: shape2=X.shape[2]

   ...:

   ...:

   ...: data_reshaped = X.reshape(size, shape1*shape2)

   ...:

   ...:

   ...:

   ...: X_train, X_test, y_train, y_test, indices_train,indices_test,p_id_train, p_id_test, y_bi_train, y_bi_test=train_test_split(data_reshaped, y, data.index, p_id, y_bi, test_size=0.25, random_state=42)

   ...:

   ...:

   ...: scaler = StandardScaler()

   ...: X_train = scaler.fit_transform(X_train)

   ...: X_test = scaler.transform(X_test)

   ...:

   ...:

   ...: c=0.1

   ...: g=0.1

   ...: k='linear'

   ...:

   ...: svr = SVR(kernel='linear', C=c, gamma=g)

   ...:

   ...:

   ...: svr.fit(X_train, y_train)

   ...:

   ...:

   ...: y_pred = svr.predict(X_test)

   ...:

   ...: y_pred=np.clip(y_pred, 0, 24)

   ...:

   ...:

   ...:

   ...:

   ...: mse = mean_squared_error(y_test, y_pred)

   ...: rmse=mse ** 0.5

   ...:

   ...: print('Segment Report:')

   ...:

   ...:

   ...: print(f"RMSE: {rmse}")

   ...:

   ...: mae = mean_absolute_error(y_test, y_pred)

   ...:

   ...: print(f"Mean Absolute Error: {mae:.2f}")

   ...:

   ...:

   ...:

   ...:

   ...: data_test = data.loc[indices_test]

   ...: data_test['y_pred'] = y_pred

   ...:

   ...:

   ...:

   ...:

   ...:

   ...: p_id_means = data_test.groupby('p_id')['y_pred'].apply(mean)

   ...:

   ...:

   ...: overall_pred_s = p_id_means

   ...:

   ...:

   ...: overall_pred = np.reshape(overall_pred_s.to_numpy(), (-1, 1))

   ...: overall_pred=overall_pred.flatten()

   ...:

   ...: overall_pred=np.clip(overall_pred, 0, 24)

   ...:

   ...:

   ...: label_means = data_test.groupby('p_id')['PHQ8_Score'].apply(mean)

   ...:

   ...: overall_label_means_s = label_means

   ...:

   ...:

   ...: overall_label_means = np.reshape(overall_label_means_s.to_numpy(), (-1, 1))

   ...: overall_label_means=overall_label_means.flatten()

   ...:

   ...:

   ...:

   ...: mse = mean_squared_error(overall_label_means, overall_pred)

   ...: rmse=mse ** 0.5

   ...: print('Overall Report:')

   ...:

   ...: print(f"RMSE: {rmse}")

   ...:

   ...: mae = mean_absolute_error(overall_label_means, overall_pred)

   ...:

   ...: print(f"Mean Absolute Error: {mae:.2f}")

['datasets', 'dev', 'df_concat_index2.csv', 'test', 'test_data', 'train', 'yamnet_svc_1.pickle', 'yamnet_svr_1.pickle']

24366

C:\Users\marks\anaconda3\lib\site-packages\numpy\lib\nanfunctions.py:1746: RuntimeWarning: overflow encountered in multiply

sqr = np.multiply(arr, arr, out=arr, where=where)

Segment Report:

RMSE: 6.625385112972646

Mean Absolute Error: 5.25

Overall Report:

RMSE: 5.522344233740414

Mean Absolute Error: 4.50


In [3]: ``