From bc1dc96315e9e32e9eca98abf4ef7cd872959603 Mon Sep 17 00:00:00 2001 From: jiangzhonglian Date: Thu, 6 Apr 2017 23:15:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=2014.SVD=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/python/14.SVD/svdRec.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/python/14.SVD/svdRec.py b/src/python/14.SVD/svdRec.py index a85fe180..c051a7c4 100644 --- a/src/python/14.SVD/svdRec.py +++ b/src/python/14.SVD/svdRec.py @@ -37,6 +37,7 @@ def loadExData2(): def loadExData(): + """ # 推荐引擎示例矩阵 return[[4, 4, 0, 2, 2], [4, 0, 0, 3, 3], @@ -54,7 +55,7 @@ def loadExData(): [1, 1, 0, 2, 2], [0, 0, 0, 3, 3], [0, 0, 0, 1, 1]] - """ + # 相似度计算,假定inA和inB 都是列向量 @@ -211,18 +212,18 @@ def imgCompress(numSV=3, thresh=0.8): if __name__ == "__main__": - """ + # 对矩阵进行SVD分解(用python实现SVD) Data = loadExData() + print Data U, Sigma, VT = linalg.svd(Data) # 打印Sigma的结果,因为前3个数值比其他的值大了很多,为9.72140007e+00,5.29397912e+00,6.84226362e-01 # 后两个值比较小,每台机器输出结果可能有不同可以将这两个值去掉 - # print Sigma + print Sigma # 重构一个3x3的矩阵Sig3 - # Sig3 = mat([[Sigma[0], 0, 0], [0, Sigma[1], 0], [0, 0, Sigma[2]]]) - # print U[:, :3] * Sig3 * VT[:3, :] - """ + Sig3 = mat([[Sigma[0], 0, 0], [0, Sigma[1], 0], [0, 0, Sigma[2]]]) + print U[:, :3] * Sig3 * VT[:3, :] """ # 计算欧氏距离 @@ -241,6 +242,7 @@ if __name__ == "__main__": """ + """ # 计算相似度的方法 myMat = mat(loadExData2()) # print myMat @@ -249,7 +251,6 @@ if __name__ == "__main__": # 计算相似度的第二种方式 print recommend(myMat, 1, estMethod=svdEst, simMeas=pearsSim) - """ # 默认推荐(菜馆菜肴推荐示例) print recommend(myMat, 2) """ @@ -269,5 +270,3 @@ if __name__ == "__main__": # 压缩图片 # imgCompress(2) - -