通常,我们将原始特征和目标数据(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
答案 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