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
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)
#
#
# pearsSim = svdRec.pearsSim(myMat[:, 0], myMat[:, 4])
# print(pearsSim)
# pearsSim = svdRec.pearsSim(myMat[:, 0], myMat[:, 0])
# print(pearsSim)

myMat[0, 1] = myMat[0, 0] = myMat[1, 0] = myMat[2, 0] = 4
myMat[3, 3] = 2

recommend = svdRec.recommend(myMat, 2)
# print(recommend)

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

imgMatrix = svdRec.imgCompress(2)
print(imgMatrix)
Example #3
0
def test6():
    myMat = mat(svdRec.loadExData3())

    print myMat
    print "-----"
    print svdRec.recommend(myMat, 2, 5, svdRec.cosSim, svdRec.svdEst)
Example #4
0
def test5():
    myMat = mat(svdRec.loadExData3())

    print myMat
    print "-----"
    print svdRec.recommend(myMat, 2)
Example #5
0
from numpy import *
import svdRec
# sig3=mat([[Sigma[0],0,0],[0,Sigma[1],0],[0,0,Sigma[2]]])
# print(U[:,:3]*sig3*VT[:3,:])

# 基于KNN协同过滤算法
myMat = mat(svdRec.loadExData())
print(svdRec.recommend(myMat, 1, simMeas=svdRec.ecludSim))

#基于svd分解的协同过滤算法
# myMat = mat(svdRec1.loadExData())
# print(svdRec1.recommend(myMat,1,estMethod=svdRec1.svdEst))
Example #6
0
conn= MySQLdb.Connect(
host = '127.0.0.1',
port = 3306,
user = '******',
passwd = '',
db = 'onethink',
charset = 'utf8'
)


myMat=mat(loadMatrixFromMysql(conn))

#print myMat

# print svdRec.ecludSim(myMat[:,0],myMat[:,1])
# print svdRec.ecludSim(myMat[:,0],myMat[:,0])

# print svdRec.cosSim(myMat[:,0],myMat[:,1])
# print svdRec.cosSim(myMat[:,0],myMat[:,0])

# print svdRec.pearsSim(myMat[:,0],myMat[:,1])
# print svdRec.pearsSim(myMat[:,0],myMat[:,0])

data=svdRec.recommend(myMat,sys.argv[1])#sys.argv[1] ,为当前用户推荐
# print svdRec.recommend(myMat,5,simMeas=svdRec.ecludSim)
# print svdRec.recommend(myMat,5,simMeas=svdRec.pearsSim)


saveToMysql(conn,data)  
conn.commit()
conn.close()
Example #7
0
import svdRec
from numpy import *
#基于奇异值分解的餐馆菜肴推荐系统
#原始数据矩阵的行为不同的顾客,列为对不同菜肴的的打分
#满分为5分,0分表示没有打分
mymat = mat(svdRec.loadExData2())
mymat[0, 1] = mymat[0, 0] = mymat[1, 0] = mymat[2, 0] = 4
mymat[3, 3] = 2
print(svdRec.recommend(mymat, 1, estMethod=svdRec.svdEst))
Example #8
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)


from numpy import linalg as la
import numpy as np
import svdRec

myMat = np.mat(svdRec.loadExData3())
# U, Sigma, VT = la.svd(myMat)
# Sig2 = Sigma ** 2
# print(sum(Sig2)*0.9)
# print(sum(Sig2[:2]))

result = svdRec.recommend(myMat, 1, estMethod=svdRec.standEst)
print(result)
result = svdRec.recommend(myMat, 1, estMethod=svdRec.svdEst)
print(result)

svdRec.imgCompress(2)
from numpy import *
import svdRec

myMat = mat(svdRec.loadExData())
test1 = svdRec.ecludSim(myMat[:, 0], myMat[:, 4])
test2 = svdRec.ecludSim(myMat[:, 0], myMat[:, 0])
print(test1, test2)
test1 = svdRec.cosSim(myMat[:, 0], myMat[:, 4])
test2 = svdRec.cosSim(myMat[:, 0], myMat[:, 0])
print(test1, test2)
test1 = svdRec.pearsSim(myMat[:, 0], myMat[:, 4])
test2 = svdRec.pearsSim(myMat[:, 0], myMat[:, 0])
print(test1, test2)

