欢迎访问宙启技术站
智能推送

结合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算法中进行参数调优,并得到 参数和 得分。最后,在测试集上计算模型的准确率。这样可以确保我们选择到最优的参数组合,从而得到更好的模型性能。