任务2 模型评估
#写在文首,看了好久的matiplotlib才画出了一个巨脑残的图。。。。以后要好好学学画图这块
话不多说上代码
#导包
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn import svm
from sklearn import metrics
from sklearn.metrics import roc_curve
#数据预处理
data = pd.read_csv('data_all.csv')
x = data.drop(['status'],axis=1)
y = data["status"]
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=2018)
#写入模型
lr = LogisticRegression()
svc = svm.SVC(probability=True)
clf = DecisionTreeClassifier()
rfc = RandomForestClassifier()
gbc = GradientBoostingClassifier()
xgb = XGBClassifier(probability=True)
lgb = LGBMClassifier(probability=True)
#跑模型
lr.fit(x_train,y_train)
svc.fit(x_train,y_train)
clf.fit(x_train,y_train)
rfc.fit(x_train,y_train)
gbc.fit(x_train,y_train)
xgb.fit(x_train,y_train)
lgb.fit(x_train,y_train)
#预测
y_pre_lr=lr.predict(x_test)
y_pre_svc=svc.predict(x_test)
y_pre_rfc=lr.predict(x_test)
y_pre_clf=clf.predict(x_test)
y_pre_gbc=gbc.predict(x_test)
y_pre_xgb=xgb.predict(x_test)
y_pre_lgb=lgb.predict(x_test)
#计算accuracy
lr_accuracy=metrics.accuracy_score(y_test,y_pre_lr)
print('lr_accuracy:',lr_accuracy)
svc_accuracy=metrics.accuracy_score(y_test,y_pre_svc)
print('svc_accuracy:',svc_accuracy)
rfc_accuracy=metrics.accuracy_score(y_test,y_pre_rfc)
print('rfc_accuracy:',rfc_accuracy)
clf_accuracy=metrics.accuracy_score(y_test,y_pre_clf)
print('clf_accuracy:',clf_accuracy)
gbc_accuracy=metrics.accuracy_score(y_test,y_pre_gbc)
print('gbc_accuracy:',gbc_accuracy)
xgb_accuracy=metrics.accuracy_score(y_test,y_pre_xgb)
print('xgb_accuracy:',xgb_accuracy)
lgb_accuracy=metrics.accuracy_score(y_test,y_pre_lgb)
print('lgb_accuracy:',lgb_accuracy)
#计算precision
lr_precision_score=metrics.precision_score(y_test,y_pre_lr)
print('lr_precision_score:',lr_precision_score)
svc_precision_score=metrics.precision_score(y_test,y_pre_svc)
print('svc_precision_score:',svc_precision_score)
rfc_precision_score=metrics.precision_score(y_test,y_pre_rfc)
print('rfc_precision_score:',rfc_precision_score)
clf_precision_score=metrics.precision_score(y_test,y_pre_clf)
print('clf_precision_score:',clf_precision_score)
gbc_precision_score=metrics.precision_score(y_test,y_pre_gbc)
print('gbc_precision_score:',gbc_precision_score)
xgb_precision_score=metrics.precision_score(y_test,y_pre_xgb)
print('xgb_precision_score:',xgb_precision_score)
lgb_precision_score=metrics.precision_score(y_test,y_pre_lgb)
print('lgb_precision_score:',lgb_precision_score)
#计算recall
lr_recall_score=metrics.recall_score(y_test,y_pre_lr)
print('lr_recall_score:',lr_recall_score)
svc_recall_score=metrics.recall_score(y_test,y_pre_svc)
print('svc_recall_score:',svc_recall_score)
rfc_recall_score=metrics.recall_score(y_test,y_pre_rfc)
print('rfc_recall_score:',rfc_recall_score)
clf_recall_score=metrics.precision_score(y_test,y_pre_clf)
print('clf_recall_score:',clf_recall_score)
gbc_recall_score=metrics.recall_score(y_test,y_pre_gbc)
print('gbc_recall_score:',gbc_recall_score)
xgb_recall_score=metrics.recall_score(y_test,y_pre_xgb)
print('xgb_recall_score:',xgb_recall_score)
lgb_recall_score=metrics.recall_score(y_test,y_pre_lgb)
print('lgb_recall_score:',lgb_recall_score)
#计算f1
lr_f1_score=metrics.f1_score(y_test,y_pre_lr)
print('lr_f1_score:',lr_f1_score)
svc_f1_score=metrics.f1_score(y_test,y_pre_svc)
print('svc_f1_score:',svc_f1_score)
rfc_f1_score=metrics.f1_score(y_test,y_pre_rfc)
print('rfc_f1_score:',rfc_f1_score)
clf_f1_score=metrics.f1_score(y_test,y_pre_clf)
print('clf_f1_score:',clf_f1_score)
gbc_f1_score=metrics.f1_score(y_test,y_pre_gbc)
print('gbc_f1_score:',gbc_f1_score)
xgb_f1_score=metrics.f1_score(y_test,y_pre_xgb)
print('xgb_f1_score:',xgb_f1_score)
lgb_f1_score=metrics.f1_score(y_test,y_pre_lgb)
print('lgb_f1_score:',lgb_f1_score)
#计算auc
lr_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_lr)
print('lr_roc_auc_score:',lr_roc_auc_score)
svc_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_svc)
print('svc_roc_auc_score:',svc_roc_auc_score)
rfc_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_rfc)
print('rfc_roc_auc_score:',rfc_roc_auc_score)
clf_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_clf)
print('clf_roc_auc_score:',clf_roc_auc_score)
gbc_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_gbc)
print('gbc_roc_auc_score:',gbc_roc_auc_score)
xgb_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_xgb)
print('xgb_roc_auc_score:',xgb_roc_auc_score)
lgb_roc_auc_score=metrics.roc_auc_score(y_test,y_pre_lgb)
print('lgb_roc_auc_score:',lgb_roc_auc_score)
#作图部分
y_score_lr = lr.predict_proba(x_test)[:,1]
y_score_svc = svc.predict_proba(x_test)[:,1]
y_score_rfc = rfc.predict_proba(x_test)[:,1]
y_score_clf = clf.predict_proba(x_test)[:,1]
y_score_gbc = gbc.predict_proba(x_test)[:,1]
y_score_xgb = xgb.predict_proba(x_test)[:,1]
y_score_lgb = lgb.predict_proba(x_test)[:,1]
fpr_lr,tpr_lr,thresholds_lr = roc_curve(y_test,lr.predict_proba(x_test)[:,1],pos_label=1)
fpr_svc,tpr_svc,thresholds_svc = roc_curve(y_test,svc.predict_proba(x_test)[:,1],pos_label=1)
fpr_rfc,tpr_rfc,thresholds_rfc = roc_curve(y_test,rfc.predict_proba(x_test)[:,1],pos_label=1)
fpr_clf,tpr_clf,thresholds_clf = roc_curve(y_test,clf.predict_proba(x_test)[:,1],pos_label=1)
fpr_gbc,tpr_gbc,thresholds_gbc = roc_curve(y_test,gbc.predict_proba(x_test)[:,1],pos_label=1)
fpr_xgb,tpr_xgb,thresholds_xgb = roc_curve(y_test,xgb.predict_proba(x_test)[:,1],pos_label=1)
fpr_lgb,tpr_lgb,thresholds_lgb = roc_curve(y_test,lgb.predict_proba(x_test)[:,1],pos_label=1)
plt.figure(figsize=[6,6])
plt.plot(fpr_lr,tpr_lr, color='black')
plt.plot(fpr_svc,tpr_svc, color='red')
plt.plot(fpr_rfc,tpr_rfc, color='green')
plt.plot(fpr_clf,tpr_clf, color='blue')
plt.plot(fpr_gbc,tpr_gbc, color='yellow')
plt.plot(fpr_xgb,tpr_xgb, color='brown')
plt.plot(fpr_lgb,tpr_lgb, color='purple')
plt.title('ROC curve')
###最后附上丑图一张