defload_data(file_path): '''导入用户商品数据 input: file_path(string):用户商品数据存放的文件 output: data(mat):用户商品矩阵 ''' f = open(file_path) data = [] for line in f.readlines(): lines = line.strip().split("\t") tmp = [] for x in lines: if x != "-": tmp.append(float(x)) # 直接存储用户对商品的打分 else: tmp.append(0) data.append(tmp) f.close()
defsimilarity(data): '''计算矩阵中任意两行之间的相似度 input: data(mat):任意矩阵 output: w(mat):任意两行之间的相似度 ''' m = np.shape(data)[0] # 用户的数量 # 初始化相似度矩阵 w = np.mat(np.zeros((m, m)))
for i in range(m): for j in range(i, m): if j != i: # 计算任意两行之间的相似度 w[i, j] = cos_sim(data[i, ], data[j, ]) w[j, i] = w[i, j] else: w[i, j] = 0 return w