Files
2024-07-19 13:30:31 +03:00

85 lines
2.5 KiB
Python

import init_utils
import common
# Initialize the environment and get the name
name = init_utils.initialize_environment(__file__)
args = init_utils.get_args()
# Set arguments from command line
max_acc_drop = args.max_acc_drop
device = args.device
import pandas as pd
import numpy as np
import torch.nn as nn
import torch.nn.functional as F
from sklearn.model_selection import train_test_split
# Load our Dataset
pelvis_acc = pd.read_excel('elderly_fall/Posterior Pelvis Accelerometer Measures.xlsx',
sheet_name = 'ST')
y_data = pelvis_acc['Faller (1), Non-Faller (0)'].to_numpy()
pelvis_acc = pelvis_acc.drop(columns = [pelvis_acc.columns[0], 'Faller (1), Non-Faller (0)'])
head_acc = pd.read_excel('elderly_fall/Head Accelerometer Measures.xlsx',
sheet_name = 'ST')
head_acc = head_acc.drop(columns = [head_acc.columns[0], 'Faller (1), Non-Faller (0)'])
pressure_sen = pd.read_excel('elderly_fall/Pressure-Sensing Insole Measures.xlsx',
sheet_name = 'ST')
pressure_sen = pressure_sen.drop(columns = [pressure_sen.columns[0], 'Faller (1), Non-Faller (0)'])
left_shank = pd.read_excel('elderly_fall/Left Shank Accelerometer Measures.xlsx',
sheet_name = 'ST')
left_shank = left_shank.drop(columns = [left_shank.columns[0], 'Faller (1), Non-Faller (0)'])
X_data = pd.concat([head_acc, pressure_sen, pelvis_acc, left_shank], axis = 1)
# Preprocess the Data
def normalize_column(column):
old_min = column.min()
old_max = column.max()
new_min = 0
new_max = 255
normalized_column = ((column - old_min) / (old_max - old_min)) * (new_max - new_min) + new_min
return normalized_column.astype(int)
X_data = X_data.apply(normalize_column)
X_d = X_data/255.0
X_train, X_test, y_train, y_test = train_test_split(X_d, y_data,
test_size = 0.15, random_state = 42)
X_train = X_train.to_numpy()
X_test = X_test.to_numpy()
BATCH_SIZE = 1
epochs = 5
lr = 0.0001
class EF_MLP(nn.Module):
def __init__(self):
super(EF_MLP, self).__init__()
self.linear1 = nn.Linear(117, 20)
self.relu1 = nn.ReLU()
self.linear2 = nn.Linear(20, 2)
def forward(self,X):
X = self.relu1(self.linear1(X))
X = self.linear2(X)
return F.log_softmax(X, dim = 1)
net = EF_MLP()
common.create_ibex_qnn(net, name, device, X_train, y_train, X_test, y_test, BATCH_SIZE = BATCH_SIZE,
epochs = epochs, lr = lr, max_acc_drop = max_acc_drop)