scikit-learn中的交叉验证:(X_test,y_test)的平均绝对误差

时间:2019-01-14 15:54:54

标签: python scikit-learn cross-validation

通常,我们将原始特征和目标数据(X,y)分为(X_train,y_train)和(X_test,y_test)。

使用方法:

mae_A = cross_val_score(clf, X_train_scaled, y_train, scoring="neg_mean_absolute_error", cv=kfold)

我得到了(X_train,y_train)的交叉验证平均绝对误差(MAE),对吧?

那么,如何获得(X_test,y_test)的MAE(从使用(X_train,y_train)获得的以前的交叉验证模型中)?

非常感谢您!

Maicon P.Lourenço

2 个答案:

答案 0 :(得分:1)

这是正确的方法。通常,您应该只使用训练数据来训练模型。 因此,db.collection.aggregate([ { "$match": { "userId": "5c3cac81989a8469d435f3b2" }}, { "$group": { "_id": "$UID", "latest": { "$max": "$latest" }, "title": { "$max": "$title" }, "userId": { "$first": "$userId" } }} ]) 在交叉验证过程中(即模型的超参数)应该保持不可见,否则您可能会通过添加测试样本的知识来偏向从模型获得的结果。

  

我得到了(X_train,y_train)的交叉验证平均绝对误差(MAE),对吧?

是的,test_set显示的错误仅来自训练数据。 因此,我们的想法是,一旦对cross_val_score的结果感到满意,就可以将最终模型与整个训练集拟合,然后对cross_val_score进行预测。为此,您可以使用y_test。出于种种考虑,如果您想获取MAE

sklearn.metrics

答案 1 :(得分:0)

尝试一下:

(假设您有数据x,y并且数据已经适合fit(x,y)

from sklearn import linear_model
from sklearn.model_selection import cross_val_score
reg = linear_model.LinearRegression()
scoring = 'neg_mean_absolute_error'
mae = cross_val_score(reg, x, y, cv=5,scoring=scoring)
mae