首页 > 解决方案 > 带有交叉验证的训练集拆分和测试集拆分的分数

问题描述

我有一个练习,我想知道我做的是否正确。

练习:考虑数据集并训练模型 Lasso,交叉验证 kfold=10。哪个 MAE 用于训练集拆分,然后,哪个 MAE 用于测试集拆分。

此外,cross_val_score在这种情况下,参数 'scoring' 返回一个负值,我使用 np.absolute 来获取正值。这是正确的?

x= df.drop(columns='target', axis=1)
y= df.target

x_train, x_test, y_train, y_test= train_test_split(x, y, random_state=42)

cv = KFold(n_splits=10)

model = linear_model.Lasso(alpha=0.42)

scores_train= absolute(cross_val_score(model, x_train, y_train, cv=cv, scoring='neg_mean_absolute_error'))
scores_train

scores_test= absolute(cross_val_score(model, x_test, y_test, cv=cv, scoring='neg_mean_absolute_error'))
scores_test

标签: pythonmachine-learningscikit-learncross-validation

解决方案


评分函数的约定cross_val_score是较高的返回值优于较低的返回值。因此,诸如 MAE 之类的指标被否定以遵循此约定。

如果您想分析mean_absolute_error您的模型,因此可以使用删除负号np.absolute()并将结果视为 MAE 值。


推荐阅读