person 相关系数

import  pandas as pd
import pprint
import numpy as np

users = ['user1','user2','user3','user4','user5',]
items = ['item A','item B','item C','item D','item E',]


datasets = [
[5,3,4,4,None],
[3,1,2,3,3],
[4,3,4,3,5],
[3,3,1,5,4],
[1,5,5,2,1]
]

df = pd.DataFrame(datasets,columns= items,index= users)

print(df)
print('用户之间的两两相似度:')
#直接计算person(皮尔逊)相关系数
#默认是按列进行计算,因此如果计算用户间的相似度,当前需要进行转置

# DataFrame.corr(method='pearson', min_periods=1)
#
# 参数说明:
#
# method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
#
# pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性 数据便会有误差。
#
# kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
#
# spearman:非线性的,非正太分析的数据的相关系数
#
# min_periods:样本最少的数据量
#
# 返回值:各类型之间的相关系数DataFrame表格。

user_similar = df.T.corr(method='pearson')
# user_similar = df.T
print(user_similar)


print('物品之间的两两相似度:')
item_similar = df.corr()
print(item_similar)
原文地址:https://www.cnblogs.com/kpwong/p/13600659.html