超参数调整——网格搜索
1. 超参数(hyperparameter)在机器学习中,超参数是在开始学习过程之前设置值的参数。定义关于模型的更高层次的概念,如复杂性或学习能力。不能直接从标准模型训练过程中的数据中学习,需要预先定义。可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定。一些示例:树的数量或树的深度矩阵分解中潜在因素的数量学习率深层神经网络隐藏层数k-means聚类中的簇数2. 网格搜索网格搜索法本质上
·
1. 超参数(hyperparameter)
在机器学习中,超参数是在开始学习过程之前设置值的参数。
- 定义关于模型的更高层次的概念,如复杂性或学习能力。
- 不能直接从标准模型训练过程中的数据中学习,需要预先定义。
- 可以通过设置不同的值,训练不同的模型和选择更好的测试值来决定。
一些示例:
- 树的数量或树的深度
- 矩阵分解中潜在因素的数量
- 学习率
- 深层神经网络隐藏层数
- k-means聚类中的簇数
2. 网格搜索
网格搜索法本质上是一种穷举法。
sklearn中提供的网格搜索方法:GridSearchCV, 它能够对estimator中我们指定的参数进行详尽搜索。
2.1 sklearn.model_selection.GridSearchCV
class sklearn.model_selection.GridSearchCV(estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch=‘2*n_jobs’, error_score=nan, return_train_score=False)
主要参数:
- estimator:估计器对象。
- param_grid:以参数名称 ( str) 作为键的字典和要尝试作为值的参数设置列表,或此类字典的列表,在这种情况下,将探索列表中每个字典跨越的网格。
- cv:交叉验证生成器。默认为5折交叉。
3.代码实例
利用决策树对红酒数据集进行分类的问题。
下面对sklearn决策树中的“criterion”, “max_depth”, “min_samples_leaf”三个属性的参数进行最优搜索:
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import GridSearchCV
wine = load_wine()
clf = tree.DecisionTreeClassifier()
param_grid = {"criterion": ["entropy", "gini"],
"max_depth": [3, 4, 5, 6],
"min_samples_leaf": [5, 6, 7, 8],
}
grid = GridSearchCV(clf, param_grid)
grid.fit(wine.data, wine.target)
print(grid.best_params_, # 相关参数
grid.best_score_, # 评分
grid.best_estimator_, # 估计器
grid.best_index_) # 索引
输出
{'criterion': 'entropy', 'max_depth': 4, 'min_samples_leaf': 5} 0.9165079365079365 DecisionTreeClassifier(criterion='entropy', max_depth=4, min_samples_leaf=5) 4
百度百科
更多推荐
所有评论(0)