Example #1
0
def test3():
    myMat = mat(svdRec.loadExData())
    myMat[0, 1] = myMat[0, 0] = myMat[1, 0] = myMat[2, 0] = 4
    myMat[3, 3] = 2
    print myMat
    print "-----"
    print svdRec.recommend(myMat, 2)
Example #2
0
def test():
    data = svdRec.loadExData()
    U, Sigma, VT = linalg.svd(data)
    print "data"
    print data
    print " u "
    print U
    print " sigma "
    print Sigma
    print " vt "
    print VT
Example #3
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2019/3/2 13:07
# @Author  : Arrow and Bullet
# @FileName: run.py
# @Software: PyCharm
# @Blog    :https://blog.csdn.net/qq_41800366
import svdRec
from numpy import *

Data = svdRec.loadExData()
U, Sigma, VT = linalg.svd(Data)
# print(Sigma)

sig3 = mat([[Sigma[0], 0, 0], [0, Sigma[1], 0], [0, 0, Sigma[2]]])
reconData = U[:, :3] * sig3 * VT[:3, :]
# print(reconData)

myMat = mat(svdRec.loadExData())
# ecludSim = svdRec.ecludSim(myMat[:, 0], myMat[:, 4])
# print(ecludSim)
# ecludSim = svdRec.ecludSim(myMat[:, 0], myMat[:, 0])
# print(ecludSim)
#
#
# cosSim = svdRec.cosSim(myMat[:, 0], myMat[:, 4])
# print(cosSim)
# cosSim = svdRec.cosSim(myMat[:, 0], myMat[:, 0])
# print(cosSim)
#
#
Example #4
0
def test2():
    myMat = mat(svdRec.loadExData())
    print myMat
    print svdRec.ecludSim(myMat[:, 0], myMat[:, 4])
    print svdRec.cosSim(mat([[4], [2]]), mat([[1], [2]]))
    print svdRec.pearsSim(myMat[:, 0], myMat[:, 4])
Example #5
0
#coding=utf-8
import svdRec
from numpy import *
if __name__ == '__main__':
    datSet = svdRec.loadExData()
    U, Signam, VT = linalg.svd(datSet)
    print(Signam)
Example #6
0
import svdRec

if __name__ == "__main__":
    print('This is main of module "hello.py"')
    myMat = svdRec.mat(svdRec.loadExData())
    svdRec.recommend(myMat, 1, estMethod=svdRec.svdEst)
Example #7
0
    simTotal = 0.0
    ratSimTotal = 0.0
    U, Sigma, VT = np.linalg.svd(dataMat)
    Sig4 = np.mat(np.eye(4) * Sigma[:4])  # 建立对角矩阵
    xformedItems = dataMat.T * U[:, :4] * Sig4.I # 构建转换后的物品,只利用90%的奇异值
    for j in range(n):
        userRating = dataMat[user, j]
        if userRating == 0 or j==item:
            continue
        # 寻找两个用户都评级的物品
        similarity = simMeas(xformedItems[item, :].T, xformedItems[j, :].T)
        print 'the %d and %d similarity is: %f' % (item, j, similarity)
        simTotal += similarity
        ratSimTotal += similarity * userRating
    if simTotal == 0:
        return 0
    else:
        return ratSimTotal / simTotal


if __name__ == '__main__':
    myMat = np.mat(svd.loadExData())
    myMat[0, 1] = myMat[0, 0] = myMat[1, 0] = myMat[2, 0] = 4
    myMat[3, 3] = 2
    print recommend(myMat, 2, simMeas=svd.ecludSim)
    myMat = np.mat(svd.loadExData2())
    U, Sigma, VT = np.linalg.svd(myMat)
    Sig2 = Sigma ** 2
    print sum(Sig2), sum(Sig2) * 0.9
    print sum(Sig2[:3]), "3维,大于90%,可以将11维变为3维"
    print recommend(myMat, 1, estMethod=svdEst)
Example #8
0
# -*- coding: utf-8 -*-
'''
Created on 2016��12��27��

@author: Tan Zhuqing
'''

from numpy import *
'''

U,Sigma,VT=linalg.svd([[1,1],[7,7]])

print(U)
print(Sigma)
print(VT)
'''

import svdRec
Data = svdRec.loadExData()
U, Sigma, VT = linalg.svd(Data)
print(Sigma)
Example #9
0
#print U
#print
#print Sigma
#print
#print VT

#Sig3=mat([[Sigma[0], 0, 0], [0, Sigma[1], 0], [0, 0, Sigma[2]]])
#print U[:,:3]*Sig3*VT[:3,:]

'''
myMat = mat(svdRec.loadExData())
myMat[0,1]=myMat[0,0]=myMat[1,0]=myMat[2,0]=4
myMat[3,3]=2
print myMat
print
print svdRec.recommend(myMat, 2)
#print
#print svdRec.recommend(myMat, 2, simMeas=svdRec.ecludSim)
#print
#print svdRec.recommend(myMat, 2, simMeas=svdRec.pearsSim)
'''


#myMat = mat(svdRec.loadExData2())
myMat = mat(svdRec.loadExData())
print myMat
print svdRec.recommend(myMat, 1, estMethod=svdRec.svdEst)


Example #10
0
"""
Created on Wed May 17 17:31:05 2017

@author: 凯风
"""

import numpy as np
from imp import reload
import svdRec

# SVD的矩阵分解,Data(m*n) = U(m*m) * Σ(m*n) * V^T(n*n)
U, Sigma, VT = np.linalg.svd([[1, 1], [7, 7]])
U
Sigma  # 为啥不是2*2呢?因为Σ除了对角线外都是0,这样子可以节省空间吧
VT
data = svdRec.loadExData()
U, Sigma, VT = np.linalg.svd(data)  # 在一个稍微大点的数据集上看看效果
Sigma
# 前三个数值明显大于后两个,数量及上差太多了~
# 所以呢?原数据集可以用Data(m*n) = U(m*3) * Σ(3*3) * V^T(3*n) 来近似?
Sig3 = np.mat([[Sigma[0], 0, 0], [0, Sigma[1], 0], [0, 0, Sigma[2]]])
U[:, :3] * Sig3 * VT[:3, :]  # 之后就用这个了?

reload(svdRec)
myMat = np.mat(svdRec.loadExData())
# 以下都是查看列向量的相似度
svdRec.eculidSim(myMat[:, 0], myMat[:, 4])  # 欧氏距离
svdRec.eculidSim(myMat[:, 0], myMat[:, 0])
svdRec.cosSim(myMat[:, 0], myMat[:, 4])  # 余弦相似度
svdRec.cosSim(myMat[:, 0], myMat[:, 0])
svdRec.pearsSim(myMat[:, 0], myMat[:, 4])  # 皮尔逊相关系数
Example #11
0
import svdRec

#分解与重构

def loadExData():
	return [ 
	               [1 ,1 ,1 ,0 ,0 ],
	               [2 ,2 ,2 ,0 ,0 ],
                            [1 ,1 ,1 ,0 ,0 ],
                            [5 ,5 ,5 ,0 ,0 ],
                            [1 ,1 ,0 ,2 ,2 ],
                            [0 ,0 ,0 ,1 ,1]
                         ]

Data = svdRec.loadExData()
U,Sigma,VT = linalg.svd(Data)

Sig3 = mat( [   
	           [Sigma[0] ,0 ,0 ] ,   
	           [0 ,Sigma[1] ,0 ] ,
	           [0 ,0 ,Sigma[2] ] 
	       ] )

Data_Rec = U[: , :3] *Sig3*VT[:3, :]

print  Data_Rec