您的位置:首页 > 编程语言 > MATLAB

matlab 稀疏张量的HOSVD 推荐系统

2016-04-25 11:04 405 查看
%初始化一个稀疏张量,默认0值

A = sptensor([122 192 189])

%从文件中读取数据

fid = fopen(‘D:\dataall201010base1.txt’);

C= textscan(fid,’%f %f %f’);

fclose(fid);

%为张量赋值

for i=1:2380

m=C{1}(i);

n=C{2}(i);

k=C{3}(i);

A(m,n,k)=1;

end

%张量展开

A1 = sptenmat(A,1);

A1 = double(A1);

%对展开矩阵进行奇异值分解,并进行减噪 (大约保留70%左右的对角矩阵)

[U1,V1,W1]=svds(A1,98);

%构建核心张量

S=ttm(A,{U1’,U2’,U3’})

%构建预测张量

B=ttm(S,{U1,U2,U3})

%将结果输出到文件中

fp = fopen(‘D:\A.txt’,’w’);

for i=1:122

for j=1:192

for k=1:189

if(A(i,j,k)>double(0))

fprintf(fp, ‘%d\t%d\t%d\t%f\n’, i,j,k,A(i,j,k));

end

end

end

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: