1.机器学习算法调参
1)网格搜索优化参数
网格搜索优化参数——通过遍历已定义参数的列表来评估算法的参数。
在sklearn 中使用GridSearchCV来实现对参数的跟踪、调整与评估。
GridSearchCV使用字典对象来指定需要调参的参数,可以同时对一个或多个参数进行调参。
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from pandas import read_csv
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import Ridge
filename='pima indians.txt'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
data=read_csv(filename,names=names)
array= data.values
X= array[:,0:8]
Y= array[:,8]
model = Ridge() #脊回归
param_grid={'alpha':[1, 0.1, 0.01, 0.001, 0]} #可以设置多个键值对,同时查询多个参数的最优参数值
grid=GridSearchCV(estimator = model ,param_grid = param_grid)
grid.fit(X,Y)
print('最高得分:%.3f' % grid.best_score_)
print('最优参数:%.3f' % grid.best_estimator_.alpha)
运行结果为:
最高得分:0.280
最优参数:1.000
2)随机搜索优化参数
随机搜索优化参数——通过固定次数的迭代,采用随机采样分布的方式搜索合适的参数。
——与网格搜索优化参数相比,随机搜索优化参数更高效(特别是在参数数量多的情况下)。随机搜索优化参数为每个参数定义了一个分布函数,并在该空间中采样。
在sklearn 中通过RandomizedSearchCV来实现。
from pandas import read_csv
from sklearn.model_selection import RandomizedSearchCV
from sklearn.linear_model import Ridge
from scipy.stats import uniform
filename='pima indians.txt'
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
data=read_csv(filename,names=names)
array= data.values
X= array[:,0:8]
Y= array[:,8]
model = Ridge()
param_grid={'alpha':uniform}
#随机搜索优化参数
grid=RandomizedSearchCV(estimator = model ,param_distributions = param_grid, n_iter=100, random_state=7)
grid.fit(X,Y)
print('最高得分:%.3f' % grid.best_score_)
print('最优参数:%.3f' % grid.best_estimator_.alpha)
运行结果为:
最高得分:0.280
最优参数:0.978