我正在运行一个带有基本输入的非常简单的初始线性回归模型。我有一个小数据集,已删除所有空值。我使用交叉验证并传递评分方法,以便能够检索分数以判断欠/过度拟合。
然而,我得到了一个无效的准确度:有谁知道为什么会这样?
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
答案 0 :(得分:1)
你好像拿了一个负数的sqrt,结果是一个nan。你想要计算什么衡量标准?准确度通常用于分类问题。它被定义为正确预测的类别在观察总数中的比例。由于您使用的是线性回归模型并且还计算了均方根误差,因此您的应用区域似乎是回归(使用连续值)。您尝试采用sqrt的R2度量是当前模型能够解释的方差的一部分(一般而言)。它不需要进一步处理。