我使用相同的数据但不同的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
答案 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 。通常,平方相关系数r²与确定系数R²不同。
确定系数告诉您模型与数据的拟合程度。因此,linregress
认为 x 是真实值, y 是模型预测的值。
如果您的 x 和 y 是真实且预测的数据,R²就是您想要的。但是,如果两者都是测量数据,则您很可能需要r²。
有关correlation coefficient和coefficient of determination的详细信息,请访问维基百科。