Python sklearn GridSearchCV与管道
我不熟悉Python sklearn GridSearchCV与管道,python,scikit-learn,Python,Scikit Learn,我不熟悉sklearn的Pipeline和GridSearchCV功能。我试图建立一个管道,首先对我的训练数据进行随机PCA,然后拟合岭回归模型。这是我的密码: pca = RandomizedPCA(1000, whiten=True) rgn = Ridge() pca_ridge = Pipeline([('pca', pca), ('ridge', rgn)]) parameters = {'ridge__alpha': 10 ** np.
sklearn
的Pipeline
和GridSearchCV
功能。我试图建立一个管道,首先对我的训练数据进行随机PCA,然后拟合岭回归模型。这是我的密码:
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
我希望网格搜索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}]
很明显,对于均方误差来说,这是不可能的——我做错了什么?这些分数是负的MSE分数,也就是说,否定它们,你就得到了MSE。问题是,按照惯例,
GridSearchCV
总是试图最大化其分数,因此像MSE这样的损失函数必须被否定。如果您想将RMSE作为一个度量,您可以编写自己的可调用/函数,该函数将采用Y_pred和Y_org并计算RMSE
假设,我已将从GridSearchCV获得的负MSE和负MAE结果分别存储在名为model_nmse和model_nmae的列表中 所以我只需要将它乘以(-1),就可以得到期望的MSE和MAE分数
model_mse = list(np.multiply(model_nmse , -1))
model_mae = list(np.multiply(model_nmae , -1))
创建
GridSearchCV
的另一种方法是使用make_scorer
并将越大越好
标志改为False
因此,如果clf是你的分类器,参数是你的超参数列表,你可以像这样使用make_scorer
:
from sklearn.metrics import make_scorer
#define your own mse and set greater_is_better=False
mse = make_scorer(mean_squared_error,greater_is_better=False)
现在,与下面一样,您可以调用GridSearch并传递定义的mse
grid_obj = GridSearchCV(clf, parameters, cv=5,scoring=mse,n_jobs = -1, verbose=True)
您可以在文档中看到评分
根据您的测试,您能指出有关此项或其的任何文档吗?(我个人认为应该是否定的,而不是“否定的”)我现在有点困惑。我是否必须在model.compile()中使用'neg_mean_squared_error'来表示“损失”和度量“或‘均方误差’?问题是为什么RMSE值变成负值;这似乎不是问题的答案。@Gust有一个“负根均方误差”,我想这将很容易得到正确的RMSE?@JeremyCaney谢谢你的建议,这里是到Sciket学习评分文档的链接