机器学习中的参数调整

总第102篇

前言

我们知道每个模型都有很多参数是可以调节的,比如SVM中使用什么样的核函数以及C值的大小,决策树中树的深度等。在特征选好、基础模型选好以后我们可以通过调整模型的这些参数来提高模型准确率。每个模型有很多参数,而每个参数又有很多不同的取值,我们该怎么调,最简单的一个方法就是一个一个试。sklearn中提供了这样的库代替了我们手动去试的过程,就是GridSearchCV,他会自己组合不同参数的取值,然后输出效果最好的一组参数。

GridSearchCV参数解释

GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, \
             n_jobs=1, iid=True, refit=True, cv=None, \
             verbose=0, pre_dispatch=‘2*n_jobs’, error_score=’raise’, \
             return_train_score=’warn’)

estimator:所使用的基础模型,比如svc
param_grid:是所需要的调整的参数,以字典或列表的形式表示
scoring:准确率评判标准
n_jobs:并行运算数量(核的数量 ),默认为1,如果设置为-1,则表示将电脑中的cpu全部用上
iid:假设数据在每个cv(折叠)中是相同分布的,损失最小化是每个样本的总损失,而不是折叠中的平均损失。
refit:默认为True,程序将会以交叉验证训练集得到的最佳参数,重新对所有可用的训练集与开发集进行,作为最终用于性能评估的最佳模型参数。
cv:交叉验证折叠数,默认是3,当estimator是分类器时默认使用StratifiedKFold交叉方法,其他问题则默认使用KFold
verbose:日志冗长度,int类型,0:不输出训练过程,1:偶尔输出,>1:对每个子模型都输出
pre_dispatch:控制job数量,避免job过多出现内存错误

GridSearchCV对象

cv_results_:用来输出cv结果的,可以是字典形式也可以是numpy形式,还可以转换成DataFrame格式
best_estimator_:通过搜索参数得到的最好的估计器,当参数refit=False时该对象不可用
best_score_:float类型,输出最好的成绩
best_params_:通过网格搜索得到的score最好对应的参数

GridSearchCV方法

decision_function(X):返回决策函数值(比如svm中的决策距离)
predict_proba(X):返回每个类别的概率值(有几类就返回几列值)
predict(X):返回预测结果值(0/1)
score(X, y=None):返回函数
get_params(deep=True):返回估计器的参数
fit(X,y=None,groups=None,fit_params):在数据集上运行所有的参数组合
transform(X):在X上使用训练好的参数

GridSearchCV实例

from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC()
clf = GridSearchCV(svc, parameters)
clf.fit(iris.data, iris.target)
------------------------------------------------------
GridSearchCV(cv=None, error_score='raise',
       estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False),
       fit_params={}, iid=True, n_jobs=1,
       param_grid={'kernel': ('linear', 'rbf'), 'C': [1, 10]},
       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,
       scoring=None, verbose=0)

clf.cv_results_

我们可以看到,cv_result一共有四组,这正是两个kernel和两个C的随机组合成四组。

clf.best_estimator_

clf.best_params_

clf.best_params_

注:本方法只适用于数据量较小的模型,不适合数据量过大的模型。

你还可以看:

机器学习模型效果评估

机器学习中非平衡数据处理

机器学习中的特征选择

机器学习中的交叉验证

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Gradient Boosting Regressor是一种强大的机器学习算法,但是需要进行超参数调整以获得最佳性能。以下是一些可能需要调整的超参数: 1. n_estimators:决定了要训练的树的数量,一般来说增加树的数量可以提高性能。但是增加树的数量也会增加计算时间,因此需要在准确性和计算成本之间进行权衡。 2. learning_rate:决定了每个树的贡献,较小的学习率可以使算法更加稳定,但是也需要更多的树才能达到相同的准确性。 3. max_depth:限制每个回归树的最大深度,可以避免过拟合,但是如果设得太小,可能会导致欠拟合。 4. min_samples_split:决定了一个节点必须具有的最小样本数才能分裂,较小的值可以提高模型的复杂度,但也可能导致过拟合。 5. min_samples_leaf:决定了一个叶子节点必须具有的最小样本数,较小的值可以提高模型的复杂度,但也可能导致过拟合。 6. subsample:决定了每个树的训练集的比例,较小的值可以减少方差,但也可能导致偏差。 进行超参数调整的一种常见方法是使用网格搜索(Grid Search)或随机搜索(Random Search)。在网格搜索,我们定义一个超参数的范围,并在该范围内尝试不同的超参数组合。在随机搜索,我们定义超参数的分布,并从该分布随机抽取超参数组合。然后,我们可以使用交叉验证来评估每个超参数组合的性能,并选择表现最佳的超参数组合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俊红的数据分析之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值