解释代码import numpy as np import pandas as pd #数据文件格式用户id、商品id、评分、时间戳 header = ['user_id', 'item_id', 'rating', 'timestamp'] with open( "u.data", "r") as file_object: df=pd.read_csv(file_object,sep='\t',names=header) #读取u.data文件 print(df) n_users = df.user_id.unique().shape[0] n_items = df.item_id.unique().shape[0] print('Mumber of users = ' + str(n_users) + ' | Number of movies =' + str(n_items)) from sklearn.model_selection import train_test_split train_data, test_data = train_test_split(df, test_size=0.2, random_state=21) train_data_matrix = np.zeros((n_users, n_items)) for line in train_data.itertuples(): train_data_matrix[line[1] - 1, line[2] -1] = line[3] test_data_matrix = np.zeros((n_users, n_items)) for line in test_data.itertuples(): test_data_matrix[line[1] - 1, line[2] - 1] = line[3] print(train_data_matrix.shape) print(test_data_matrix.shape) from sklearn.metrics.pairwise import cosine_similarity #计算用户相似度 user_similarity = cosine_similarity(train_data_matrix) print(u"用户相似度矩阵: ", user_similarity.shape) print(u"用户相似度矩阵: ", user_similarity) def predict(ratings, similarity, type): # 基于用户相似度矩阵的 if type == 'user': mean_user_ratings = ratings.mean(axis=1) ratings_diff = (ratings - mean_user_ratings[:, np.newaxis] ) pred =mean_user_ratings[:, np.newaxis] + np.dot(similarity, ratings_diff)/ np.array( [np.abs(similarity).sum(axis=1)]).T print(u"预测值: ", pred.shape) return pred # 预测结果 user_prediction = predict(train_data_matrix, user_similarity, type='user') print(user_prediction)
时间: 2024-01-24 10:19:09 浏览: 74
电商类数据分析—淘宝用户行为数据
5星 · 资源好评率100%
这段代码实现了基于用户相似度的推荐系统。首先,代码读取了一个包含用户ID、商品ID、评分和时间戳的数据文件,并将其存储在一个Pandas数据框中。然后,代码将数据集分为训练集和测试集,并将它们转换为用户-物品矩阵。接下来,代码使用余弦相似度计算了用户之间的相似度矩阵,并定义了一个函数来预测用户对未评分物品的评分。函数中使用了用户相似度矩阵来计算预测评分值。最后,代码使用训练集数据和用户相似度矩阵来预测所有用户对所有商品的评分,并将结果存储在一个矩阵中。
阅读全文