机器学习 - 网格搜索



网格搜索是一种机器学习中的超参数调整技术,它有助于为给定模型找到最佳的超参数组合。它的工作原理是定义一个超参数网格,然后使用所有可能的超参数组合训练模型,以找到性能最佳的组合。

换句话说,网格搜索是一种穷举搜索方法,其中定义了一组超参数,并在这些超参数的所有可能组合上执行搜索,以找到提供最佳性能的最佳值。

Python中的实现

在Python中,可以使用sklearn模块中的GridSearchCV类实现网格搜索。GridSearchCV类以模型、要调整的超参数和评分函数作为输入。然后,它对所有可能的超参数组合执行穷举搜索,并返回提供最佳分数的最佳超参数集。

以下是使用GridSearchCV类在Python中实现网格搜索的示例:

示例

from sklearn.model_selection import GridSearchCV from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_classification # Generate a sample dataset X, y = make_classification(n_samples=1000, n_features=10, n_classes=2) # Define the model and the hyperparameters to tune model = RandomForestClassifier() hyperparameters = {'n_estimators': [10, 50, 100], 'max_depth': [None, 5, 10]} # Define the Grid Search object and fit the data grid_search = GridSearchCV(model, hyperparameters, scoring='accuracy', cv=5) grid_search.fit(X, y) # Print the best hyperparameters and the corresponding score print("Best hyperparameters: ", grid_search.best_params_) print("Best score: ", grid_search.best_score_)

在此示例中,我们定义了一个RandomForestClassifier模型和一组要调整的超参数,即树的数量(n_estimators)和每棵树的最大深度(max_depth)。然后,我们创建一个GridSearchCV对象并使用fit()方法拟合数据。最后,我们打印最佳超参数集和相应的分数。

输出

执行此代码时,将产生以下输出:

Best hyperparameters: {'max_depth': None, 'n_estimators': 10}
Best score: 0.953
广告