Euclidean距离
定义:欧几里得空间中点 x = (x1,…,xn) 和 y = (y1,…,yn) 之间的距离为
Euclidean距离公式
Pearson相关系数
两个变量之间的相关系数越高,从一个变量去预测另一个变量的精确度就越高,这是因为相关系数越高,就意味着这两个变量的共变部分越多,所以从其中一个变量的变化就可越多地获知另一个变量的变化。如果两个变量之间的相关系数为1或-1,那么你完全可由变量X去获知变量Y的值。
· 当相关系数为0时,X和Y两变量无关系。
· 当X的值增大,Y也增大,正相关关系,相关系数在0.00与1.00之间
· 当X的值减小,Y也减小,正相关关系,相关系数在0.00与1.00之间
· 当X的值增大,Y减小,负相关关系,相关系数在-1.00与0.00之间
当X的值减小,Y增大,负相关关系,相关系数在-1.00与0.00之间
相关系数的绝对值越大,相关性越强,相关系数越接近于1和-1,相关度越强,相关系数越接近于0,相关度越弱。
Pearson相关系数
实现代码:
05
movies
=
{
'Lisa Rose'
: {
'Lady in the Water'
:
2.5
,
06
'Snakes on a Plane'
:
3.5
,
08
'Superman Returns'
:
3.5
,
09
'You, Me and Dupree'
:
2.5
,
10
'The Night Listener'
:
3.0
},
11
'Gene Seymour'
: {
'Lady in the Water'
:
3.0
,
12
'Snakes on a Plane'
:
3.5
,
14
'Superman Returns'
:
5.0
,
15
'The Night Listener'
:
3.0
,
16
'You, Me and Dupree'
:
3.5
},
17
'Michael Phillips'
: {
'Lady in the Water'
:
2.5
,
18
'Snakes on a Plane'
:
3.0
,
19
'Superman Returns'
:
3.5
,
20
'The Night Listener'
:
4.0
},
21
'Claudia Puig'
: {
'Snakes on a Plane'
:
3.5
,
23
'The Night Listener'
:
4.5
,
24
'Superman Returns'
:
4.0
,
25
'You, Me and Dupree'
:
2.5
},
26
'Mick LaSalle'
: {
'Lady in the Water'
:
3.0
,
27
'Snakes on a Plane'
:
4.0
,
29
'Superman Returns'
:
3.0
,
30
'The Night Listener'
:
3.0
,
31
'You, Me and Dupree'
:
2.0
},
32
'Jack Matthews'
: {
'Lady in the Water'
:
3.0
,
33
'Snakes on a Plane'
:
4.0
,
34
'The Night Listener'
:
3.0
,
35
'Superman Returns'
:
5.0
,
36
'You, Me and Dupree'
:
3.5
},
37
'Toby'
: {
'Snakes on a Plane'
:
4.5
,
38
'You, Me and Dupree'
:
1.0
,
39
'Superman Returns'
:
4.0
}}
41
def
euclidean(data, p1, p2):
42
"Calculate Euclidean distance"
43
distance
=
sum
([
pow
(data[p1][item]
-
data[p2][item],
2
)
44
for
item
in
data[p1]
if
item
in
data[p2]])
48
def
pearson(data, p1, p2):
49
"Calculate Pearson correlation coefficient"
50
corrItems
=
[item
for
item
in
data[p1]
if
item
in
data[p2]]
56
sumX
=
sum
([data[p1][item]
for
item
in
corrItems])
57
sumY
=
sum
([data[p2][item]
for
item
in
corrItems])
58
sumXY
=
sum
([data[p1][item]
*
data[p2][item]
for
item
in
corrItems])
59
sumXsq
=
sum
([
pow
(data[p1][item],
2
)
for
item
in
corrItems])
60
sumYsq
=
sum
([
pow
(data[p2][item],
2
)
for
item
in
corrItems])
62
pearson
=
(sumXY
-
sumX
*
sumY
/
n)
/
sqrt((sumXsq
-
pow
(sumX,
2
)
/
n)
*
(sumYsq
-
pow
(sumY,
2
)
/
n))