NCU / BrainPulse /model_SVM.py
Łukasz Furman
update app.py
a59bdc5
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))