Adding worst model + some comments

master
Aurian JAULT 1 year ago
parent 9c4e1afc66
commit 9118b84ac4

File diff suppressed because it is too large Load Diff

@ -188,18 +188,26 @@ def allModels(df):
arrayColumns = [x[i]] arrayColumns = [x[i]]
for j in range(i+1,len(x)): for j in range(i+1,len(x)):
xValues = dfTemp[arrayColumns] xValues = dfTemp[arrayColumns]
for k in range(0,len(modelArray)):
if modelArray[k] == "KNN": # Knn model train
model = model_switch(1) model = model_switch(1)
elif modelArray[k] == "Classifier": accuKnn = customTrainingRaw(model,xValues,y,3)
model = model_switch(2) print("Model used : Knn ---- Case : ",model)
else: print("X values used : ",arrayColumns)
model = model_switch(1)
print("Model used : ",modelArray[k], "---- Case : ",model) # Tree model train
print("X values used : ",arrayColumns) model = model_switch(3)
accu = customTrainingRaw(model,xValues,y,3) accuTree = customTrainingRaw(model,xValues,y,3)
it = [modelArray[k],arrayColumns,accu] print("Model used : Tree ---- Case : ",model)
datas.append(it) print("X values used : ",arrayColumns)
dico = dict()
setUp = [arrayColumns.copy(),dico]
setUp[1]['Knn'] = accuKnn
setUp[1]['Tree'] = accuTree
datas.append(setUp.copy())
arrayColumns.append(x[j]) arrayColumns.append(x[j])
return datas return datas
@ -216,25 +224,61 @@ def customTrainingRaw(model, x, y,res=-1):
print(accuracy_score(ytest, ypredit)) print(accuracy_score(ytest, ypredit))
return accuracy_score(ytest, ypredit) return accuracy_score(ytest, ypredit)
def bestModelFinder(datas): def showStat(datas):
maxi = 0 fig, ax = plt.subplots()
knnMean= 0 x_data = []
treeMean= 0 y_dataKnn = []
y_dataTree = []
for i in range(0,len(datas)): for i in range(0,len(datas)):
if datas[i][0] == 'KNN': x_data.append("/".join(datas[i][0]))
knnMean += datas[i][2] y_dataKnn.append(datas[i][1]['Knn'])
else: y_dataTree.append(datas[i][1]['Tree'])
treeMean += datas[i][2]
if (datas[i][2] > maxi): ax.scatter(x_data, y_dataKnn, label=f'Y = Knn')
maxi = datas[i][2] ax.scatter(x_data, y_dataTree, label=f'Y = Tree')
ax.set_xlabel('Axe X')
ax.set_ylabel('Axe Y')
ax.legend()
plt.show()
def bestModel(datas):
max = 0
min = 1
for i in range(0,len(datas)):
if(datas[i][1]['Knn'] < min):
min = datas[i][1]['Knn']
resMin = datas[i]
modelMin = 'Knn'
elif datas[i][1]['Tree'] < min:
min = datas[i][1]['Tree']
resMin = datas[i]
modelMin = 'Tree'
if(datas[i][1]['Knn'] > max):
max = datas[i][1]['Knn']
res = datas[i]
model = 'Knn'
elif datas[i][1]['Tree'] > max:
max = datas[i][1]['Tree']
res = datas[i] res = datas[i]
print("BEST CHOICE IS :", res) model = 'Tree'
print("Knn mean accuracy_score : ", mean(knnMean)) print("Best model : ",model," columns : ",res[0]," Accuracy : ", res[1][model])
print("Knn variance accuracy_score : ", variance(knnMean)) print("Worst model : ",modelMin," columns : ",resMin[0]," Accuracy : ", resMin[1][model])
print("Knn ecart-type accuracy_score : ", stdev(knnMean))
print("Tree mean accuracy_score : ", mean(treeMean)) df = read_dataset('data.csv')
print("Tree variance accuracy_score : ", variance(treeMean))
print("Tree ecart-type accuracy_score : ", stdev(treeMean)) # Affiche la répartitions des objets stélaires dans la base de données
#showData(df)
# Affiche le meilleur models avec les meilleurs colonnes entre KNeighborsClassifier et DecisionTreeClassifier
#datas = allModels(df)
#bestModel(datas)
# Génère un nuage de points affichant l'accuracy du model Knn et TreeClassifier en fonction des colonnes utilisées.
datas = allModels(df)
showStat(datas)
bestModel(datas)
main() # Affiche un menu permettant de choisir le model à entrainer, ainsi que des stats suplémentaires
# main()

Loading…
Cancel
Save