1. 网格搜索调优
网格搜索是一种通过遍历所有可能的超参数组合来选择最佳组合的方法。在Python中,我们可以使用GridSearchCV类来实现网格搜索调优:
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 准备示例数据集
iris = load_iris()
X, y = iris.data, iris.target
# 创建随机森林模型
rf_model = RandomForestClassifier()
# 定义超参数搜索空间
param_grid = {
'n_estimators': [10, 50, 100],
'max_depth': [None, 5, 10, 20]
}
# 创建网格搜索调优器
grid_search = GridSearchCV(estimator=rf_model, param_grid=param_grid, cv=5)
# 进行网格搜索调优
grid_search.fit(X, y)
# 输出最佳超参数组合
print("最佳超参数组合:", grid_search.best_params_)
2. 随机搜索调优
随机搜索调优是一种通过随机抽样超参数空间中的点来选择最佳组合的方法。相比网格搜索,随机搜索更加高效,特别是在超参数空间较大的情况下。在Python中,我们可以使用RandomizedSearchCV类来实现随机搜索调优:
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 准备示例数据集
iris = load_iris()
X, y = iris.data, iris.target
# 创建随机森林模型
rf_model = RandomForestClassifier()
# 定义超参数搜索空间
param_dist = {
'n_estimators': randint(10, 100),
'max_depth': [None, 5, 10, 20]
}
# 创建随机搜索调优器
random_search = RandomizedSearchCV(estimator=rf_model, param_distributions=param_dist, n_iter=10, cv=5)
# 进行随机搜索调优
random_search.fit(X, y)
# 输出最佳超参数组合
print("最佳超参数组合:", random_search.best_params_)