使用GridSearchCV进行网格搜索寻找最优参数

对于博文python使用线性模型lasso对波士顿房价进行预测中提到的lasso模型,我们可以调整其中的alpha参数来提高模型的得分,sklearn中为我们提供了GridSearchCV方法可以来自动测试不同参数下模型的表现,从而搜索到最优的参数。代码如下:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV
from sklearn import ensemble
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

boston = datasets.load_boston()
X = boston.data
y = boston.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=13)

alpha_range = np.arange(0,1,0.05)
param_grid = {'alpha':alpha_range}
lasso = linear_model.Lasso()
lasso_search = GridSearchCV(lasso,param_grid)
lasso_search.fit(X_train,y_train)
for result in lasso_search.cv_results_:
	print(result, lasso_search.cv_results_[result])
print(lasso_search.best_score_)
print(lasso_search.best_params_)
print(lasso_search.best_estimator_)

输出的结果为:

tolerance: 3.009271505649718
  positive)
mean_fit_time [0.0248014  0.00280023 0.00280013 0.00300021 0.00340023 0.00300021
 0.00300026 0.00260019 0.00280013 0.0032001  0.00220017 0.0026001
 0.00340009 0.0038002  0.00320015 0.00260015 0.00260019 0.00260019
 0.00260015 0.00420022]
std_fit_time [0.00696894 0.00074839 0.00074837 0.00063256 0.00149675 0.00109563
 0.00063249 0.00080001 0.00040002 0.00074838 0.00039992 0.00049
 0.00101983 0.00172062 0.00146976 0.00080005 0.00120008 0.00048998
 0.00080005 0.00391923]
mean_score_time [0.0038002  0.002      0.00240011 0.00340014 0.00200009 0.00180006
 0.0026001  0.00200014 0.00340018 0.00200005 0.00180006 0.00260015
 0.00220017 0.0032002  0.00200014 0.00260005 0.00219998 0.00280018
 0.00240011 0.00200009]
std_score_time [0.00146968 0.00063249 0.00080004 0.00233239 0.00063249 0.00039995
 0.00080003 0.00063264 0.00215425 0.00089442 0.00040007 0.00101991
 0.00040004 0.00248201 0.00089442 0.00135651 0.00074837 0.0014698
 0.0010199  0.00063256]
param_alpha [0.0 0.05 0.1 0.15000000000000002 0.2 0.25 0.30000000000000004
 0.35000000000000003 0.4 0.45 0.5 0.55 0.6000000000000001 0.65
 0.7000000000000001 0.75 0.8 0.8500000000000001 0.9 0.9500000000000001]
params [{'alpha': 0.0}, {'alpha': 0.05}, {'alpha': 0.1}, {'alpha': 0.15000000000000002}, {'alpha': 0.2}, {'alpha': 0.25}, {'alpha': 0.30000000000000004}, {'alpha': 0.35000000000000003}, {'alpha': 0.4}, {'alpha': 0.45}, {'alpha': 0.5}, {'alpha': 0.55}, {'alpha': 0.6000000000000001}, {'alpha': 0.65}, {'alpha': 0.7000000000000001}, {'alpha': 0.75}, {'alpha': 0.8}, {'alpha': 0.8500000000000001}, {'alpha': 0.9}, {'alpha': 0.9500000000000001}]
split0_test_score [0.67993035 0.65884197 0.65797842 0.65483648 0.64942964 0.64943279
 0.65216849 0.65465125 0.65685984 0.6588145  0.66049313 0.66190662
 0.66306719 0.66395033 0.66456833 0.66493504 0.66502284 0.66484549
 0.66441837 0.66371074]
split1_test_score [0.68514503 0.68837566 0.69549767 0.70094809 0.70508198 0.70755423
 0.70787143 0.70779    0.70755531 0.70712626 0.70650284 0.70568501
 0.7046717  0.70346505 0.70206395 0.70046843 0.69867852 0.69669421
 0.69451412 0.692141  ]
split2_test_score [0.68870405 0.68113996 0.66712694 0.6583656  0.65537421 0.65221099
 0.64887679 0.64537131 0.6416937  0.63784561 0.63382615 0.62963538
 0.62527336 0.62074007 0.6160341  0.61115816 0.60611109 0.60089277
 0.59550123 0.5899403 ]
split3_test_score [0.77613146 0.77114045 0.76345796 0.75479998 0.74585131 0.74202627
 0.73800128 0.73377565 0.72934936 0.72472124 0.71989355 0.7148652
 0.70963618 0.70420497 0.69857445 0.69274321 0.68671129 0.6804787
 0.6745721  0.67280032]
split4_test_score [0.61565286 0.61084354 0.61922204 0.62684926 0.63372166 0.63956237
 0.64478198 0.64811756 0.64939703 0.65022045 0.65058717 0.65049502
 0.64994958 0.64894666 0.64749306 0.64558532 0.64321937 0.64040327
 0.63713306 0.63340414]
mean_test_score [0.68911275 0.68206832 0.6806566  0.67915988 0.67789176 0.67815733
 0.67834    0.67794115 0.67697105 0.67574561 0.67426057 0.67251745
 0.6705196  0.66826142 0.66574678 0.66297803 0.65994862 0.65666289
 0.65322778 0.6503993 ]
std_test_score [0.05112502 0.05212854 0.04805805 0.04462417 0.04153538 0.03982789
 0.03771139 0.03605858 0.03489459 0.03393513 0.03318688 0.03264925
 0.03231829 0.03219055 0.03225688 0.03250579 0.03292519 0.03350026
 0.03428343 0.03568052]
rank_test_score [ 1  2  3  4  8  6  5  7  9 10 11 12 13 14 15 16 17 18 19 20]
0.6891127512832596
{'alpha': 0.0}
Lasso(alpha=0.0, copy_X=True, fit_intercept=True, max_iter=1000,
      normalize=False, positive=False, precompute=False, random_state=None,
      selection='cyclic', tol=0.0001, warm_start=False)
[Finished in 16.1s]

我们看到,在alpha0的时候,最佳的得分为0.689

发布了179 篇原创文章 · 获赞 9 · 访问量 5553

猜你喜欢

转载自blog.csdn.net/weixin_41855010/article/details/104507965