jqgrid使用本地静态数据创建网格的例子_第68集 python机器学习:网格搜索管道中的属性...
pipeline的主要作用之一就是进行网格搜索。一个常见的任务是在网格搜索内访问管道的某些步骤,我们对cancer数据集上的LogisticRegression分类器进行网格搜索,将数据传入LogisticRegression分类器之前,先用pipeline和standardscaler对数据进行缩放。具体步骤如下:
#首先,我们创建一个管道
from sklearn.linear_model import LogisticRegression
pipe = make_pipeline(StandardScaler(), LogisticRegression())
#接下来,我们床架一个参数网络,其中,LogisticRegression需要调节的正则化参数是C
#我们对这个参数使用对数网络,在0.01-100之间进行搜索,由于我们使用了make_pipeline
#数据,所以管道中LogisticRegression步骤的名称是小写的。因此,我们调节参数C,必须
#指定LogisticRegression_C的参数网络
param_grid = {'logisticregression__C': [0.01,0.1,1,10,100]}
#接下来我们将cancer数据集划分为训练集和测试集,并对网格搜索进行拟合
x_train, x_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=4)
grid = GridSearchCV(pipe, param_grid, cv=4)
grid.fit(x_train, y_train)
#我们通过best_estimator属性找到对应的最佳参数
print("Best estimator are:{}".format(grid.best_estimator_))
运行后其结果如下图:
在上述例子中,best_estimator_是一个管道值,包含两个步骤——standardscaler和logisticregression。这里,我们可以使用named_steps属性来访问logisticregression步骤,具体操作如下:
print("Logistic regression steps:{}".format(grid.best_estimator_.named_steps["logisticregression"]))
print("Standardscaler steps:{}".format(grid.best_estimator_.named_steps["standardscaler"]))
运行后其结果如下:
最后我们看一下每个输入特征相关系数:
print("Logsitic regression coefficients:{}".format(
grid.best_estimator_.named_steps["logisticregression"].coef_))
运行后结果如下:
尽管该系数列表有些长,不过却有助于我们理解对应的模型。