随机森林在乳腺癌上调参
1.导包
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
2.导入数据集、探索数据
data = load_breast_cancer()
data.data
data.target
data.data.shape
3.进行一次简单的建模,看看模型本身在数据集上的效果
rfc = RandomForestClassifier(n_estimators=100,random_state=90)
score_pre = cross_val_score(rfc,data.data,data.target,cv=10).mean()
score_pre
4. 随机森林调整的第一步:无论如何先来调n_estimators
画n_estimators的学习曲线才能看到趋势
十个数取一个阶段 n_estimator至少从1开始
scorel = []
for i in range(1,201,10):
rfc = RandomForestClassifier(n_estimators=i
,n_jobs=-1
,random_state=90)
score = cross_val_score(rfc,data.data,data.target,cv=10).mean()
scorel.append(score)
print(max(scorel),(scorel.index(max(scorel))*10))
#list.index([object])返回这个object在list中的索引
plt.figure(figsize=[20,5])
plt.plot(range(1,201,10),scorel)
5.在确定好的范围里进一步细化学习曲线
scorel = []
for i in range(65,75):
rfc = RandomForestClassifier(n_estimators=i,
n_jobs=-1,
random_state=90)
score = cross_val_score(rfc,data.data,data.target,cv=10).mean()
scorel.append(score)
print(max(scorel),([*range(65,75)][scorel.index(max(scorel))]))
plt.figure(figsize=[20,5])
plt.plot(range(65,75),scorel)
6.为网格搜索做准备,进一步细化学习曲线
很难确定什么范围合适先用学习曲线跑一个区间。
像类别很少或者说是最好情况很经常出现在一个值上的我们用才好用搜索