/**皮尔逊相关系数
*
ρ =(∑xy - ∑x∑y/n)/(∑x^2 - (∑x)^2/n)(∑y^2-(∑y)^2/n)^0.5
*/
public class PersonCorrelationCoefficient {
public double personCoefficient(Instance a,Instance b){
if (a.noAttributes() != b.noAttributes())
throw new RuntimeException("两个数据实例的属性数目不一致");
double xy =0;
double sumX = 0;
double sumY = 0;
double xTo = 0;
double yTo =0;
for (int i=0;i<a.noAttributes();i++){
xy += a.value(i) * b.value(i);
sumX += a.value(i);
sumY += b.value(i);
xTo += a.value(i) * a.value(i);
yTo += b.value(i) * b.value(i);
}
int n = a.noAttributes();
return (xy - (sumX * sumY) / n)
/ Math.sqrt((xTo-(sumX * sumX)/n)*(yTo - (sumY * sumY) / n));
}
}
marchine learning 之 皮尔逊相关系数
最新推荐文章于 2024-05-06 17:14:50 发布