Skip to content

Commit

Permalink
Evaluator save and returns to execute predict
Browse files Browse the repository at this point in the history
  • Loading branch information
yanvenera committed Oct 18, 2019
1 parent c252d0f commit e757649
Show file tree
Hide file tree
Showing 8 changed files with 124 additions and 53 deletions.
2 changes: 1 addition & 1 deletion MachineLearning.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def _roc_values(testing, evaluation):
print("\nRoc Score")
print(auc_roc)

return auc_roc
return round(auc_roc,2)


def _classification_report(test, evaluation):
Expand Down
1 change: 1 addition & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@

DATA_PATH = BASE_PATH + 'data/'
MODEL_PATH = BASE_PATH + 'model/'
EVALUATE_PATH = BASE_PATH + 'evaluate/'
1 change: 1 addition & 0 deletions evaluate/results.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"results": [{"model": "cardio_dt", "inductor": "Decision Tree", "acc": 0.63, "sen": 0.63, "spe": 0.62, "roc": 0.63}, {"model": "cardio_lr", "inductor": "Logistic Regression", "acc": 0.71, "sen": 0.74, "spe": 0.67, "roc": 0.71}, {"model": "cardio_rf", "inductor": "Random Forest", "acc": 0.72, "sen": 0.73, "spe": 0.7, "roc": 0.72}, {"model": "cardio_svm_poly", "inductor": "SVM Kernel Poly", "acc": 0.72, "sen": 0.73, "spe": 0.7, "roc": 0.72}]}
Binary file modified model/cardio_dt.sav
Binary file not shown.
Binary file modified model/cardio_lr.sav
Binary file not shown.
17 changes: 17 additions & 0 deletions trabalho_final/evaluator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import json
import config

def evaluate_best_model():
filename = config.EVALUATE_PATH + 'results.json'

best_model = 0
with open(filename) as json_file:
data = json.load(json_file)
for p in data['results']:
sum = p['acc']+p['sen']+p['spe']+p['roc']
if sum > best_model:
best_model = sum
sel_model = p['model']
name_model = p['inductor']

return sel_model, name_model
127 changes: 98 additions & 29 deletions trabalho_final/indutores.py
Original file line number Diff line number Diff line change
@@ -1,60 +1,129 @@
from trabalho_final.preprocessing import get_data
from MachineLearning import MachineLearning, accuracy, sensitivity, specificity
import json
import config

machine_learning = MachineLearning()
attributes, classes = get_data()

json_data = {}
json_data['results'] = []

# Decision Tree
print("\nGerando modelo de Decision Tree")
response, auc_roc, matrix, report = machine_learning.generate_decision_tree(attributes, classes, 'cardio_dt')
print(response)
print("\nAcurácia")
print(accuracy(matrix))
acc = accuracy(matrix)
print(acc)
print("\nSensibilidade")
print(sensitivity(matrix))
sen = sensitivity(matrix)
print(sen)
print("\nEspecificidade")
print(specificity(matrix))
spe = specificity(matrix)
print(spe)

json_data['results'].append({
'model': 'cardio_dt',
'inductor': 'Decision Tree',
'acc': acc,
'sen': sen,
'spe': spe,
'roc': auc_roc,
})

# Logistic Regression
print("\nGerando modelo de Logistic Regression")
response, auc_roc, matrix, report = machine_learning.generate_logistic_regression(attributes, classes, 'cardio_lr')
print(response)
print("\nAcurácia")
print(accuracy(matrix))
acc = accuracy(matrix)
print(acc)
print("\nSensibilidade")
print(sensitivity(matrix))
sen = sensitivity(matrix)
print(sen)
print("\nEspecificidade")
print(specificity(matrix))
spe = specificity(matrix)
print(spe)

json_data['results'].append({
'model': 'cardio_lr',
'inductor': 'Logistic Regression',
'acc': acc,
'sen': sen,
'spe': spe,
'roc': auc_roc,
})

