# !/usr/bin/env python
# encoding: utf-8
__author__ = 'Scarlett'
#矩阵分解在打分预估系统中得到了成熟的发展和应用
# from pylab import *
import matplotlib.pyplot as plt
from math import pow
import numpydef matrix_factorization(R,P,Q,K,steps=5000,alpha=0.0002,beta=0.02):Q=Q.T  # .T操作表示矩阵的转置result=[]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]) # .dot(P,Q) 表示矩阵内积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=0for 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))result.append(e)if e<0.001:breakreturn P,Q.T,resultif __name__ == '__main__':
#    R=[
#        [5,3,0,1],
#        [4,0,0,1],
#        [1,1,0,5],
#        [1,0,0,4],
#        [0,1,5,4]
#    ]R=[[4., 3., 0., 5., 0.],[5., 0., 4., 4., 0.],[4., 0., 5., 0., 3.],[2., 3., 0., 1., 0.],[0., 4., 2., 0., 5.]]R=numpy.array(R)N=len(R)M=len(R[0])K=2P=numpy.random.rand(N,K) #随机生成一个 N行 K列的矩阵Q=numpy.random.rand(M,K) #随机生成一个 M行 K列的矩阵nP,nQ,result=matrix_factorization(R,P,Q,K)print("原始的评分矩阵R为:\n",R)R_MF=numpy.dot(nP,nQ.T)print("经过MF算法填充0处评分值后的评分矩阵R_MF为:\n",R_MF)#-------------损失函数的收敛曲线图---------------n=len(result)x=range(n)plt.plot(x,result,color='r',linewidth=3)plt.title("Convergence curve")plt.xlabel("generation")plt.ylabel("loss")plt.show()

矩阵分解法做推荐系统相关推荐

  1. 矩阵分析之 实矩阵分解(5)矩阵分解法总结

    矩阵分析之 实矩阵分解(5)总结 前言 特征分解(谱分解) SVD分解 LU和PLU分解 Cholesky分解(LLT,LDLT分解) 满秩分解 QR分解 使用场景推荐 前言 之前的四篇内容分别介绍了 ...

  2. 杜利特尔 (Doolittle)矩阵分解法求线性方程组的解

    简介 若方阵 A 可以分解为一个下三角矩阵 L 和一个上三角矩阵 U的乘积,即 A = LU,则这种分解称为 A 的一种三角分解或 LU分解.如果 L 为单位下三角矩阵,则称为杜利特尔 (Doolit ...

  3. lu分解法matlab_MIT 18.065—机器学习中的矩阵方法02 矩阵乘法与矩阵分解

    数据分析.信号处理和机器学习中的矩阵方法 第02讲 矩阵乘法与矩阵分解 新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~- ...

  4. 产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法)

    产品需求分析与市场分析方法汇总(SWOT+PDCA+波士顿矩阵BCG+5W2H分析法+STAR关键事件分析法+目标管理SMART+时间管理紧急重要矩阵+WBS任务分解法) 产品需求分析与市场分析方法汇 ...

  5. 矩阵的直接LU分解法

    上篇博文由高斯消去法的矩阵形式推出了矩阵的LU分解:矩阵的三角分解法: 实际上,可以直接处理矩阵,得到矩阵的LU分解,这就是矩阵的直接LU分解:直接通过矩阵的元素得到计算LU元素的递推公式,不需要任何 ...

  6. 矩阵三角分解matlab,4矩阵三角分解法.ppt

    * 一.直接法概述 直接法是将原方程组化为一个或若干个三角形 方程组的方法,共有若干种. 对于线性方程组 其中 系数矩阵 未知量向量 常数项 根据Cramer(克莱姆)法则,若 determinant ...

  7. SLAM--三角测量SVD分解法、最小二乘法及R t矩阵的判断

    目录 一.三角测量 方法一:SVD分解法的推导 方法二:最小二乘法求解 二.ORB_SLAM2 三角测量源码: 三.利用Eigen源码实现三角测量: 方法一:SVD分解法 方法二:最小二乘法求解(速度 ...

  8. Matlab | Lab4——用LU 分解法、 Jacobi 迭代、 Gauss-Seidel 迭代 解线性病态方程组(系数矩阵为Hilbert矩阵)

    1.要求 考虑线性方程组Hx=b,其中H为n阶Hilbert矩阵,即 通过先给定解(例如取x的各个分量为1),再计算出右端向量b的办法给出一个精确解已知的问题. (1)分别编写Doolittle LU ...

  9. 解线性方程组的python实现(2)——矩阵三角分解法

    解线性方程组的python实现2--矩阵三角分解法 1. 矩阵三角分解法 实现代码 2. LU分解 2.1 基本步骤 2.2 LU分解的计算公式 2.3 LU分解的结果表示 实现代码 3. 选主元的L ...

最新文章

  1. 哈佛教授对博士生的8个忠告:步入社会前,最重要是“娶一个好女孩”
  2. 小米android10怎么样,感觉小米10太贵不完美?这些Android旗舰也许就有你的菜!
  3. win7蓝屏_win7电脑蓝屏怎么办
  4. python写appium_案例分享,Python +appium做登录功能
  5. Jenkins-Gitlab配置方法
  6. 绘图解谜:公钥、私钥、证书
  7. mysql官网社区免费版下载方法
  8. Java排序算法——冒泡排序(Bubble Sort)
  9. E-Prime1.1安装教程及软件下载
  10. 常用的三款专业的OCR文字识别软件
  11. sql 的 desc和asc用法
  12. debian安装mediawiki教程
  13. 视觉伺服入门第二步:带你从经典论文阅读Visual Servo Control Part II: Advanced Approaches进阶版
  14. Android Manifest功能与权限描述大全,flutter安装androidsdk
  15. python实现erp自动化_用轻流,实现ERP的自动化工作流程
  16. kali使用笔记本自带无线网卡_生活日常(教你笔记本电脑如何正确使用WiFi)
  17. 中国移动光猫H2-3拨号模式和bridge(桥)模式
  18. 搜索技巧:最全面的检索知识讲座
  19. error LNK2019: 无法解析的外部符号 _Direct3DCreate9@4,该符号在函数 int __cdecl InitD3D(struct HWND__ *,unsigned lo
  20. 密码学-第一讲信息安全概论

热门文章

  1. 编程格式注意事项---后期慢慢补充
  2. tftp环境搭建笔记
  3. 【干货】原生js做的一维数组对象,二维数组对象的模糊查询(前端网备份)...
  4. linux6下kdump的配置
  5. ASP.NET Core 中文文档 第四章 MVC(4.2)控制器操作的路由
  6. 存储基础知识一 主要技术DAS、SAN、NAS
  7. 当Windows Vista提示“内存不足”……
  8. OSPF身份验证配置实例
  9. VS.NET中的一些拖放操作
  10. ESP8266_RTOS_SDK 之spi flash驱动小窥