sklearn r2_score和python stats lineregress函数给出了非常不同的R ^ 2值。为什么?

时间:2016-03-22 11:47:13

标签: python scikit-learn scipy linear-regression

我使用相同的数据但不同的python库来计算确定系数R ^ 2。使用stats库和sklearn会产生不同的结果。

这种行为背后的原因是什么?

# Using stats lineregress
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
print r_value**2

0.956590054918

# Using sklearn
from sklearn.metrics import r2_score
print r2_score(x, y)

0.603933484937

1 个答案:

答案 0 :(得分:3)

@Entity @Cacheable(false) @Table(name = "tblActualValueFloat") @XmlRootElement(name = "tblActualValueFloat") @XmlAccessorType(XmlAccessType.FIELD) public class ActualValueFloat extends AbstractModel { /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ @Id @Column(name = "PointSliceID") @XmlElement(name = "PointSliceID", required = false, type = Integer.class) private Integer id; @Column(name = "ActualValue") @XmlElement(name = "ActualValue", required = false, type = Double.class) private Double value; @Temporal(TemporalType.TIMESTAMP) @Column(name = "UTCDateTime") @XmlElement(name = "UTCDateTime", required = false, type = Date.class) private Date date; //setters and getters and equals } 返回的r_value x y 的相关系数 r 。通常,平方相关系数与确定系数不同。

确定系数告诉您模型与数据的拟合程度。因此,linregress认为 x 是真实值, y 是模型预测的值。

如果您的 x y 是真实且预测的数据,就是您想要的。但是,如果两者都是测量数据,则您很可能需要

有关correlation coefficientcoefficient of determination的详细信息,请访问维基百科。