# Random Forest
print("\nGerando modelo de Random Forest")
response, auc_roc, matrix, report = machine_learning.generate_random_forest(attributes, classes, 'cardio_rf')
print(response)
print("\nAcurácia")
print(accuracy(matrix))
acc = accuracy(matrix)
print(acc)
print("\nSensibilidade")
print(sensitivity(matrix))
sen = sensitivity(matrix)
print(sen)
print("\nEspecificidade")
print(specificity(matrix))
spe = specificity(matrix)
print(spe)

# SVM kernel linear
print("\nGerando modelo de SVM Kernel Linear")
response, auc_roc, matrix, report = machine_learning.generate_svm(attributes, classes, 'cardio_svm_linear')
print(response)
print("\nAcurácia")
print(accuracy(matrix))
print("\nSensibilidade")
print(sensitivity(matrix))
print("\nEspecificidade")
print(specificity(matrix))
json_data['results'].append({
'model': 'cardio_rf',
'inductor': 'Random Forest',
'acc': acc,
'sen': sen,
'spe': spe,
'roc': auc_roc,
})

# SVM kernel poly
print("\nGerando modelo de SVM Kernel Poly")
response, auc_roc, matrix, report = machine_learning.generate_svm(attributes, classes, 'cardio_svm_poly', kernel='poly')
print(response)
print("\nAcurácia")
print(accuracy(matrix))
print("\nSensibilidade")
print(sensitivity(matrix))
print("\nEspecificidade")
print(specificity(matrix))
# # SVM kernel linear
# print("\nGerando modelo de SVM Kernel Linear")
# response, auc_roc, matrix, report = machine_learning.generate_svm(attributes, classes, 'cardio_svm_linear')
# print(response)
# print("\nAcurácia")
# acc = accuracy(matrix)
# print(acc)
# print("\nSensibilidade")
# sen = sensitivity(matrix)
# print(sen)
# print("\nEspecificidade")
# spe = specificity(matrix)
# print(spe)
#
# json_data['results'].append({
# 'model': 'cardio_svm_linear',
# 'inductor': 'SVM Kernel Linear',
# 'acc': acc,
# 'sen': sen,
# 'spe': spe,
# 'roc': auc_roc,
# })
#
# # SVM kernel poly
# print("\nGerando modelo de SVM Kernel Poly")
# response, auc_roc, matrix, report = machine_learning.generate_svm(attributes, classes, 'cardio_svm_poly', kernel='poly')
# print(response)
# print("\nAcurácia")
# acc = accuracy(matrix)
# print(acc)
# print("\nSensibilidade")
# sen = sensitivity(matrix)
# print(sen)
# print("\nEspecificidade")
# spe = specificity(matrix)
# print(spe)

json_data['results'].append({
'model': 'cardio_svm_poly',
'inductor': 'SVM Kernel Poly',
'acc': acc,
'sen': sen,
'spe': spe,
'roc': auc_roc,
})

filename = config.EVALUATE_PATH + 'results.json'
with open(filename, 'w') as outfile:
json.dump(json_data, outfile)
29 changes: 6 additions & 23 deletions trabalho_final/inferencia.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from MachineLearning import execute_model
from trabalho_final.evaluator import evaluate_best_model

model_exec, name_model = evaluate_best_model()

params = [
[22584, 2, 178, 95.0, 130, 90, 3, 3, 0, 0, 1], # Y
Expand All @@ -9,27 +12,7 @@
[8622, 2, 188, 90.0, 130, 90, 1, 1, 0, 0, 1], # ?
]

# Decision Tree
print("\nTestando modelo Decision Tree")
response = execute_model('cardio_dt', params)
print(response)

# Logistic Regression
print("\nTestando modelo Logistic Regression")
response = execute_model('cardio_lr', params)
print(response)

# Random Forest
print("\nTestando modelo Random Forest")
response = execute_model('cardio_rf', params)
print(response)

# SVM kernel linear
print("\nTestando modelo SVM Kernel Linear")
response = execute_model('cardio_svm_linear', params)
print(response)

# SVM kernel poly
print("\nTestando modelo SVM Kernel Poly")
response = execute_model('cardio_svm_poly', params)
# Execute predict with best model evaluate
print("\nTestando modelo "+name_model)
response = execute_model(model_exec, params)
print(response)

0 comments on commit e757649

Please sign in to comment.