# -*- coding: utf-8 -*-
import random
import numpy as np
import pandas as pd
user_number=10#注册的用户数量
book_number=100#图书馆图书数量
user_query_book_category=4#此时用户查询的图书类别
# 定义用户评分矩阵
user=np.zeros((user_number,book_number),dtype=float)
for i in range(user_number):
for j in range(book_number):
user[i][j]=random.randint(1,100)
# print(user)
# 定义相似度矩阵
similarity= np.zeros((user_number,user_number))
for i in range(user_number):
for j in range(user_number):
if i != j:
similarity[i, j] = np.dot(user[i], user[j]) / (np.linalg.norm(user[i]) * np.linalg.norm(user[j]))
print("相似度矩阵:\n",similarity)
# 预测用户1对物品4的评分
# 找出与用户1相似的用户
similar_users = []
for i in range(user_number):
if i != 1:
similar_users.append((i, similarity[1, i]))
similar_users.sort(key=lambda x: x[1], reverse=True)
print("找出与用户1相似的用户:\n",similar_users)
# 取相似度最大的K个用户
K = 2
similar_users = similar_users[:K]
print("相似度最大的K个用户:\n",similar_users)
# 计算加权平均值
weighted_sum = 0
similarity_sum = 0
for user_index, similarity in similar_users:
weighted_sum += similarity * user[user_index,user_query_book_category]
similarity_sum += similarity
predicted_rating = weighted_sum / similarity_sum
print("预测出的感兴趣作品:\n",predicted_rating)
基于不同用户对商品打分的当前用户可能喜欢的商品的推荐算法
最新推荐文章于 2024-08-12 17:36:56 发布