调参是对模型的参数进行调整,找到使模型性能最优的参数。调参的目的是达到整体模型的偏差和方差的和谐,参数可分为两类,过程影响类参数和子模型影响类参数。
- 穷举网格搜索方法
网格搜索是一种穷举搜索的调参手段,在所有候选的参数选择中,通过循环遍历,尝试每一种可能,表现最好的参数就是最终的结果。
使用数据训练随机森林模型,采用网格搜索方法调参,代码如下:
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
train_data, test_data, train_target, test_target = train_test_split(train, target, test_size=0.2, random_state=0)
rfg = RandomForestRegressor()
param_grid = {'n_estimators':[50,100,200],
'max_depth':[1,2,3]}
clf = GridSearchCV(rfg, param_grid, cv=5)
clf.fit(train_data, train_target)
test_pred = clf.predict(test_data)
test_score = mean_squared_error(test_pred, test_target)
test_score
- 随机参数优化
使用数据训练随机参数模型,采用随机森林参数优化方法调参
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
train_data, test_data, train_target, test_target = train_test_split(train, target, test_size=0.2, random_state=0)
rfg = RandomForestRegressor()
param_grid = {'n_estimators':[50,100,200],
'max_depth':[1,2,3]}
clf = RandomizedSearchCV(rfg, param_grid, cv=5)
clf.fit(train_data, train_target)
test_pred = clf.predict(test_data)
test_score = mean_squared_error(test_pred, test_target)
test_score