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

Sklearn Linear Regression with Cross Validate Returns NA Accuracy Scores

我是 运行 一个非常简单的具有基本输入的初始线性回归模型。我有一个小数据集并删除了所有空值。我使用交叉验证并通过评分方法,以便能够检索分数来判断 under/overfitting.

但是,我的准确度为空:有人知道为什么会这样吗?

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

您似乎对负数取平方,结果是一个 nan。你想计算什么措施?准确性通常用于分类问题。它被定义为正确预测 类 占观察总数的比例。由于您使用的是线性回归模型并且还计算了均方根误差,因此您的应用领域似乎是回归(使用连续值)。您尝试取平方的 R2 度量是您当前模型能够解释的方差分数(一般来说)。它应该不需要进一步处理。