Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Una analisi della correlazione non sarebbe male
- #Si potrebbe creare un plot che permette di selezionare le variabili
- #e in funzione di questa ti plotta la correlazione
- #oltre che a una heat map
- #Adesso possiamo passare alla parte di Machine Learning
- #In primis andiamo a definire due funzioni
- #La funzione get_prediction
- #Che effettuerà il training sulla base del
- #classificatore scelto
- #E la funzione print_scores
- #Che permetterà di valutare
- #sulla base di diversi test_score
- #Il classificatore migliore
- def get_predictions(clf, count_train, y_train, count_test):
- # creiamo il classificatore
- clf = clf
- # lo alleniamo con i dati di training
- clf.fit(count_train,y_train)
- # effettuiamo le predizioni con i dati di test
- y_pred = clf.predict(count_test)
- # Calcoliamo la probabilità delle predizioni: y_pred_prob
- y_pred_prob = clf.predict_proba(count_test)
- return y_pred, y_pred_prob
- def print_scores(y_test,y_pred,y_pred_prob):
- conf_matrix=confusion_matrix(y_test,y_pred)
- recall= recall_score(y_test,y_pred)
- precision= precision_score(y_test,y_pred)
- f1=f1_score(y_test,y_pred)
- accuracy= accuracy_score(y_test,y_pred)
- roc= roc_auc_score(y_test, y_pred_prob[:,1])
- print('test-set confusion matrix:\n',conf_matrix )
- print("recall score: ",recall )
- print("precision score: ", precision)
- print("f1 score: ",f1 )
- print("accuracy score: ", accuracy)
- print("ROC AUC: {}".format(roc_auc_score(y_test, y_pred_prob[:,1])))
- kpi=pd.DataFrame([[recall,precision,f1,accuracy,roc]], columns=['Recall','Precision','F1_Score','Accuracy','ROC-AUC'])
- return kpi
- #Definiamo la lista dei classificatori che vogliamo valutare
- list_classifier=[MultinomialNB(),LogisticRegression(),RandomForestClassifier(),RandomForestClassifier(criterion='entropy')]
- names=['MultinomialNaiveBayes','Logistic Regression', 'Random Forest Classifier', 'Random Forest Classifier crit=Entropy']
- #Definiamo la colonna degli output
- y_name='Occupancy'
- #Creiamo un df di allenamento rimuovendo la variabile temporale
- df_train=df_train.drop(['date'], axis=1).copy()
- #Creiamo un df di test rimuovendo la variabil temporale
- df_test=df_test.drop(['date'], axis=1).copy()
- #Definiamo il set di dati di input per l'allenamento
- X_train=df_train[df_train.columns.difference([y_name])]
- #Definiamo il set di dati di input per il test
- X_test=df_test[df_test.columns.difference([y_name])]
- #Definiamo il set di dati di output per l'allenamento
- y_train=df_train[y_name]
- #Definiamo il set di dati di output per il testing
- y_test=df_test[y_name]
- print(X_train.describe())
- print("len_y train",len(y_train))
- print('X Test describe:')
- print(X_test.describe())
- results_df=pd.DataFrame(columns=['Classifier','Recall','Precision','F1_Score','Accuracy','ROC-AUC'])
- performance=pd.DataFrame()
- for name, clf in zip(names,list_classifier):
- print('Classifier used',name)
- print()
- y_pred, y_pred_prob = get_predictions(clf, X_train, y_train, X_test)
- classifier=name
- loop_performance=pd.DataFrame()
- loop_performance=print_scores(y_test,y_pred,y_pred_prob)
- loop_performance['Classifier']=name
- performance=performance.append(loop_performance)
- print('__________________')
- print(performance)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement