【发布时间】:2018-02-09 06:04:22
【问题描述】:
从here 中汲取灵感。
我的问题
所以我有一个包含 3 个特征和 n 个观察值的数据集。我也有n个回复。基本上我想看看这个模型是否合适。
根据上述问题,人们为此目的使用 R^2。但我不确定我是否理解..
我可以只拟合模型然后计算均方误差吗? 我应该使用训练/测试拆分吗?
所有这些似乎都有共同的预测,但在这里我只是想看看它在拟合方面有多好。
例如这是我的想法
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
diabetes = datasets.load_diabetes()
#my idea
regr = linear_model.LinearRegression()
regr.fit(diabetes_X, diabetes.target)
print(np.mean((regr.predict(diabetes_X)-diabetes.target)**2))
但是我经常看到人们做这样的事情
diabetes_X = diabetes.data[:, np.newaxis, 2]
# split X
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
# split y
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
# instantiate and fit
regr = linear_model.LinearRegression()
regr.fit(diabetes_X_train, diabetes_y_train)
# MSE but based on the prediction on test
print('Mean squared error: %.2f' % np.mean((regr.predict(diabetes_X_test)-diabetes_y_test)**2))
在第一种情况下,我们得到:3890.4565854612724,而在第二种情况下,我们得到 2548.07。哪个最正确?
重要提示:我希望它在多重回归中工作,这只是一个 MWE!
【问题讨论】:
标签: python numpy scipy scikit-learn linear-regression