NCU / BrainPulse /model_SVM.py
Łukasz Furman
update app.py
a59bdc5
raw
history blame
1.89 kB
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
from sklearn import svm, datasets
import sklearn.model_selection as model_selection
from sklearn.metrics import accuracy_score
from sklearn.metrics import f1_score
from sklearn.metrics import confusion_matrix
from sklearn.preprocessing import StandardScaler
import umap
import umap.plot
from umap.parametric_umap import ParametricUMAP
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import QuantileTransformer
from mne.datasets import eegbci
def compute_Linear_Kernel(df):
stats_frame = df[
['Subject', 'Task', 'Electrode', 'Lentr', 'TT', 'L', 'RR', 'LAM', 'DET']
]
stats_frame.melt(id_vars=['Subject', 'Task', 'Electrode'], var_name='RQA_feature', value_name='feature_value')
stats1 = stats_frame.pivot_table(index=['Subject', 'Task'], columns='Electrode',
values=['TT', 'RR', 'DET', 'LAM', 'L', 'Lentr']).reset_index()
y = stats1.Task.values
stats_data = stats1[['TT', 'RR', 'DET', 'LAM', 'L', 'Lentr']].values
X_train, X_test, y_train, y_test = model_selection.train_test_split(stats_data, y, train_size=0.80, test_size=0.20,
random_state=101)
lin = svm.SVC(kernel='linear').fit(X_train, y_train)
lin_pred = lin.predict(X_test)
lin_accuracy = accuracy_score(y_test, lin_pred)
print('Accuracy (Linear Kernel): ', "%.2f" % (lin_accuracy * 100))
cm = confusion_matrix(y_test, lin_pred)
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
class_acuracy = cm.diagonal()
print('Accuracy (open): ', "%.2f" % (class_acuracy[0] * 100))
print('Accuracy (close): ', "%.2f" % (class_acuracy[1] * 100))