Skip to content

Commit

Permalink
switch .ipynb files to .py & add new function res_df into package
Browse files Browse the repository at this point in the history
  • Loading branch information
cma013 committed Jan 29, 2021
1 parent 91ae76f commit 795de01
Show file tree
Hide file tree
Showing 17 changed files with 372 additions and 4 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions multi_participants 2/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions multi_participants 2/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions multi_participants 2/.idea/multi_participants.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

52 changes: 52 additions & 0 deletions multi_participants 2/.idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 65 additions & 0 deletions multi_participants 2/case_3/case_3_accuracy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import os
from mind_reading_package import mind_reading as mr
import pandas as pd

# list all folders' name
participants = os.listdir('path')

# remove the 'cha' folder we don't need
participants = participants.remove('cha')

# create the initial dataframe
df = pd.DataFrame(index = ['SVC', 'DTC', 'NB', 'NN'])

for participant in participants:
# iterate all the folders

for file in os.listdir(participant):
# iterate all files in every folder, find out the one end with 'Cong.csv' and 'Incong.csv' as input data

if file.endswith('Cong.csv'): file1 = f"{participant}/{file}"
if file.endswith('Incong.csv'): file2 = f"{participant}/{file}"

# load in cong and incong data for them
df1 = mr.load_data(file1)
df2 = mr.load_data(file2)

# concatenate such data
data = mr.concatenate_data(df1, df2)

# find trials to later separate
trials_index = mr.find_trials(data)

# separate trials
trials = mr.separate_trials(data, trials_index)

# create the label column
labels = mr.create_binary_labels(data)

# Go through each trial, reset the columns, we split from 100-300ms ((308th sample to 513th sample))
pro_trials = mr.process_trials(trials)

# Find the mean across channels
avg_trials = mr.average_trials(pro_trials)

# concatenates the average trials dataframe with labels
ml_df = mr.create_ml_df(avg_trials, labels)

# train models
X_train, X_test, y_train, y_test = mr.prepare_ml_df(ml_df)

acc_svc, precision_svc = mr.train_svc(X_train, X_test, y_train, y_test)

acc_dtc, precision_dtc = mr.train_dtc(X_train, X_test, y_train, y_test)

acc_nb, precision_nb = mr.train_nb(X_train, X_test, y_train, y_test)

acc_nn, precision_nn = mr.train_nn(64, X_train, X_test, y_train, y_test)

# add every participant's accuracy together
acc_list = [f"{acc_svc:.2f}", f"{acc_dtc:.2f}", f"{acc_nb:.2f}", f"{acc_nn:.2f}"]

df = mr.res_df(df, acc_list, participant)

# generate result .csv file
df.to_csv('case_3_accuracy.csv')
66 changes: 66 additions & 0 deletions multi_participants 2/case_3/case_3_precision.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import os
from mind_reading_package import mind_reading as mr
import pandas as pd

# list all folders' name
participants = os.listdir('path')

# remove the 'cha' folder we don't need
participants = participants.remove('cha')

# create the initial dataframe
df = pd.DataFrame(index = ['SVC', 'DTC', 'NB', 'NN'])

for participant in participants:
# iterate all the folders

for file in os.listdir(participant):
# iterate all files in every folder, find out the one end with 'Cong.csv' and 'Incong.csv' as input data

if file.endswith('Cong.csv'): file1 = f"{participant}/{file}"
if file.endswith('Incong.csv'): file2 = f"{participant}/{file}"

# load in cong and incong data for them
df1 = mr.load_data(file1)
df2 = mr.load_data(file2)

# concatenate such data
data = mr.concatenate_data(df1, df2)

# find trials to later separate
trials_index = mr.find_trials(data)

# separate trials
trials = mr.separate_trials(data, trials_index)

# create the label column
labels = mr.create_binary_labels(data)

# Go through each trial, reset the columns, we split from 100-300ms ((308th sample to 513th sample))
pro_trials = mr.process_trials(trials)

# Find the mean across channels
avg_trials = mr.average_trials(pro_trials)

# concatenates the average trials dataframe with labels
ml_df = mr.create_ml_df(avg_trials, labels)

# train models
X_train, X_test, y_train, y_test = mr.prepare_ml_df(ml_df)

acc_svc, precision_svc = mr.train_svc(X_train, X_test, y_train, y_test)

acc_dtc, precision_dtc = mr.train_dtc(X_train, X_test, y_train, y_test)

acc_nb, precision_nb = mr.train_nb(X_train, X_test, y_train, y_test)

acc_nn, precision_nn = mr.train_nn(64, X_train, X_test, y_train, y_test)

# add every participant's precision together
precision_list = [f"{precision_svc:.2f}", f"{precision_dtc:.2f}", f"{precision_nb:.2f}", f"{precision_nn:.2f}"]

df = mr.res_df(df, precision_list, participant)

# generate result .csv file
df.to_csv('case_3_accuracy.csv')

65 changes: 65 additions & 0 deletions multi_participants 2/case_4/case_4_accuracy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import os
from mind_reading_package import mind_reading as mr
import pandas as pd

# list all folders' name
participants = os.listdir('path')

# remove the 'cha' folder we don't need
participants = participants.remove('cha')

# create the initial dataframe
df = pd.DataFrame(index = ['SVC', 'DTC', 'NB', 'NN'])

for participant in participants:
# iterate all the folders

