具有交叉验证的 Sklearn 线性回归返回 NA 准确度分数
Posted
技术标签:
【中文标题】具有交叉验证的 Sklearn 线性回归返回 NA 准确度分数【英文标题】:Sklearn Linear Regression with Cross Validate Returns NA Accuracy Scores 【发布时间】:2018-11-23 15:35:57 【问题描述】:我正在运行一个带有基本输入的非常简单的初始线性回归模型。我有一个小数据集并删除了所有空值。我使用交叉验证并传递评分方法,以便能够检索分数以判断欠拟合/过拟合。
但是,我得到了 Null Accuracy:有人知道为什么会发生这种情况吗?
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】:您似乎在取负数的 sqrt,结果是 nan。您要计算什么度量?精度通常用于分类问题。它被定义为正确预测的类在观察总数中的比例。由于您使用的是线性回归模型并计算均方根误差,因此您的应用领域似乎是回归(使用连续值)。您尝试采用 sqrt 的 R2 度量是您当前模型能够解释的方差分数(笼统地说)。它应该不需要进一步处理。
【讨论】:
以上是关于具有交叉验证的 Sklearn 线性回归返回 NA 准确度分数的主要内容,如果未能解决你的问题,请参考以下文章
Python 中的逻辑回归和交叉验证(使用 sklearn)
在 sklearn 中使用交叉验证和 AUC-ROC 进行逻辑回归模型