结合GridSearchCV进行集成算法参数调优,实例分析:sklearn.ensemble中的应用
发布时间:2024-01-06 01:10:16
集成算法是通过将多个基本模型组合在一起,来获得更好的预测性能的一种机器学习方法。集成算法可以分为两种类型:bagging和boosting。Bagging方法通过随机选取一部分训练样本,然后用这些样本分别训练多个基本模型,最后再将这些模型的预测结果进行集成。Boosting方法则是通过逐步迭代,每次训练一个新的基本模型,该模型的训练依赖于前面模型的结果,从而逐步提高模型的性能。
在scikit-learn库中,ensemble模块提供了多种集成算法的实现。下面以RandomForest和GradientBoosting为例,演示如何使用GridSearchCV进行参数调优。
首先,我们需要导入需要的库和数据集。
from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.metrics import accuracy_score # 加载鸢尾花数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
接下来,我们定义RandomForest算法,并设置需要调优的参数。
# 定义RandomForest算法
rf = RandomForestClassifier()
# 需要调优的参数
param_grid = {
'n_estimators': [50, 100, 200],
'max_depth': [None, 5, 10],
'min_samples_split': [2, 4, 6]
}
然后,我们使用GridSearchCV进行参数调优。
# 使用GridSearchCV进行参数调优
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 输出 参数和 得分
print("Best parameters: ", grid_search.best_params_)
print("Best score: ", grid_search.best_score_)
最后,我们使用得到的 参数在测试集上进行预测,并计算准确率。
# 使用 参数进行预测
y_pred = grid_search.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_pred, y_test)
print("Accuracy: ", accuracy)
同样的方式,我们可以对GradientBoosting算法进行参数调优。
# 定义GradientBoosting算法
gb = GradientBoostingClassifier()
# 需要调优的参数
param_grid = {
'n_estimators': [50, 100, 200],
'learning_rate': [0.1, 0.01, 0.001],
'max_depth': [3, 5, 7]
}
# 使用GridSearchCV进行参数调优
grid_search = GridSearchCV(estimator=gb, param_grid=param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 输出 参数和 得分
print("Best parameters: ", grid_search.best_params_)
print("Best score: ", grid_search.best_score_)
# 使用 参数进行预测
y_pred = grid_search.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_pred, y_test)
print("Accuracy: ", accuracy)
通过以上代码,我们可以使用GridSearchCV在RandomForest和GradientBoosting算法中进行参数调优,并得到 参数和 得分。最后,在测试集上计算模型的准确率。这样可以确保我们选择到最优的参数组合,从而得到更好的模型性能。
