Mahout-Pearson correlation的实现

计算公式:
这里写图片描述
并通过下面代码对Mahout in Action的结果进行了验证:
这里写图片描述
代码如下:
`
package com.example.mahout;

public class TestColl {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    //int a[]={68,71,62,75,58,60,67,68,71,69,68,67,63,62,60,63,65,67,63,61};
    //double b[] ={4.1,4.6,3.8,4.4,3.2,3.1,3.8,4.1,4.3,3.7,3.5,3.2,3.7,3.3,3.4,4.0,4.1,3.8,3.4,3.6};
    double a[]={5,3.0,2.5};
    double b[]={4,3,2.0};

    int i,j;
    double sum_a=0,sum_b=0,sum_XY=0,sum_X=0,sum_Y=0,sum_X2=0,sum_Y2=0;
    double  mean_a,var_a,mean_b,var_b;
    for(i=0;i<a.length;i++){
        sum_a+=a[i];
        sum_b+=b[i];
        sum_XY+=a[i]*b[i];
        sum_X2+=a[i]*a[i];
        sum_Y2+=b[i]*b[i];
    }

    mean_a = sum_a/a.length;
    mean_b = sum_b/b.length;
    System.out.println("sum_a:"+sum_a);
    System.out.println("sum_b:"+sum_b);
    System.out.println("mean_a:"+mean_a);
    System.out.println("mean_b:"+mean_b);
    sum_X=sum_a;
    sum_Y = sum_b;

    sum_a=sum_b=0;
    for(i=0;i<a.length;i++){
        sum_a+=(a[i]-mean_a)*(a[i]-mean_a);
        sum_b+=(b[i]-mean_b)*(b[i]-mean_b);
    }
    var_a=sum_a/(a.length-1);
    var_b=sum_b/(a.length-1);
    System.out.println("var_a:"+var_a);
    System.out.println("var_b:"+var_b);
    System.out.println("sum_XY:"+sum_XY);
    System.out.println("sum_X:"+sum_X);
    System.out.println("sum_X2:"+sum_X2);
    System.out.println("sum_Y2:"+sum_Y2);
    double r_up = a.length*sum_XY-sum_X*sum_Y;
    double r_down = Math.sqrt((a.length*sum_X2-sum_X*sum_X)*(a.length*sum_Y2-sum_Y*sum_Y));
    double r=r_up/r_down;

    System.out.println("r_up:"+r_up);
    System.out.println("r_down:"+r_down);
    System.out.println("r:"+r);

}

}
`

Mahout是一个基于Hadoop的机器学习库,其中包含了很多常用的机器学习算法,包括K-Means聚类算法。下面是基于Mahout实现K-Means聚类的步骤: 1. 准备数据 将需要聚类的数据准备好,以适合Mahout输入格式的方式存储,例如HDFS上的文本文件。 2. 配置MahoutHadoop集群上安装Mahout,并配置好HadoopMahout的环境变量。 3. 运行K-Means聚类 使用Mahout中的kmeans命令来运行K-Means聚类算法,命令格式如下: ``` mahout kmeans -i <input> -c <centroids> -o <output> -dm <distanceMeasure> -k <k> ``` 其中,参数含义如下: - input:输入数据路径 - centroids:初始质心路径 - output:输出结果路径 - distanceMeasure:距离度量方法,例如EuclideanDistanceMeasure - k:聚类数量 4. 分析结果 分析K-Means聚类的结果,可以使用Mahout中的clusterdump命令来输出聚类结果,例如: ``` mahout clusterdump -i <input> -o <output> -p <points> -d <dictionary> -dt <distanceMeasure> ``` 其中,参数含义如下: - input:聚类结果路径 - output:输出结果路径 - points:数据点路径 - dictionary:词典路径 - distanceMeasure:距离度量方法 以上是基于Mahout实现K-Means聚类的步骤,需要注意的是,Mahout的输入格式和输出格式都需要按照Mahout要求的格式进行,否则会导致运行失败。同时,在运行过程中,需要根据实际情况调整参数,以达到最佳的聚类效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值