好的模型可以有低的 R 方值吗?
Can a good model have a low R square value?
我使用 scikit learn 进行了线性回归
当我在测试数据上看到我的均方误差时,它非常低 (0.09)
当我在测试数据上看到 r2_score 时,它也非常少 (0.05)
据我所知,当均方误差很低时,当前模型很好,但 r2_score 非常小,这表明模型不好
不明白我的回归模型好不好
好的模型可以具有较低的 R 方值还是坏的模型可以具有较低的均方误差值?
R^2 是衡量您的拟合度代表数据的程度。
假设您的数据具有线性趋势并且其中有一些噪声。我们可以构建数据并查看 R^2 是如何变化的:
数据
我将使用 numpy
:
创建一些数据
xs = np.random.randint(10, 1000, 2000)
ys = (3 * xs + 8) + np.random.randint(5, 10, 2000)
适合
现在我们可以使用 scikit 创建一个拟合对象
reg = LinearRegression().fit(xs.reshape(-1, 1), ys.reshape(-1, 1))
而且我们可以从这个拟合中得到分数。
reg.score(xs.reshape(-1, 1), ys.reshape(-1, 1))
我的 R^2 是:0.9999971914416896
错误数据
假设我们有一组更分散的数据(上面有更多噪声)。
ys2 = (3 * xs + 8) + np.random.randint(500, 1000, 2000)
现在我们可以计算 ys2
的分数,以了解我们对 xs
、ys2
数据的拟合程度:
reg.score(xs.reshape(-1, 1), ys2.reshape(-1, 1))
我的 R^2 是:0.2377175028951054
分数低。我们知道数据的趋势没有改变。它仍然是 3x+8 +(噪声)。但是 ys2
离合身更远了。
因此,R^2 是您的拟合代表数据的好坏程度的感应器。但数据本身的状况很重要。也许即使分数低,您也能得到最合适的选择。由于数据因噪声而分散。
我使用 scikit learn 进行了线性回归
当我在测试数据上看到我的均方误差时,它非常低 (0.09)
当我在测试数据上看到 r2_score 时,它也非常少 (0.05)
据我所知,当均方误差很低时,当前模型很好,但 r2_score 非常小,这表明模型不好
不明白我的回归模型好不好
好的模型可以具有较低的 R 方值还是坏的模型可以具有较低的均方误差值?
R^2 是衡量您的拟合度代表数据的程度。
假设您的数据具有线性趋势并且其中有一些噪声。我们可以构建数据并查看 R^2 是如何变化的:
数据
我将使用 numpy
:
xs = np.random.randint(10, 1000, 2000)
ys = (3 * xs + 8) + np.random.randint(5, 10, 2000)
适合
现在我们可以使用 scikit 创建一个拟合对象
reg = LinearRegression().fit(xs.reshape(-1, 1), ys.reshape(-1, 1))
而且我们可以从这个拟合中得到分数。
reg.score(xs.reshape(-1, 1), ys.reshape(-1, 1))
我的 R^2 是:0.9999971914416896
错误数据
假设我们有一组更分散的数据(上面有更多噪声)。
ys2 = (3 * xs + 8) + np.random.randint(500, 1000, 2000)
现在我们可以计算 ys2
的分数,以了解我们对 xs
、ys2
数据的拟合程度:
reg.score(xs.reshape(-1, 1), ys2.reshape(-1, 1))
我的 R^2 是:0.2377175028951054
分数低。我们知道数据的趋势没有改变。它仍然是 3x+8 +(噪声)。但是 ys2
离合身更远了。
因此,R^2 是您的拟合代表数据的好坏程度的感应器。但数据本身的状况很重要。也许即使分数低,您也能得到最合适的选择。由于数据因噪声而分散。