result = svdRec.recommend(myMat, 2)
print(result)
result = svdRec.recommend(myMat, 2, simMeans=svdRec.ecludSim)
print(result)
result = svdRec.recommend(myMat, 2, simMeans=svdRec.pearsSim)
print(result)
print Sigma

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

myMat = mat(svdRec.loadExData())
print svdRec.ecludSim(myMat[:,0], myMat[:,4])
print svdRec.ecludSim(myMat[:,0], myMat[:,1])
print svdRec.pearsSim(myMat[:,0], myMat[:,4])
print svdRec.pearsSim(myMat[:,0], myMat[:,1])
print svdRec.cosSim(myMat[:,0], myMat[:,4])
print svdRec.cosSim(myMat[:,0], myMat[:,1])

myMat = mat(svdRec.loadExData1())
print myMat
print svdRec.recommend(myMat, 2)
print svdRec.recommend(myMat, 2, simMeas=svdRec.ecludSim)
print svdRec.recommend(myMat, 2, simMeas=svdRec.pearsSim)

from numpy import linalg as la
U, Sigma, VT = la.svd(mat(svdRec.loadExData2()))
print Sigma
Sig2 = Sigma**2
print sum(Sig2)
print sum(Sig2)*0.9
print sum(Sig2[:2])
print sum(Sig2[:3])

myMat = mat(svdRec.loadExData2())
print svdRec.recommend(myMat, 1, estMethod=svdRec.svdEst)
print svdRec.recommend(myMat, 1, estMethod=svdRec.svdEst,simMeas=svdRec.pearsSim)
Example #12
0
# SVD implement

from numpy import *

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

import svdRec

Data = svdRec.loadExData()
U, Sigma, VT = linalg.svd(Data)
print(Sigma)  # 返回对角线的元素节省空间
print(Sigma.shape)

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

rec_image = U[:, :3] * Sig3 * VT[:3, :]
print(rec_image)

myMat = mat(svdRec.loadExData())
dis = svdRec.ecludSim(myMat[:, 0], myMat[:, 4])
print(dis)

dis = svdRec.cosSim(myMat[:, 0], myMat[:, 4])
print dis

dis = svdRec.pearsSim(myMat[:, 0], myMat[:, 4])
print dis

svdRec.recommend(myMat, 2)
Example #13
0
File: 14.py Project: niumeng07/ML
#print("Data Sigma5 ReConstruct:\n",DataWithSig5)


myMat=mat(svdRec.loadExData())
print(svdRec.ecludSim(myMat[:,0],myMat[:,4]))
print(svdRec.ecludSim(myMat[:,0],myMat[:,0]))
print(svdRec.cosSim(myMat[:,0],myMat[:,4]))
print(svdRec.cosSim(myMat[:,0],myMat[:,0]))
print(svdRec.pearsSim(myMat[:,0],myMat[:,4]))
print(svdRec.pearsSim(myMat[:,0],myMat[:,0]))

myMat=mat([[4,4,0,2,2],[4,0,0,3,3],[4,0,0,1,1],[1,1,1,2,0],
    [2,2,2,0,0],[1,1,1,0,0],[5,5,5,0,0]])
print(myMat)

recommendResult=svdRec.recommend(myMat,2)
recommendResultWithEclud=svdRec.recommend(myMat,2,simMeas=svdRec.ecludSim)
recommendResultWithPears=svdRec.recommend(myMat,2,simMeas=svdRec.pearsSim)

print(recommendResult)
print(recommendResultWithEclud)
print(recommendResultWithPears)

U,Sigma,VT=linalg.svd(mat(svdRec.loadExData2()))
print(Sigma)
Sig2=Sigma**2
print(sum(Sig2))
print(sum(Sig2)*0.9)

