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]: ``