简单的实验,主要是使用sklearn库中的RFR模型来进行回归分析并绘制相应的ROC曲线,主要是熟悉流程,下面是具体的实现:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能:使用RFR模型
'''
import csv
from sklearn.metrics import roc_curve, auc
from sklearn.ensemble import RandomForestRegressor
import matplotlib.pyplot as plt
def RFR_model_train(X_list, y_list):
'''
随机森林回归模型
'''
model=RandomForestRegressor(max_depth=10, random_state=0)
model.fit(X_list, y_list)
y_predict=model.predict(X_list)
draw_ROC_curve(y_list,y_predict,savepath='RFR.png')
feature_weight=model.feature_importances_
print 'feature_weight'
print feature_weight
return feature_weight
def draw_ROC_curve(y_test,y_predict,savepath):
'''
画ROC曲线
'''
false_positive_rate,true_positive_rate,thresholds=roc_curve(y_test, y_predict)
roc_auc=auc(false_positive_rate, true_positive_rate)
plt.title('ROC')
plt.plot(false_positive_rate, true_positive_rate,'b',label='AUC = %0.2f'% roc_auc)
plt.legend(loc='lower right')
plt.plot([0,1],[0,1],'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')
plt.savefig(savepath)
plt.close(0)
if __name__ == '__main__':
RFR_model_train(x_list, y_list)
结果如下:
feature_weight
[ 0.12049628 0. 0. 0. 0.05872002 0.
0.08056693 0. 0.43856094 0.27010771 0. 0.
0.03154812]
ROC曲线如下: