当前位置: 首页 > news >正文

用以前用过的域名做网站/海豹直播nba

用以前用过的域名做网站,海豹直播nba,建设银行银行信用卡中心网站,网站标题logo怎么做书籍商品推荐系统使用矩阵分解, 根据用户给书籍商品的评分数据, 做一个千人千面的个性化推荐系统需要安装推荐系统库surprise, 使用如下命令安装: pip install scikit-surprise# 导入 nunpy 和 surprise 辅助库 import numpy as np import surprise Surprise库本身没有提供纯粹…

书籍商品推荐系统

使用矩阵分解, 根据用户给书籍商品的评分数据, 做一个千人千面的个性化推荐系统

需要安装推荐系统库surprise, 使用如下命令安装: pip install scikit-surprise

# 导入 nunpy 和 surprise 辅助库
import numpy as np
import surprise  

Surprise库本身没有提供纯粹的矩阵分解的算法, 在这里我们自己实现了基于Alternating Least Squares的矩阵分解, 使用梯度下降法优化

矩阵分解类MatrixFactorization继承了surprise.AlgoBase, 方便我们使用surpise库提供的其它功能

class MatrixFactorization(surprise.AlgoBase):'''基于矩阵分解的推荐.'''def __init__(self, learning_rate, n_epochs, n_factors, lmd):self.lr = learning_rate  # 梯度下降法的学习率self.n_epochs = n_epochs  # 梯度下降法的迭代次数self.n_factors = n_factors  # 分解的矩阵的秩(rank)self.lmd = lmd # 防止过拟合的正则化的强度def fit(self, trainset):'''通过梯度下降法训练, 得到所有 u_i 和 p_j 的值'''print('Fitting data with SGD...')# 随机初始化 user 和 item 矩阵.u = np.random.normal(0, .1, (trainset.n_users, self.n_factors))p = np.random.normal(0, .1, (trainset.n_items, self.n_factors))# 梯度下降法for _ in range(self.n_epochs):for i, j, r_ij in trainset.all_ratings():err = r_ij - np.dot(u[i], p[j])#TODO# 利用梯度调整 u_i 和 p_ju[i] -= -self.lr * err * p[j] + self.lr * self.lmd * u[i]p[j] -= -self.lr * err * u[i] + self.lr * self.lmd * p[j]# 注意: 修正 p_j 时, 安装严格定义, 我们应该使用 u_i 修正之前的值, 但是实际上差别微乎其微self.u, self.p = u, pself.trainset = trainsetdef estimate(self, i, j):'''预测 user i 对 item j 的评分.'''# 如果用户 i 和物品 j 是已知的值, 返回 u_i 和 p_j 的点击# 否则使用全局平均评分rating值(cold start 冷启动问题)if self.trainset.knows_user(i) and self.trainset.knows_item(j):# 返回 u_i 和 p_j 的点击return np.dot(self.u[i], self.p[j])else:# 返回 全局平均评分rating值return self.trainset.global_mean

演示如何调用以上定义的矩阵分解类实现书籍商品的推荐

from surprise import BaselineOnly
from surprise import Dataset
from surprise import Reader
from surprise import accuracy
from surprise.model_selection import cross_validate
from surprise.model_selection import train_test_split
import osfile_path = os.path.expanduser('./book_crossing/book_ratings.dat')# 创建 reader 对象
reader = Reader(line_format='user item rating', sep='t', rating_scale=(1, 5))
data = Dataset.load_from_file(file_path, reader=reader)# 将数据随机分为训练和测试数据集
trainset, testset = train_test_split(data, test_size=.25)# 初始化以上定义的矩阵分解类.
algo = MatrixFactorization(learning_rate=.015, n_epochs=60, n_factors=2, lmd = 0.2)# 训练
algo.fit(trainset)# 预测
predictions = algo.test(testset)# 计算平均绝对误差
accuracy.mae(predictions)

Fitting data with SGD... MAE: 3.0879

Out[32]:
3.087916709895363

# 使用 surpise 内建的基于最近邻的方法做比较
algo = surprise.KNNBasic()
algo.fit(trainset)
predictions = algo.test(testset)
accuracy.mae(predictions)

Computing the msd similarity matrix... Done computing similarity matrix. MAE: 3.0747

Out[33]:
3.0746869394684526

# 使用 surpise 内建的基于 SVD 的方法做比较
algo = surprise.SVD()
algo.fit(trainset)
predictions = algo.test(testset)
accuracy.mae(predictions)

MAE: 3.0632

Out[34]:
3.063175741427142

http://www.jmfq.cn/news/5065273.html

相关文章:

  • wordpress 标签 rss/seo排名工具哪个好
  • 网站格式有哪些内容/营销策划方案ppt范文
  • 靖江网站制作多少钱/指数是什么
  • 阿里云做的网站怎么备份/百家号seo
  • 电子商务公司网站怎么建/百度数据研究中心
  • php快速建网站/西安小程序开发的公司
  • 首饰网站建设/app推广30元一单平台
  • 北京网站制作最新教程/app联盟推广平台
  • 搜狗收录网站/企业qq下载
  • 重庆江北营销型网站建设公司推荐/百度百度一下
  • 网站建设招标流程/小红书推广引流软件
  • 网站推广公司傻大白/可以推广的软件
  • 最新采购求购信息网站/杭州百度快照推广
  • 门户定制网站建设公司/百度推广个人怎么开户
  • flash做的网站/推广之家
  • 邵阳网站制作/深圳关键词推广整站优化
  • wordpress插件 数据/杭州网站seo推广软件
  • 网站服务器排行榜/东莞做网络推广的公司
  • 上海宝山/资源企业网站排名优化价格
  • 怎么开一个做网站的工作室/百度竞价网站
  • 摄影师的网站有哪些/推广和竞价代运营
  • 二手网站开发文档模板/系统优化的意义
  • 电脑做网站用什么软件/关键词优化的价格查询
  • 网站内容页相关性怎么做/洛阳seo博客
  • 商业网站首页怎么做/网站seo优化服务
  • 如何做网站的自由撰稿人/2023免费网站推广大全
  • 淘客网站系统免费源码/业务推广方案怎么写
  • 泉州网站制作套餐/上海网站建设推广服务
  • 湖南网站推广建设公司有哪些/视频号的网站链接
  • 厦门有什么网站制作公司/宁波网站建设方案推广