相关系数的值介于–1与+1之间,即–1≤r≤+1。其性质如下:
当r>0时,表示两变量正相关,r<0时,两变量为负相关。
当|r|=1时,表示两变量为完全线性相关,即为函数关系。
当r=0时,表示两变量间无线性相关关系。
当0<|r|<1时,表示两变量存在一定程度的线性相关。
​且|r|越接近1,两变量间线性关系越密切;
​|r|越接近于0,表示两变量的线性相关越弱。
一般可按三级划分:|r|<0.4为低度线性相关;
​0.4≤|r|<0.7为显著性相关;0.7≤|r|<1为高度线性相关。
​1. [代码][Java]代码    
package com.Social.cbra.praron2;
 
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Logger;
 
/**
 * 
 * @author larry
 * 
 */
public class Similarity {
    static Logger logger = Logger.getLogger(Similarity.class.getName());
    Map<String, Double> rating_map = new HashMap<String, Double>();
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        Similarity similarity1 = new Similarity();
        similarity1.rating_map.put("1", 434d);
        similarity1.rating_map.put("2", 7d);
        similarity1.rating_map.put("3", 23d);
        Similarity similarity2 = new Similarity();
        similarity2.rating_map.put("1", 6d);
        similarity2.rating_map.put("2", 2d);
        similarity2.rating_map.put("3", 6d);
        logger.info("" + similarity1.getsimilarity_bydim(similarity2));
    }
 
    public double getsimilarity_bydim(Similarity u) {
        double sim = 0d;
        double common_items_len = 0;
        double this_sum = 0d;
        double u_sum = 0d;
        double this_sum_sq = 0d;
        double u_sum_sq = 0d;
        double p_sum = 0d;
         
        Iterator<String> rating_map_iterator = this.rating_map.keySet().iterator();
        while(rating_map_iterator.hasNext()){http://www.huiyi8.com/flashjc/​
            String rating_map_iterator_key = rating_map_iterator.next();
            Iterator<String> u_rating_map_iterator = u.rating_map.keySet().iterator();
            while(u_rating_map_iterator.hasNext()){flash教程
                String u_rating_map_iterator_key = u_rating_map_iterator.next();
                if(rating_map_iterator_key.equals(u_rating_map_iterator_key)){
                    double this_grade = this.rating_map.get(rating_map_iterator_key);
                    double u_grade = u.rating_map.get(u_rating_map_iterator_key);
                    //评分求和
                    //平方和
                    //乘积和
                    this_sum += this_grade;
                    u_sum += u_grade;
                    this_sum_sq += Math.pow(this_grade, 2);
                    u_sum_sq += Math.pow(u_grade, 2);
                    p_sum += this_grade * u_grade;  
                    common_items_len++;
                }
            }
        }
        //如果等于零则无相同条目,返回sim=0即可
        if(common_items_len > 0){
            logger.info("common_items_len:"+common_items_len);
            logger.info("p_sum:"+p_sum);
            logger.info("this_sum:"+this_sum);
            logger.info("u_sum:"+u_sum);
            double num = common_items_len * p_sum - this_sum * u_sum;
            double den = Math.sqrt((common_items_len * this_sum_sq - Math.pow(this_sum, 2)) * (common_items_len * u_sum_sq - Math.pow(u_sum, 2)));
            logger.info("" + num + ":" + den);
            sim = (den == 0) ? 1 : num / den;
        }
         
        //如果等于零则无相同条目,返回sim=0即可
        return sim;
    }
 
}

