相关系数的值介于–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
为高度线性相关。
代码来源: http://blog.csdn.net/larrylgq/article/details/7350842
ackage com.Social.cbra.praron2;
02
03
04 import java.util.HashMap;
05 import java.util.Iterator;
06 import java.util.Map;
07 import java.util.logging.Logger;
08
09 /**
10 *
11 * @author larry
12 *
13 */
14 public class Similarity {
15
static Logger logger = Logger.getLogger(Similarity.class.getName());
16 Map rating_map = new HashMap();
17
18
19
20
21
22
23
24
25
26
27
28
/**
* @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);
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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 rating_map_iterator = this.rating_map.keySet().iterator();
while(rating_map_iterator.hasNext()){
String rating_map_iterator_key = rating_map_iterator.next();
Iterator u_rating_map_iterator = u.rating_map.keySet().iterator();
while(u_rating_map_iterator.hasNext()){
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;
}
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 }
模比系数(一般记为 Kp)与频率(一般记为 P)是对应的,当频率 P 较小时,属于暴雨洪
水问题,此时频率 P 与重现期 T 之间是倒数关系!