for file in os.listdir(participant):
# iterate all files in every folder, find out the one end with 'Cong.csv' and 'Incong.csv' as input data

if file.endswith('Cong.csv'): file1 = f"{participant}/{file}"
if file.endswith('Incong.csv'): file2 = f"{participant}/{file}"

# load in cong and incong data for them
df1 = mr.load_data(file1)
df2 = mr.load_data(file2)

# concatenate such data
data = mr.concatenate_data(df1, df2)

# find trials to later separate
trials_index = mr.find_trials(data)

# separate trials
trials = mr.separate_trials(data, trials_index)

# create the label column
labels = mr.create_multi_labels(data)

# Go through each trial, reset the columns, we split from 100-300ms ((308th sample to 513th sample))
pro_trials = mr.process_trials(trials)

# Find the mean across channels
avg_trials = mr.average_trials(pro_trials)

# concatenates the average trials dataframe with labels
ml_df = mr.create_ml_df(avg_trials, labels)

# train models
X_train, X_test, y_train, y_test = mr.prepare_ml_df(ml_df)

acc_svc, precision_svc = mr.train_svc_multi(X_train, X_test, y_train, y_test)

acc_dtc, precision_dtc = mr.train_dtc_multi(X_train, X_test, y_train, y_test)

acc_nb, precision_nb = mr.train_nb_multi(X_train, X_test, y_train, y_test)

acc_nn, precision_nn = mr.train_nn_multi(64, X_train, X_test, y_train, y_test)

# add every participant's accuracy together
acc_list = [f"{acc_svc:.2f}", f"{acc_dtc:.2f}", f"{acc_nb:.2f}", f"{acc_nn:.2f}"]

df = mr.res_df(df, acc_list, participant)

# generate result .csv file
df.to_csv('case_4_accuracy.csv')
65 changes: 65 additions & 0 deletions multi_participants 2/case_4/case_4_precision.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import os
from mind_reading_package import mind_reading as mr
import pandas as pd

# list all folders' name
participants = os.listdir('path')

# remove the 'cha' folder we don't need
participants = participants.remove('cha')

# create the initial dataframe
df = pd.DataFrame(index = ['SVC', 'DTC', 'NB', 'NN'])

for participant in participants:
# iterate all the folders

for file in os.listdir(participant):
# iterate all files in every folder, find out the one end with 'Cong.csv' and 'Incong.csv' as input data

if file.endswith('Cong.csv'): file1 = f"{participant}/{file}"
if file.endswith('Incong.csv'): file2 = f"{participant}/{file}"

# load in cong and incong data for them
df1 = mr.load_data(file1)
df2 = mr.load_data(file2)

# concatenate such data
data = mr.concatenate_data(df1, df2)

# find trials to later separate
trials_index = mr.find_trials(data)

# separate trials
trials = mr.separate_trials(data, trials_index)

# create the label column
labels = mr.create_multi_labels(data)

# Go through each trial, reset the columns, we split from 100-300ms ((308th sample to 513th sample))
pro_trials = mr.process_trials(trials)

# Find the mean across channels
avg_trials = mr.average_trials(pro_trials)

# concatenates the average trials dataframe with labels
ml_df = mr.create_ml_df(avg_trials, labels)

# train models
X_train, X_test, y_train, y_test = mr.prepare_ml_df(ml_df)

acc_svc, precision_svc = mr.train_svc_multi(X_train, X_test, y_train, y_test)

acc_dtc, precision_dtc = mr.train_dtc_multi(X_train, X_test, y_train, y_test)

acc_nb, precision_nb = mr.train_nb_multi(X_train, X_test, y_train, y_test)

acc_nn, precision_nn = mr.train_nn_multi(64, X_train, X_test, y_train, y_test)

# add every participant's precision together
precision_list = [f"{precision_svc:.2f}", f"{precision_dtc:.2f}", f"{precision_nb:.2f}", f"{precision_nn:.2f}"]

df = mr.res_df(df, precision_list, participant)

# generate result .csv file
df.to_csv('case_4_precision.csv')
Original file line number Diff line number Diff line change
Expand Up @@ -310,3 +310,18 @@ def create_metric_df(acc_list, prec_list, model_list):
metric_df.columns = ['acc', 'prec']

return metric_df

def res_df(df, column, participant):
'''
Add precision/accuracy for every participant to the whole results
Args:
df: the dataframe of all results we have had
column: the dataframe of result we want to add
participant: participant number
returns:
all precision/accuracy results
'''

data = pd.DataFrame({f"Participant {participant}": column})
df[f"Participant {participant}"] = data[f"Participant {participant}"].values
return df
Original file line number Diff line number Diff line change
Expand Up @@ -512,3 +512,18 @@ def train_nn_multi(n_inputs, X_train, X_test, y_train, y_test):
_, accuracy, precision = model.evaluate(X_test, y_test, verbose=0)

return accuracy, precision

def res_df(df, column, participant):
'''
Add precision/accuracy for every participant to the whole results
Args:
df: the dataframe of all results we have had
column: the dataframe of result we want to add
participant: participant number
returns:
all precision/accuracy results
'''

data = pd.DataFrame({f"Participant {participant}": column})
df[f"Participant {participant}"] = data[f"Participant {participant}"].values
return df

This file was deleted.

Loading

0 comments on commit 795de01

Please sign in to comment.