SVDtest

2022年5月22日23:44:53 发表评论 346 views

 

 

 

from numpy import linalg as la
from numpy import mat
import matplotlib
import matplotlib.pyplot as plt
#共现矩阵
x=[[0,1,0,2,0,0],
   [1,0,1,0,0,0],
   [0,1,0,0,0,0],
   [2,0,0,0,1,1],
   [0,0,0,1,0,0],
   [0,0,0,1,0,0]]
#通过SVD实现分解,使用U来表征向量。
u,sigma,vt=la.svd(mat(x))
print(u)
#词的列表
x_word=[u'我',u'喜欢',u'大数据',u'爱',u'运动',u'摄影']
#画图 通过u的矩阵(前两列分别做 x y轴) 贴上word的标签
#把矩阵转换为list
u_list=u.tolist()
#print(u_list)
#中文字符展示
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family'] = 'sans-serif'
#设置x轴 y轴的范围
plt.axis([min(u_list[:1][0])-1,max(u_list[:1][0])+1,min(u_list[:2][1])-1,max(u_list[:2][1])+1])
for x,y,word in zip(u_list[:1][0],u_list[:2][1],x_word):
    plt.text(x+0.3,y+0.3,word,fontsize=10.5)
p

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: