ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐

简介: ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐
+关注继续查看

输出结果


先看结果

image.png





实现代码


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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4054 0
算法笔试模拟题精解之“恐怖的辐射”
因为N M 和最大辐射值都不大,所以可以直接模拟辐射扩散的实际情况,最后判断是否有小于等于7的位置。
323 0
ML之xgboost:利用xgboost算法(自带方式)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
ML之xgboost:利用xgboost算法(自带方式)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
17 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4398 0
ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐
ML之RS之MF:基于简单的张量分解MF算法进行打分和推荐
13 0
算法学习之路|二分图的最大匹配—匈牙利算法(Dfs实现)
二分图的概念:二分图又称作二部图,是图论中的一种特殊模型
2576 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10760 0
阿里云服务器远程登录用户名和密码的查询方法
阿里云服务器远程连接登录用户名和密码在哪查看?阿里云服务器默认密码是什么?云服务器系统不同默认用户名不同
403 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
3185 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载