具有交叉验证的Sklearn线性回归返回NA准确度分数

时间:2018-06-13 23:24:18

标签: python scikit-learn linear-regression cross-validation

我正在运行一个带有基本输入的非常简单的初始线性回归模型。我有一个小数据集,已删除所有空值。我使用交叉验证并传递评分方法,以便能够检索分数以判断欠/过度拟合。

然而,我得到了一个无效的准确度:有谁知道为什么会这样?

X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=42)

#Linear Regression

lr = linear_model.LinearRegression(fit_intercept=True)

scores_lr = cross_validate(lr, X_train, y_train, return_train_score = True, scoring = ('r2', 'neg_mean_squared_error'), cv=10)

print 'Training Accuracy: ', np.sqrt(-scores_lr['train_r2'].mean())
print 'Training RMSE: ', np.sqrt(-scores_lr['train_neg_mean_squared_error'].mean())
print 'Validation Accuracy: ', np.sqrt(-scores_lr['test_r2'].mean())
print 'Validation RMSE: ', np.sqrt(-scores_lr['test_neg_mean_squared_error'].mean()) 

Training Accuracy:  nan
Training RMSE:  1.0170113520623867
Validation Accuracy:  nan
Validation RMSE:  1.0230034705533613

1 个答案:

答案 0 :(得分:1)

你好像拿了一个负数的sqrt,结果是一个nan。你想要计算什么衡量标准?准确度通常用于分类问题。它被定义为正确预测的类别在观察总数中的比例。由于您使用的是线性回归模型并且还计算了均方根误差,因此您的应用区域似乎是回归(使用连续值)。您尝试采用sqrt的R2度量是当前模型能够解释的方差的一部分(一般而言)。它不需要进一步处理。