怎样做金融理财网站,WordPress部署商城,1020美金等于多少欧元,wordpress 黑链机器学习的模型都是参数化的#xff0c;可以通过调参来提高模型的准确度。 模型有很多参数#xff0c;如何找到最佳的参数组合#xff0c;可以把它当作一个查询问题来处理#xff0c;但是调整参数到何时为止呢#xff1f;应该遵循偏差和方差协调的原则。 接下来将介绍在 s… 机器学习的模型都是参数化的可以通过调参来提高模型的准确度。 模型有很多参数如何找到最佳的参数组合可以把它当作一个查询问题来处理但是调整参数到何时为止呢应该遵循偏差和方差协调的原则。 接下来将介绍在 scikit-learn 中设置机器学习模型最佳参数的方法。
1. 调整参数对机器学习算法的重要性。 2. 如何使用网格搜索优化参数 3. 如何使用随机搜索优化参数
机器学习算法调参
调整算法参数是采用机器学习解决问题的最后一个步骤有时也被称为超参数优化。学会调参是进行机器学习项目的前提但第一次遇到这些算法和模型时肯定会被其大量的参数吓到。其实参数可分为两种一种是影响模型在训练集上的准确度或防止过拟合能力的参数另一种是不影响这两者的参数。模型在样本总体上的准确度由其在训练集上的准确度及其防止过拟合的能力共同决定所以在调参时主要针对第一种参数进行调整最终达到的效果是模型在训练集上的准确度和防止过拟合能力的大和谐。
下面将介绍两种自动寻找最优化参数的算法 · 网格搜索优化参数。 · 随机搜索优化参数。
网格搜索优化参数
网格搜索优化参数是一种算法参数优化的方法。它是通过遍历已定义参数的列表来评估算法的参数从而找到最优参数。在scikit-learn中使用GridSearchCV来实现对参数的跟踪、调整与评估从而找到最优参数。网格搜索优化参数适用于三四个或更少的超参数当超参数的数量增加时网格搜索的计算复杂度会呈现指数型增长这时要换用随机搜索由用户列出一个较小的超参数值域这些超参数值域的笛卡尔集排列组合为一组组超参数。网格搜索算法使用每组超参数训练模型并挑选验证集误差最小的超参数组合。下面的例子是展示如何使用 GridSearchCV 来调整脊回归Ridge的参数。GridSearchCV使用字典对象来指定需要调参的参数可以同时对一个或多个参数进行调参。
代码如下
import pandas as pd
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV#数据预处理
path D:\down\\archive\\diabetes.csv
data pd.read_csv(path)#打印标签名称
print(data.columns)#将数据转成数组
array data.values
#分割数据去掉最后一个标签
X array[:, 0:8]Y array[:, 8]model Ridge()
#设置参数进行网格搜索寻找最优参数这里只设置了一个参数实际中可以设置多个参数如下
param_grid {alpha: [1, 0.1, 0.01, 0.001, 0.0001]}
#网格搜索找到最优参数这里使用了10折交叉验证可以自己设置如5折交叉验证这里使用了全部的数据也可以自己设置
grid GridSearchCV(estimatormodel, param_gridparam_grid)grid.fit(X, Y)print(最优分数%.3f % grid.best_score_)
print(最优参数, grid.best_estimator_.alpha)
param_grid是一个字典对象以算法的参数名为key需要遍历的参数值列表为value。在验证算法最优参数的网格搜索算法中可以设定多个keyvalue对同时查询多个参数的最优参数值。
执行结果如下
最优分数0.276
最优参数 1随机搜索优化参数
随机搜索优化参数是另一种对算法参数优化的方法。随机搜索优化参数通过固定次数的迭代采用随机采样分布的方式搜索合适的参数。与网格搜索优化参数相比随机搜索优化参数提供了一种更高效的解决方法特别是在参数数量多的情况下随机搜索优化参数为每个参数定义了一个分布函数并在该空间中采样。在 scikit-learn 中通过RandomizedSearchCV类实现。
下面的例子是通过RandomizedSearchCV对脊回归算法的参数进行100次迭代并从中选择最优的参数。
SciPy中的uniform是一个均匀随机采样函数默认生成0与1之间的随机采样数值。在这里利用uniform对参数进行随机采样。
代码如下
import pandas as pd
from scipy.stats import uniform
from sklearn.linear_model import Ridgefrom sklearn.model_selection import GridSearchCV, RandomizedSearchCV#数据预处理
path D:\down\\archive\\diabetes.csv
data pd.read_csv(path)#打印标签名称
print(data.columns)#将数据转成数组
array data.values
#分割数据去掉最后一个标签
X array[:, 0:8]Y array[:, 8]model Ridge()param_grid {alpha: uniform()}grid RandomizedSearchCV(estimatormodel, param_distributionsparam_grid, n_iter100, random_state7)grid.fit(X, Y)print(最高得分%.3f % grid.best_score_)
print(最优参数, grid.best_estimator_.alpha)执行结果如下
最高得分0.276
最优参数 0.9779895119966027调参是算法模型生成之前很重要的一步上面介绍了两种选择最优参数的方法网格搜索优化参数和随机搜索优化参数。
如果算法的参数少于三个推荐使用网格搜索优化参数如果需要优化的参数超过三个推荐使用随机搜索优化参数。
下一节将介绍如何生成模型以及如何保存和载入已生成的模型。