交叉验证和网格搜索结合使用代码实现
时间: 2023-05-31 21:03:43 浏览: 62
以下是一个简单的代码示例,演示如何使用交叉验证和网格搜索来优化模型的超参数:
```
from sklearn.model_selection import GridSearchCV, cross_val_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
# 定义要优化的超参数
param_grid = {
'n_estimators': [10, 50, 100],
'max_depth': [None, 5, 10],
'min_samples_split': [2, 5, 10]
}
# 创建随机森林分类器
rf = RandomForestClassifier()
# 使用网格搜索来找到最佳超参数
grid_search = GridSearchCV(rf, param_grid=param_grid, cv=5)
grid_search.fit(X, y)
# 输出最佳超参数
print("Best parameters: ", grid_search.best_params_)
# 使用交叉验证来评估模型性能
cv_scores = cross_val_score(grid_search.best_estimator_, X, y, cv=5)
print("Cross-validation scores: ", cv_scores)
print("Mean CV score: ", cv_scores.mean())
```
在上面的代码中,我们使用了`load_iris()`函数来加载鸢尾花数据集。我们定义了一个字典`param_grid`,其中包含我们要优化的超参数。然后我们创建了一个随机森林分类器,并使用`GridSearchCV`函数来搜索最佳超参数。`cv`参数指定了我们要使用的交叉验证折数。我们还使用`cross_val_score`函数来计算交叉验证分数,以评估模型的性能。最后,我们输出了最佳超参数和交叉验证分数。