带Pipelin的sklearn GridSearchCV

2024-09-27 04:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我对sklearnPipelineGridSearchCV功能还不熟悉。我试图建立一个管道,首先对我的训练数据进行随机主成分分析,然后拟合岭回归模型。这是我的代码:

pca = RandomizedPCA(1000, whiten=True)
rgn = Ridge()

pca_ridge = Pipeline([('pca', pca),
                      ('ridge', rgn)])

parameters = {'ridge__alpha': 10 ** np.linspace(-5, -2, 3)}

grid_search = GridSearchCV(pca_ridge, parameters, cv=2, n_jobs=1, scoring='mean_squared_error')
grid_search.fit(train_x, train_y[:, 1:])

我知道RidgeCV函数,但我想试试Pipeline和GridSearch CV。

我希望grid search CV报告RMSE错误,但是sklearn似乎不支持这个,所以我使用MSE。但是,它所对应的分数是负的:

In [41]: grid_search.grid_scores_
Out[41]: 
[mean: -0.02665, std: 0.00007, params: {'ridge__alpha': 1.0000000000000001e-05},
 mean: -0.02658, std: 0.00009, params: {'ridge__alpha': 0.031622776601683791},
 mean: -0.02626, std: 0.00008, params: {'ridge__alpha': 100.0}]

很明显,这对于均方误差是不可能的-我在这里做错了什么?


Tags: alphasearchpipelinetrainparamssklearnmeancv
2条回答

这些分数是负的MSE分数,也就是说,否定它们,你就得到了MSE。问题是,按照惯例,GridSearchCV总是试图将的得分最大化,因此必须否定MSE这样的损失函数。

如果你想将RMSE作为一个度量,你可以编写自己的可调用/函数,它将采用Yôpred和Yôorg并计算RMSE。

ref: http://scikit-learn.org/stable/modules/generated/sklearn.metrics.make_scorer.html

相关问题 更多 >

    热门问题