了解决定系数

Understanding Coefficient of Determination

我通过 documentation 了解决定系数,从文档中我了解到决定系数只不过是 R x R(相关系数)

所以我从kaggle.com中获取了房价数据集并开始尝试以更好地理解它,这是我的代码

取相关系数

test_data=pd.read_csv(r'\house_price\test.csv')
_d=test_data.loc[:,['MSSubClass','LotFrontage']]
_d.fillna(0,inplace=True)
_d.corr()

现在,像这样取决定系数

from sklearn.metrics import r2_score
r2_score(_d['MSSubClass'],_d['LotFrontage'])

为此,我得到了值 -0.9413195412943647

理想情况下不应该是 0.060531252961 吗?作为 -0.246031 x -0.246031 = 0.060531252961

您引用的 "documentation" 只是一篇描述 R2 众多变体之一的博文。我建议阅读官方 scikit-learn 文档以了解它们在 r2_score 中的实现。

简而言之,值为 0 意味着该模型与仅预测目标变量的期望值(即平均值)的模型没有任何不同。另一方面,值为 1 意味着模型是完美的,其预测没有错误。但是,这是与您提供的博文状态的主要区别,您会看到它允许负值,因为模型的性能可能比简单地预测目标变量的预期值更差。

这就是 scikit-learnr2_score 在您的情况下告诉您的内容:您拟合的模型更糟糕,即平均产生更高的误差,而不是仅仅预测房价。

遵循文档:https://scikit-learn.org/stable/modules/model_evaluation.html#r2-score

r2_score 定义为:

df.corr方法在哪里(与皮尔逊相关):

所以让我们构建一个示例:

x   y
1   1
1   0
0   0
1   1

相关性:4*(1+0+0+1) - 3*2 / sqrt(4*(3-9)*4*(2-4)) = 8-6/ sqr(-24*4*-8) = 2/sqr(-24*4*-8) R2 在哪里:1-((0)^2+(1)^2+(0)^2+(0)^2) / (1-0.75)^2+(1-0.75)^2+(0 - 0.75)^2 +(1-0.75)^2

希望对您有所帮助