-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpredictor.py
More file actions
51 lines (41 loc) · 2.08 KB
/
predictor.py
File metadata and controls
51 lines (41 loc) · 2.08 KB
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
46
47
48
49
50
51
import pickle
import helper
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
from prettytable import PrettyTable
def generateModels():
dataSet=helper.getData()
X = ['X', 'Y', 'Z']
Y = 'Activity'
knnClassifier=KNeighborsClassifier()
knnClassifier.fit(dataSet[X],dataSet[Y])
decisionTreeClassifier = DecisionTreeClassifier()
decisionTreeClassifier.fit(dataSet[X], dataSet[Y])
randomForestClassifier = RandomForestClassifier()
randomForestClassifier.fit(dataSet[X], dataSet[Y])
pickle.dump(knnClassifier,open('knnClassifier','wb'))
pickle.dump(decisionTreeClassifier, open('decisionTreeClassifier', 'wb'))
pickle.dump(randomForestClassifier, open('randomForestClassifier', 'wb'))
def loadModels():
knnClassifier = pickle.load(open('knnClassifier', 'rb'))
decisionTreeClassifier = pickle.load(open('decisionTreeClassifier', 'rb'))
randomForestClassifier = pickle.load(open('randomForestClassifier', 'rb'))
return knnClassifier,decisionTreeClassifier,randomForestClassifier
def loadTestData():
testData=pd.read_csv('testData.txt', header=None, delimiter=r"\s+", names=["X", "Y", "Z","Activity"])
return testData
if __name__ == "__main__":
knnClassifier,decisionTreeClassifier,randomForestClassifier=loadModels()
testData=loadTestData()
testDataLabels=pd.DataFrame()
testDataLabels['Activity']=testData['Activity']
del testData['Activity']
X = ['X', 'Y', 'Z']
Y = 'Activity'
table = PrettyTable(['X','Y','Z','KNN Predicted Label','Decision Tree Predicted Label','Random Forest Predicted Label','Actual Label'])
for row in range(len(testData.index)):
test=testData.iloc[row].values.reshape(1,-1)
table.add_row([testData.loc[testData.index[row],'X'],testData.loc[testData.index[row],'Y'],testData.loc[testData.index[row],'Z'],knnClassifier.predict(test)[0], decisionTreeClassifier.predict(test)[0], randomForestClassifier.predict(test)[0],testDataLabels.iloc[row][0]])
print(table)