基于不同用户对商品打分的当前用户可能喜欢的商品的推荐算法

# -*- 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值