第1关:随机森林模型
任务描述
本关任务:根据要求,建立随机森林模型。
相关知识
为了完成本关任务,你需要掌握:
1.理解随机森林模型的原理,确定随机森林的树的个数;
2.使用 sklearn 包搭建随机森林模型。
#coding:utf8
import warnings
warnings.filterwarnings("ignore")
from numpy.core.umath_tests import inner1d
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import auc,roc_auc_score,roc_curve
import pandas as pd
def return_train_test(data):
x=data.drop(['user_id','mark','Y'],axis=1)
y=data['Y']
train_x,test_x,train_y,test_y=train_test_split(x,y,test_size=0.3)
return train_x,test_x,train_y,test_y
def model(train_x,test_x,train_y,test_y):
rf=RandomForestClassifier()
rf.fit(train_x,train_y)
y_test_predit=rf.predict_proba(test_x)[:,1]
fpr,tpr,thresholds=roc_curve(test_y,y_test_predit)
predit_auc=auc(fpr,tpr)
return predit_auc
第2关:随机森林模型调参
任务描述
本关任务:对随机森林模型进行调参,使得模型最优。
相关知识
为了完成本关任务,你需要掌握: 1.随机森林模型原理; 2.网格搜索调参技巧。
#coding:utf8
from numpy.core.umath_tests import inner1d
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np
from sklearn.model_selection import GridSearchCV
def grid_best_param(x,y):
grid_params={'max_depth':[1,3,5,7,10],'min_samples_leaf':[1,3,5,7,10]}
rf=RandomForestClassifier(n_estimators=21,random_state=20)
grid=GridSearchCV(rf,grid_params,cv=10)
grid.fit(x,y)
best_param=grid.best_params_
return best_param
第3关:模型评价
任务描述
本关任务:对调参后的模型结果进行评价。
相关知识
为了完成本关任务,你需要掌握:评价模型的方法。
#coding:utf8
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import auc,roc_auc_score,roc_curve
def evaluation_model(model,x,y):
fig=plt.figure(figsize=(20,6))
y_pred=model.predict_proba(x)[:,1]
fpr,tpr,thresholds=roc_curve(y,y_pred)
auc_c=auc(fpr,tpr)
ax=plt.subplot(1,2,1)
plt.plot(fpr,tpr,label='ROC,AUC=%0.2f'%auc_c)
plt.plot([0,1],[0,1])
plt.title('ROC')
plt.xlabel('FPR')
plt.ylabel('TPR')
plt.legend()
ks=max(tpr-fpr)
plt.subplot(1,2,2)
plt.plot(fpr,label='fpr')
plt.plot(tpr,label='tpr')
plt.plot(tpr-fpr,label='k-s:ks=%0.2f'%ks)
plt.legend()
plt.title('K-S')
plt.ylabel('rate')
plt.savefig('./step3/step3.png')