数据挖掘--相关系数计算

来源:互联网 发布:mac怎么删除软件快捷键 编辑:程序博客网 时间:2024/05/17 02:33
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class R_compute {List<String> data_x=new ArrayList<String>();      List<String> data_y=new ArrayList<String>();            public R_compute() throws IOException{//函数作用:数据载入          BufferedReader br=new BufferedReader(new FileReader("E:/1.txt"));          String line="";          while((line=br.readLine())!=null){              this.data_x.add(line.split(" ",2)[0]);              this.data_y.add(line.split(" ",2)[1]);          }      }          public float avg(List<String> data){//函数作用:计算变量data的平均值    float sum=0;    for(int i=0;i<data.size();i++){    sum=sum+Float.parseFloat(data.get(i));    }    return sum/data.size();    }        public float R(List<String> data_x,List<String> data_y){//计算相关系数R    float x_y=0;  //用来表示第一项    float x_x=0;  //用来表示第二项    float y_y=0;  //用来表示第三项    float x_avg=avg(data_x);    float y_avg=avg(data_y);    for(int i=0;i<data_x.size();i++){    x_x=x_x+(float)Math.pow((Float.parseFloat(data_x.get(i))-x_avg),2);    y_y=y_y+(float)Math.pow((Float.parseFloat(data_y.get(i))-y_avg),2);    x_y=x_y+(Float.parseFloat(data_y.get(i))-y_avg)*(Float.parseFloat(data_x.get(i))-x_avg);    }    float r=(float) (x_y/Math.sqrt(x_x*y_y));    return r;    }    public static void main(String[] args) throws IOException {R_compute a=new R_compute();System.out.println(a.R(a.data_x, a.data_y));}}

输入:

0.1 0.2
0.2 0.3
0.1 0.1
0.1 0.8


输出:

-0.10721123

0 0
原创粉丝点击