【问题标题】:Coefficient of determination is different between scikit-learn and scipy libraries. why?scikit-learn 和 scipy 库之间的确定系数不同。为什么?
【发布时间】:2018-10-11 21:21:21
【问题描述】:

我有一个来自论文的数据集,我很难验证他们报告的决定系数 R 平方。我使用了 sklearn 和 scipy 库,我得到了不同的答案。为什么?哪个更可靠? p.s.当我使用 Excel 作为另一种选择时,我得到了与 scipy 相同的答案。

下面是我用来比较 SKlearn 和 Scipy 的结果的代码:

import pandas as pd
from scipy import stats
from sklearn.metrics import r2_score

data = pd.read_csv("output.csv", header=None)

y_measured = data.iloc[0, :].values
y_predicted = data.iloc[1, :].values

print(r2_score(y_measured, y_predicted)) # prints 0.708717556205

slope, intercept, r_value, p_value, std_err = stats.linregress(y_measured, y_predicted)

print(r_value**2)  # prints 0.731889173485

【问题讨论】:

    标签: python scipy scikit-learn statistics


    【解决方案1】:

    r2_score 根据给定的 y 值和线性回归线预测的 y 值计算其值,而不是根据给定的 xy 值。

    这是一个例子。首先,导入:

    In [59]: import numpy as np
    
    In [60]: from scipy import stats
    
    In [61]: from sklearn.metrics import r2_score
    

    需要处理的一些数据:

    In [62]: x = np.array([0, 1, 2, 3, 5, 8, 13])
    
    In [63]: y = np.array([1.2, 1.4, 1.6, 1.7, 2.0, 4.1, 6.6])
    

    使用scipy.stats.linregress进行线性回归,并检查r2

    In [64]: slope, intercept, rvalue, pvalue, stderr = stats.linregress(x, y)
    
    In [65]: rvalue**2
    Out[65]: 0.9485915175891462
    

    对于给定的x 值,计算回归线预测的y 值:

    In [66]: ypred = slope*x + intercept
    

    再次计算r2,使用r2_score:

    In [67]: r2_score(y, ypred)
    Out[67]: 0.9485915175891464
    

    正如预期的那样,我们得到了相同的值。

    我们也可以用scipy.stats.pearsonr计算这个值:

    In [68]: pearson_r, pearson_p = stats.pearsonr(x, y)
    
    In [69]: pearson_r**2
    Out[69]: 0.9485915175891464
    

    【讨论】:

    • 谢谢。我认为是相反的:sklearn 的 r2_score 根据 r2 的定义计算可靠和真实的 r2 值,而其他计算平方相关系数。在具有截距项和单个解释因子的线性最小二乘回归中,这也等于因变量 y 和解释变量 x 的平方 Pearson 相关系数。因此,如果您使用从线性最小二乘回归获得的值,您可以同时使用两者,但当您使用其他形式的回归时,r2_score 是正确的函数。
    猜你喜欢
    • 2021-04-27
    • 2019-06-20
    • 2016-08-06
    • 2019-04-23
    • 2021-07-15
    • 2018-07-19
    • 2021-05-02
    • 2016-04-17
    • 2015-08-06
    相关资源
    最近更新 更多