ResultWithSvdEst=svdRec.recommend(myMat,1,estMethod=svdRec.svdEst)
print("ResultWithSvdEst:",ResultWithSvdEst)
Example #14
0
svdRec.ecludSim(myMat[:, 0], myMat[:, 4])
svdRec.ecludSim(myMat[:, 0], myMat[:, 0])
# 余弦相似度
svdRec.cosSim(myMat[:, 0], myMat[:, 4])
svdRec.cosSim(myMat[:, 0], myMat[:, 0])
# 皮尔逊相关系数
svdRec.pearsSim(myMat[:, 0], myMat[:, 4])
svdRec.pearsSim(myMat[:, 0], myMat[:, 0])

# 示例:餐馆菜肴推荐引擎
reload(svdRec)
myMat = mat(svdRec.loadExData())
myMat[0, 1] = myMat[0, 0] = myMat[1, 0] = myMat[2, 0] = 4
myMat[3, 3] = 2
myMat
svdRec.recommend(myMat, 2)
svdRec.recommend(myMat, 2, simMeas=svdRec.ecludSim)
svdRec.recommend(myMat, 2, simMeas=svdRec.pearsSim)

# 计算SVD
from numpy import linalg as la
U, Sigma, VT = la.svd(mat(svdRec.loadExData2()))
Sigma
Sig2 = Sigma**2
sum(Sig2)
sum(Sig2) * 0.9
sum(Sig2[:2])
sum(Sig2[:3])

# SVD评分估计
reload(svdRec)
Example #15
0
svdRec.cosSim(myMat[:, 0], myMat[:, 4])  # 余弦相似度
svdRec.cosSim(myMat[:, 0], myMat[:, 0])
svdRec.pearsSim(myMat[:, 0], myMat[:, 4])  # 皮尔逊相关系数
svdRec.pearsSim(myMat[:, 0], myMat[:, 0])
'''
    *关于是用列向量还是行向量的问题*
    如果m>>n,也就是样本数大于特征数,则用列向量进行计算相似度,因为减少计算量
    如果m<<n,也就是样本数小于特征数,则用行向量进行计算相似度,也是节省
'''

reload(svdRec)
myMat = np.mat(svdRec.loadExData())
myMat[0, 1] = myMat[0, 0] = myMat[1, 0] = myMat[2, 0] = 4
myMat[3, 3] = 2
myMat
svdRec.recommend(myMat, 2)  # 用户2,未评分的商品的评分情况,元组中第一个是商品ID,第二个是评分
svdRec.recommend(myMat, 2, simMeas=svdRec.eculidSim)  # 换一下相关度计算方法
svdRec.recommend(myMat, 2, simMeas=svdRec.pearsSim)

# 利用SVD
reload(svdRec)
U, Sigma, VT = np.linalg.svd(np.mat(svdRec.loadExData2()))
Sigma
Sig2 = Sigma**2  # 查看多少个奇异值能达到总“能量”的90%
sum(Sig2)
sum(Sig2) * 0.9
sum(Sig2[:2])
sum(Sig2[:3])  # 前三个元素即可了,所以可以把11维的数据压缩成3维

reload(svdRec)
myMat = np.mat(svdRec.loadExData2())
Example #16
0
print(recommendMat)

print('recommend user2 with cosine Similarity : ')
print(svdRec.recommend(recommendMat, 2))

print('recommend user2 with euclid Similarity : ')
print(svdRec.recommend(recommendMat, 2, simMeas = svdRec.euclidSim))

print('recommend user2 with pearson Similarity : ')
print(svdRec.recommend(recommendMat, 2, simMeas = svdRec.pearsSim))
'''
'''
U, Sigma, VT = la.svd(mat(svdRec.loadExData2()))
print('Sigma of ExData2 : ')
print(Sigma)
Sig2 = Sigma ** 2
print('total power of ExData2 : ')
print(sum(Sig2))
print('90% of total power : ')
print(sum(Sig2) * 0.9)
print('estimated power from Sigma 1 to 3 : ')
print(sum(Sig2[: 3]))
'''
'''
svdMat = mat(svdRec.loadExData2())
svdRec.recommend(svdMat, 1, estMethod = svdRec.svdEst, simMeas = svdRec.pearsSim)
'''

print('SVD compress image : ')
svdRec.imgCompress(2)