Visualise benchmark_results.cv with vis.py
This commit is contained in:
parent
f2a4bb8d2c
commit
84f8b1e542
5
mini_proj/benchmark_results.csv
Normal file
5
mini_proj/benchmark_results.csv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
name,time,accuracy
|
||||||
|
svm,7.871559143066406,0.8446601941747572
|
||||||
|
tree,0.25446152687072754,0.7087378640776699
|
||||||
|
naive_bayes,0.12949371337890625,0.8252427184466019
|
||||||
|
forest,0.2792677879333496,0.9514563106796117
|
|
@ -3,19 +3,27 @@ import time as t
|
|||||||
from sklearn import svm, ensemble, naive_bayes, neighbors
|
from sklearn import svm, ensemble, naive_bayes, neighbors
|
||||||
from _image_classifier import ImageClassifier
|
from _image_classifier import ImageClassifier
|
||||||
|
|
||||||
|
def accuracy(y_true, y_pred):
|
||||||
|
"""returns the accuracy"""
|
||||||
|
y_pred = np.round(y_pred)
|
||||||
|
return (y_true == y_pred).mean()
|
||||||
|
|
||||||
def precision(y_true, y_pred):
|
def precision(y_true, y_pred):
|
||||||
|
"""returns the precision"""
|
||||||
y_pred = np.round(y_pred)
|
y_pred = np.round(y_pred)
|
||||||
num = np.sum(np.logical_and(y_true, y_pred))
|
num = np.sum(np.logical_and(y_true, y_pred))
|
||||||
den = np.sum(y_pred)
|
den = np.sum(y_pred)
|
||||||
return np.divide(num, den)
|
return np.divide(num, den)
|
||||||
|
|
||||||
def recall(y_true, y_pred):
|
def recall(y_true, y_pred):
|
||||||
|
"""returns the recall"""
|
||||||
y_pred = np.round(y_pred)
|
y_pred = np.round(y_pred)
|
||||||
num = np.sum(np.logical_and(y_true, y_pred))
|
num = np.sum(np.logical_and(y_true, y_pred))
|
||||||
den = np.sum(y_true)
|
den = np.sum(y_true)
|
||||||
return np.divide(num, den)
|
return np.divide(num, den)
|
||||||
|
|
||||||
def f_measure(y_true, y_pred):
|
def f_measure(y_true, y_pred):
|
||||||
|
"""returns the F1 measure"""
|
||||||
p = precision(y_true, y_pred)
|
p = precision(y_true, y_pred)
|
||||||
r = recall(y_true, y_pred)
|
r = recall(y_true, y_pred)
|
||||||
return 2 * p * r / (p + r)
|
return 2 * p * r / (p + r)
|
||||||
@ -39,18 +47,40 @@ my_metric_test = lambda iclf, f: metric_test(iclf, f, im_test, lbl_test)
|
|||||||
svm_iclf = ImageClassifier(svm.SVC)
|
svm_iclf = ImageClassifier(svm.SVC)
|
||||||
tree_iclf = ImageClassifier(neighbors.KNeighborsClassifier)
|
tree_iclf = ImageClassifier(neighbors.KNeighborsClassifier)
|
||||||
naive_bayes_iclf = ImageClassifier(naive_bayes.GaussianNB)
|
naive_bayes_iclf = ImageClassifier(naive_bayes.GaussianNB)
|
||||||
ensemble_iclf = ImageClassifier(ensemble.RandomForestClassifier)
|
forest_iclf = ImageClassifier(ensemble.RandomForestClassifier)
|
||||||
|
|
||||||
classifiers = [
|
classifiers = [
|
||||||
svm_iclf,
|
svm_iclf,
|
||||||
tree_iclf,
|
tree_iclf,
|
||||||
naive_bayes_iclf,
|
naive_bayes_iclf,
|
||||||
ensemble_iclf,
|
forest_iclf,
|
||||||
]
|
]
|
||||||
|
|
||||||
for clf in classifiers:
|
classifier_names = [
|
||||||
|
"svm",
|
||||||
|
"tree",
|
||||||
|
"naive_bayes",
|
||||||
|
"forest",
|
||||||
|
]
|
||||||
|
|
||||||
|
# print("name,time,accuracy,precision,recall,f_measure")
|
||||||
|
print("name,time,accuracy")
|
||||||
|
for clf, name in zip(classifiers, classifier_names):
|
||||||
start = t.time() # Records time before training
|
start = t.time() # Records time before training
|
||||||
clf.fit(im_train, lbl_train)
|
clf.fit(im_train, lbl_train)
|
||||||
end = t.time() # Records time after tranining
|
end = t.time() # Records time after tranining
|
||||||
print("training time:", end-start)
|
y_pred = clf.predict(im_test)
|
||||||
print(clf.score(im_test, lbl_test))
|
print(
|
||||||
|
name,
|
||||||
|
end-start,
|
||||||
|
clf.score(im_test, lbl_test),
|
||||||
|
# precision(lbl_test, y_pred),
|
||||||
|
# recall(lbl_test, y_pred),
|
||||||
|
# f_measure(lbl_test, y_pred),
|
||||||
|
sep=","
|
||||||
|
)
|
||||||
|
# print("training time:\t", end-start)
|
||||||
|
# print("Accuracy:\t", clf.score(im_test, lbl_test))
|
||||||
|
# print("Precision:\t", precision(lbl_test, y_pred))
|
||||||
|
# print("Recall:\t\t", recall(lbl_test, y_pred))
|
||||||
|
# print("F1-measure:\t", f_measure(lbl_test, y_pred))
|
||||||
|
20
mini_proj/vis.py
Normal file
20
mini_proj/vis.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
df = pd.read_csv("benchmark_results.csv")
|
||||||
|
names = df.name
|
||||||
|
df = df.drop("name", axis=1)
|
||||||
|
|
||||||
|
plt.figure()
|
||||||
|
plt.bar(names, df.time)
|
||||||
|
plt.title("Training times")
|
||||||
|
plt.xlabel("Classifier")
|
||||||
|
plt.ylabel("Time (s)")
|
||||||
|
|
||||||
|
plt.figure()
|
||||||
|
plt.bar(names, df.accuracy)
|
||||||
|
plt.title("Prediction Accuracy")
|
||||||
|
plt.xlabel("Classifier")
|
||||||
|
plt.ylabel("Accuracy")
|
||||||
|
|
||||||
|
plt.show()
|
Reference in New Issue
Block a user