Python机器学习

改善ML模型性能(下)

Python机器学习改善ML模型性能详细操作教程

通过算法调整提高性能

我们知道ML模型的参数化方式可以针对特定问题调整其行为。算法调整意味着找到这些参数的最佳组合,从而可以提高ML模型的性能。这个过程有时称为超参数优化,算法本身的参数称为超参数,而ML算法找到的系数称为参数。

通过算法调整提高性能

在这里,我们将讨论Python Scikit-learn提供的一些算法参数调整方法。

网格搜索参数调整

这是一种参数调整方法。该方法工作的关键点是针对网格中指定的算法参数的每种可能组合,系统地构建和评估模型。因此,可以说该算法具有搜索性质。
示例
在以下Python配方中,我们将使用sklearn的GridSearchCV类执行网格搜索,以评估Pima Indians糖尿病数据集上的Ridge回归算法的各种alpha值。
首先,按如下所示导入所需的程序包-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
现在,我们需要像之前的示例一样加载Pima糖尿病数据集-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names = headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
接下来,按如下所示评估各种alpha值;
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha = alphas)
现在,我们需要在模型上应用网格搜索-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
model = Ridge()
grid = GridSearchCV(estimator = model, param_grid = param_grid)
grid.fit(X, Y)
使用以下脚本行打印结果-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
print(grid.best_score_)
print(grid.best_estimator_.alpha)
输出
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
0.2796175593129722
1.0
以上输出为我们提供了最佳分数,以及达到该分数的网格中的参数集。在这种情况下,alpha值为1.0。

随机搜索参数调整

这是一种参数调整方法。该方法的工作重点是从固定分布的迭代次数的随机分布中采样算法参数。
示例
在以下Python食谱中,我们将使用sklearn的RandomizedSearchCV类对Pima Indians糖尿病数据集的Ridge回归算法评估介于0和1之间的不同alpha值,以执行随机搜索。
首先,按如下所示导入所需的程序包-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV
现在,我们需要像之前的示例一样加载Pima糖尿病数据集-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
接下来,按以下方法在Ridge回归算法上评估各种alpha值-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(
   estimator = model, param_distributions = param_grid, n_iter = 50, random_state=7)
random_search.fit(X, Y)
使用以下脚本行打印结果-
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
print(random_search.best_score_)
print(random_search.best_estimator_.alpha)
输出
# Filename : example.py
# Copyright : 2020 By Lidihuo
# Author by : www.lidihuo.com
# Date : 2020-08-26
0.27961712703051084
0.9779895119966027
上面的输出为我们提供了最佳分数,与网格搜索类似。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4