皮尔逊相关系数的java实现
相关系数的值介于–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实现的更多相关文章
- 皮尔逊相关系数与余弦相似度(Pearson Correlation Coefficient & Cosine Similarity)
之前<皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)>一文介绍了皮尔逊相关系数.那么,皮尔逊相关系数(Pearson Corre ...
- 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)
Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度. 用于总体(population)时记作ρ (rh ...
- 【Python学习笔记】使用Python计算皮尔逊相关系数
源代码不记得是哪里获取的了,侵删.此处博客仅作为自己笔记学习. def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] ...
- 皮尔逊相关系数的计算(python代码版)
from math import sqrt def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] sumofab+= ...
- 协同过滤算法中皮尔逊相关系数的计算 C++
template <class T1, class T2>double Pearson(std::vector<T1> &inst1, std::vector<T ...
- Python 余弦相似度与皮尔逊相关系数 计算
夹角余弦(Cosine) 也可以叫余弦相似度. 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异. (1)在二维空间中向量A(x1,y1)与向量B(x2,y2 ...
- Spark/Scala实现推荐系统中的相似度算法(欧几里得距离、皮尔逊相关系数、余弦相似度:附实现代码)
在推荐系统中,协同过滤算法是应用较多的,具体又主要划分为基于用户和基于物品的协同过滤算法,核心点就是基于"一个人"或"一件物品",根据这个人或物品所具有的属性, ...
- Pearson product-moment correlation coefficient in java(java的简单相关系数算法)
一.什么是Pearson product-moment correlation coefficient(简单相关系数)? 相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变 ...
- 从欧几里得距离、向量、皮尔逊系数到http://guessthecorrelation.com/
一.欧几里得距离就是向量的距离公式 二.皮尔逊相关系数反应的就是线性相关 游戏http://guessthecorrelation.com/ 的秘诀也就是判断一组点的拟合线的斜率y/x ------- ...
随机推荐
- eq=等于gt=大于lt=小于的英文全称
EQ: Equal GT: Greater Than LT: Less than 知道全称就不会忘记
- 有关 GCC 及 JNA 涉及动态库/共享库时处理库文件名的问题
动态库尤其是共享库在 Linux 环境下普遍存在库文件名包含版本号的情况,比如 Linux 环境下经常会发现一个共享库的真实文件名是 libfoo.so.1.1.0,而同时会有多个指向该真实库文件的软 ...
- 接阿里云oss有感
看API,从头细看到尾,在这个过程中一定会找到你要找的东西.
- seo优化入门教程:认识搜索引擎
对于从来没有学过seo或者零基础的人来说,搜索引擎可能都不太了解.所以我们先来认识搜索引擎有哪些,同时为什么我们要学习搜索引擎优化. 从目前全球的一个搜索引擎来说的话,他的分支是非常多的,甚至可以讲, ...
- 航空售票系统设计分析(Markdownpad2图片服务器上传无法显示)
一.体系结构设计 1.系统原型图 2.体系结构环境图 3.构建结构图 二.人机交互界面设计 1.用户分析结果及建议 本次分析的主要目标关注用户评论反馈,对反馈进行归纳,设计出用户喜欢的界面样式.用户的 ...
- 高效的MySQL的批插入 BULK INSERT
原文:http://www.open-open.com/code/view/1453702496573 MySQL的批插入 BULK INSERT和load data的速度差不多,并且可靠. 语法如下 ...
- Go -- RPC 之 Thrift
Thrift 简介: Thrift 是一款高性能.开源的 RPC 框架,产自 Facebook 后贡献给了 Apache,Thrift 囊括了整个 RPC 的上下游体系,自带序列化编译工具,因为 Th ...
- LOCAL_CFLAGS参数说明
1.-Wall 是打开警告开关 2.-O 代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化 3.-g 是生成调试信息,生成的可执行文件具有和源代码关 ...
- 走入asp.net mvc不归路:[5]Action的返回
asp.net mvc提供了多种返回方式,一方面使得视图可以重用,另一方面灵活强大,有直接返回视图,返回Json,返回文件流,返回到相同Controller的Action,返回到另一个Controll ...
- Java单例的实现
1.声明实例变量(静态) 2.私有化构造函数 3.创建获取实例的方法 public class Singleton{ //创建实例变量 private static Singleton singlet ...