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)