File size: 1,885 Bytes
a59bdc5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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))