데이터 분석/jupyternotebook
피어슨 상관계수
NIGHT_LOVE
2020. 6. 18. 16:34
critics = {
'BTS': {'암수살인': 5, '바울':4, '할로윈':1.5},
'손흥민': {'바울':5, '할로윈':2},
'레드벨벳': {'암수살인':2.5, '바울':2, '할로윈':1},
'트와이스': {'암수살인':3.5, '바울':4 , '할로윈': 5}
}
def simPearson(critics, name1 , name2):
sumX= 0
sumY= 0
sumPowX= 0
sumPowY= 0
sumXY=0
count =0
for i in critics[name1]:
if i in critics[name2]: #같은 영화를 봤다면
sumX += critics[name1][i] #상관계수 구하는 부분
sumY += critics[name2][i]
sumPowX += pow(critics[name1][i], 2)
sumPowY += pow(critics[name2][i], 2)
sumXY += critics[name1][i]*critics[name2][i]
count += 1
#name1과 2의 상관계수 #상관계수 리턴
return(sumXY- ((sumX*sumY)/count))/sqrt((sumPowX-(pow(sumX,2)/count))*
(sumPowY -(pow(sumY,2)/count)))
simPearson(critics, 'BTS', '손흥민')
simPearson(critics, 'BTS', '레드벨벳')
simPearson(critics, '손흥민', '레드벨벳')
simPearson(critics, '손흥민', '트와이스')
simPearson(critics, '레드벨벳', '트와이스')