首页 > 编程知识 正文

网格优化的流程及思路,犀牛怎么给网格模型加厚度

时间:2023-05-05 10:06:08 阅读:159934 作者:4990

1.简单网格搜索法 Lasso算法中不同的参数调整次数

############################# 使用网格搜索优化模型参数 ########################################导入套索回归模型from sklearn.linear_model import Lasso#导入数据集拆分工具from sklearn.model_selection import train_test_split#导入红酒数据集from sklearn.datasets import load_wine#载入红酒数据集wine = load_wine()#将数据集差分为训练集与测试集X_train,X_test,y_train,y_test = train_test_split(wine.data,wine.target,random_state=38)#设置初始分数为0best_score = 0#设置alpha参数遍历0.01,0.1,1,10for alpha in [0.01,0.1,1.0,10.0]: #最大迭代数遍历100,1000,5000,10000 for max_iter in [100,1000,5000,10000]: lasso = Lasso(alpha=alpha,max_iter=max_iter) #训练套索回归模型 lasso.fit(X_train,y_train) score = lasso.score(X_test,y_test) #令最佳分数为所有分数中的最高值 if score > best_score: best_score = score #定义字典,返回最佳参数和最佳最大迭代数 best_parameters = {'alpha':alpha,'最大迭代次数':max_iter}#打印结果print('模型最高分为:{:.3f}'.format(best_score))print('最佳参数设置:{}'.format(best_parameters)) 模型最高分为:0.889最佳参数设置:{'alpha': 0.01, '最大迭代次数': 100} #将数据集差分为训练集与测试集X_train,X_test,y_train,y_test = train_test_split(wine.data,wine.target,random_state=0)#设置初始分数为0best_score = 0#设置alpha参数遍历0.01,0.1,1,10for alpha in [0.01,0.1,1.0,10.0]: #最大迭代数遍历100,1000,5000,10000 for max_iter in [100,1000,5000,10000]: lasso = Lasso(alpha=alpha,max_iter=max_iter) #训练套索回归模型 lasso.fit(X_train,y_train) score = lasso.score(X_test,y_test) #令最佳分数为所有分数中的最高值 if score > best_score: best_score = score #定义字典,返回最佳参数和最佳最大迭代数 best_parameters = {'alpha':alpha,'最大迭代次数':max_iter}#打印结果print('模型最高分为:{:.3f}'.format(best_score))print('最佳参数设置:{}'.format(best_parameters)) 模型最高分为:0.830最佳参数设置:{'alpha': 0.1, '最大迭代次数': 100} 2.与交叉验证结合的网格搜索 #导入numpyimport numpy as np#导入交叉验证工具from sklearn.model_selection import cross_val_score#设置alpha参数遍历0.01,0.1,1,10for alpha in [0.01,0.1,1.0,10.0]: #最大迭代数遍历100,1000,5000,10000 for max_iter in [100,1000,5000,10000]: lasso = Lasso(alpha=alpha,max_iter=max_iter) #训练套索回归模型 lasso.fit(X_train,y_train) scores = cross_val_score(lasso,X_train,y_train,cv=6) score = np.mean(scores) if score > best_score: best_score = score #定义字典,返回最佳参数和最佳最大迭代数 best_parameters = {'alpha':alpha,'最大迭代次数':max_iter}#打印结果print('模型最高分为:{:.3f}'.format(best_score))print('最佳参数设置:{}'.format(best_parameters)) 模型最高分为:0.865最佳参数设置:{'alpha': 0.01, '最大迭代次数': 100} #用最佳参数模型拟合数据lasso = Lasso(alpha=0.01,max_iter=100).fit(X_train,y_train)#打印测试数据集得分print('测试数据集得分:{:.3f}'.format(lasso.score(X_test,y_test))) 测试数据集得分:0.819 #导入网格搜索工具from sklearn.model_selection import GridSearchCV#将需要遍历的参数定义为字典params = {'alpha':[0.01,0.1,1.0,10.0],'max_iter':[100,1000,5000,10000]}#定义网格搜索中使用的模型和参数grid_search = GridSearchCV(lasso,params,cv=6,iid=False)#使用网格搜索模型拟合数据grid_search.fit(X_train,y_train)#打印结果print('模型最高分:{:.3f}'.format(grid_search.score(X_test,y_test)))print('最有参数:{}'.format(grid_search.best_params_)) 模型最高分:0.819最有参数:{'alpha': 0.01, 'max_iter': 100} #打印网格搜索中的best_score_属性print('交叉验证最高得分:{:.3f}'.format(grid_search.best_score_)) 交叉验证最高得分:0.865

总结 :  

GridSearchCV本身就是将交叉验证和网格搜索封装在一起的方法.GridSearchCV虽然是个非常强悍的功能,但是由于需要反复建模,因此所需要的计算时间更长.

 

文章引自 : 《深入浅出python机器学习》

转载于:https://www.cnblogs.com/weijiazheng/p/10966005.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。