
MF小测试
发布日期:2021-05-06 21:48:19
浏览次数:14
分类:精选文章
本文共 1374 字,大约阅读时间需要 4 分钟。
#ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐import numpy def matrix_factorization(R, P, Q, K, steps=5000, alpha=0.0002, beta=0.02): #(迭代次数5000、步长,正则化系数) Q = Q.T for step in range(steps): for i in range(len(R)): for j in range(len(R[i])): if R[i][j] > 0: eij = R[i][j] - numpy.dot(P[i,:],Q[:,j]) for k in range(K): P[i][k] = P[i][k] + alpha * (2 * eij * Q[k][j] - beta * P[i][k]) Q[k][j] = Q[k][j] + alpha * (2 * eij * P[i][k] - beta * Q[k][j]) eR = numpy.dot(P,Q) e = 0 for i in range(len(R)): for j in range(len(R[i])): if R[i][j] > 0: e = e + pow(R[i][j] - numpy.dot(P[i,:],Q[:,j]), 2) for k in range(K): e = e + (beta/2) * (pow(P[i][k],2) + pow(Q[k][j],2)) if e < 0.001: break return P, Q.T #读取user数据并用张量分解进行打分#定义得分矩阵R = [ [5,3,0,1], [4,0,3,1], [1,1,0,5], [1,0,0,4], [0,1,5,4], ] R = numpy.array(R) N = len(R)M = len(R[0])K = 2 #两个因子 P = numpy.random.rand(N,K)Q = numpy.random.rand(M,K) nP, nQ = matrix_factorization(R, P, Q, K)nR = numpy.dot(nP, nQ.T) print(nP)print("-----------------------------")print(nQ)print("-----------------------------")print(nR)print("-----------------------------")print(R)
结果输出:
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月24日 09时57分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08