皮尔逊相关系数的java实现的更多相关文章

  1. 皮尔逊相关系数与余弦相似度(Pearson Correlation Coefficient & Cosine Similarity)

    之前<皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)>一文介绍了皮尔逊相关系数.那么,皮尔逊相关系数(Pearson Corre ...

  2. 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)

    Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度. 用于总体(population)时记作ρ (rh ...

  3. 【Python学习笔记】使用Python计算皮尔逊相关系数

    源代码不记得是哪里获取的了,侵删.此处博客仅作为自己笔记学习. def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] ...

  4. 皮尔逊相关系数的计算(python代码版)

    from math import sqrt def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] sumofab+= ...

  5. 协同过滤算法中皮尔逊相关系数的计算 C++

    template <class T1, class T2>double Pearson(std::vector<T1> &inst1, std::vector<T ...

  6. Python 余弦相似度与皮尔逊相关系数 计算

    夹角余弦(Cosine) 也可以叫余弦相似度. 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异. (1)在二维空间中向量A(x1,y1)与向量B(x2,y2 ...

  7. Spark/Scala实现推荐系统中的相似度算法(欧几里得距离、皮尔逊相关系数、余弦相似度:附实现代码)

    在推荐系统中,协同过滤算法是应用较多的,具体又主要划分为基于用户和基于物品的协同过滤算法,核心点就是基于"一个人"或"一件物品",根据这个人或物品所具有的属性, ...

  8. Pearson product-moment correlation coefficient in java(java的简单相关系数算法)

    一.什么是Pearson product-moment correlation coefficient(简单相关系数)? 相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变 ...

  9. 从欧几里得距离、向量、皮尔逊系数到http://guessthecorrelation.com/

    一.欧几里得距离就是向量的距离公式 二.皮尔逊相关系数反应的就是线性相关 游戏http://guessthecorrelation.com/ 的秘诀也就是判断一组点的拟合线的斜率y/x ------- ...

随机推荐

  1. STL学习笔记(五) 算法

    条款30:确保目标区间足够大 条款31:了解各种与排序有关的选择 //使用unaryPred划分输入序列,使得unaryPred为真的元素放在序列开头 partition(beg, end, unar ...

  2. IntelliJ IDEA插件-常用插件

    IntelliJ IDEA的插件真的很多,最近的新版集成的插件已经基本够用,下面是收集的一些常用插件,根据需要来安装和测试.如果还是没有找到,那么自己来开发一个. 官网:https://plugins ...

  3. 《Java虚拟机原理图解》 1.2、class文件中的常量池

    了解JVM虚拟机原理 是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给 ...

  4. Opengl配置

    Opengl配置说明: 本配置文档针对windows64位操作系统,配置vs2008项目工程 1.下载OpenGL的glut类库:http://www.opengl.org/resources/lib ...

  5. 【Todo】Spark运行架构

    接上一篇:http://www.cnblogs.com/charlesblc/p/6108105.html 上一篇文章中主要参考的是 Link 这个系列下一篇讲的是Idea,没有细看,又看了再下一篇: ...

  6. Swift的可选链,类型转换和扩展

    可选链(Optional Chaining) 可选链是一种请求或调用属性.方法,子脚本的过程. 可选性体现于请求或调用的目标当前可能为nil.若不为nil则成功调用.否则返回nil并将链失效. 调用可 ...

  7. 关于结构体的具体解说,C、C++中的差别

    1. C.C++内置的类型分两种,一种是基本数据类型.一种是复合数据类型.此处我们要讲的结构体便是复合数据类型. 先来讨论一下结构体存在的意义吧.或许你觉得主要的数据类型就够了,为什么还要有结构题这样 ...

  8. 在运行hadoop是出现Master的9000端口拒绝访问的情况

    出现9000端口拒绝访问的情况有可能是防火墙没有开放9000端口,可以选择关闭防火墙或者卸载防火墙,如果还是无法解决这种情况可能是因为hadoop的启动顺序不对. 应该按照如下得顺序启动 Step2: ...

  9. MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求

    MVC5中Model层开发数据注解   ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证( ...

  10. OpenCV中使用SVM简介

    下面这是opencv官方文档中的代码,我加了一部分注释: #include "stdafx.h" #include "opencv2/core/core.hpp" ...