Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #Una analisi della correlazione non sarebbe male
  2. #Si potrebbe creare un plot che permette di selezionare le variabili
  3. #e in funzione di questa ti plotta la correlazione
  4. #oltre che a una heat map
  5. #Adesso possiamo passare alla parte di Machine Learning
  6. #In primis andiamo a definire due funzioni
  7. #La funzione get_prediction
  8.  
  9. #Che effettuerà il training sulla base del
  10. #classificatore scelto
  11. #E la funzione print_scores
  12. #Che permetterà di valutare
  13. #sulla base di diversi test_score
  14. #Il classificatore migliore
  15.  
  16.  
  17. def get_predictions(clf, count_train, y_train, count_test):
  18. # creiamo il classificatore
  19. clf = clf
  20. # lo alleniamo con i dati di training
  21. clf.fit(count_train,y_train)
  22. # effettuiamo le predizioni con i dati di test
  23. y_pred = clf.predict(count_test)
  24. # Calcoliamo la probabilità delle predizioni: y_pred_prob
  25. y_pred_prob = clf.predict_proba(count_test)
  26.  
  27. return y_pred, y_pred_prob
  28. def print_scores(y_test,y_pred,y_pred_prob):
  29. conf_matrix=confusion_matrix(y_test,y_pred)
  30. recall= recall_score(y_test,y_pred)
  31. precision= precision_score(y_test,y_pred)
  32. f1=f1_score(y_test,y_pred)
  33. accuracy= accuracy_score(y_test,y_pred)
  34. roc= roc_auc_score(y_test, y_pred_prob[:,1])
  35. print('test-set confusion matrix:\n',conf_matrix )
  36. print("recall score: ",recall )
  37. print("precision score: ", precision)
  38. print("f1 score: ",f1 )
  39. print("accuracy score: ", accuracy)
  40. print("ROC AUC: {}".format(roc_auc_score(y_test, y_pred_prob[:,1])))
  41. kpi=pd.DataFrame([[recall,precision,f1,accuracy,roc]], columns=['Recall','Precision','F1_Score','Accuracy','ROC-AUC'])
  42. return kpi
  43.  
  44. #Definiamo la lista dei classificatori che vogliamo valutare
  45. list_classifier=[MultinomialNB(),LogisticRegression(),RandomForestClassifier(),RandomForestClassifier(criterion='entropy')]
  46. names=['MultinomialNaiveBayes','Logistic Regression', 'Random Forest Classifier', 'Random Forest Classifier crit=Entropy']
  47. #Definiamo la colonna degli output
  48. y_name='Occupancy'
  49. #Creiamo un df di allenamento rimuovendo la variabile temporale
  50. df_train=df_train.drop(['date'], axis=1).copy()
  51. #Creiamo un df di test rimuovendo la variabil temporale
  52. df_test=df_test.drop(['date'], axis=1).copy()
  53. #Definiamo il set di dati di input per l'allenamento
  54. X_train=df_train[df_train.columns.difference([y_name])]
  55. #Definiamo il set di dati di input per il test
  56. X_test=df_test[df_test.columns.difference([y_name])]
  57. #Definiamo il set di dati di output per l'allenamento
  58. y_train=df_train[y_name]
  59. #Definiamo il set di dati di output per il testing
  60. y_test=df_test[y_name]
  61. print(X_train.describe())
  62. print("len_y train",len(y_train))
  63. print('X Test describe:')
  64. print(X_test.describe())
  65.  
  66. results_df=pd.DataFrame(columns=['Classifier','Recall','Precision','F1_Score','Accuracy','ROC-AUC'])
  67. performance=pd.DataFrame()
  68. for name, clf in zip(names,list_classifier):
  69. print('Classifier used',name)
  70. print()
  71. y_pred, y_pred_prob = get_predictions(clf, X_train, y_train, X_test)
  72.  
  73. classifier=name
  74. loop_performance=pd.DataFrame()
  75. loop_performance=print_scores(y_test,y_pred,y_pred_prob)
  76. loop_performance['Classifier']=name
  77. performance=performance.append(loop_performance)
  78. print('__________________')
  79.  
  80. print(performance)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement