2014-01-10 30 views
16

我是sklearnPipelineGridSearchCV功能的新功能。我正在尝试构建一个管道,首先对我的训练数据进行RandomizedPCA,然后再拟合岭回归模型。这里是我的代码:sklearn GridSearchCV与管道

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功能,但我想尝试管道和GridSearch CV。

我想要网格搜索简历报告RMSE错误,但这似乎并不支持sklearn,所以我正在做MSE。然而,resports分数为负:

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}] 

显然,这是不可能的均方误差 - 我究竟做错了什么?

回答

24

那些分数是负MSE分数,即否定它们,你会得到MSE。按照惯例,GridSearchCV总是试图最大化其得分,所以像MSE这样的损失函数必须被否定。