运行到子函数时提示报错:

 ===

这个断点一步步debug下来是顺利的,但是咋就超出数组范围了呢,这会是什么问题。

——sess肯定超过索引了,那个sess(:,2)的值肯定超过V的行数了。

——由右图可知:V只有1842行,而cellD里面包含的肯定不止, 看是V错了, 还是cellD错了。

V的行数是整个数据集的所有item数目没错。而cellD的行数则是训练集的所有session数。

I mean:cellD里面包含的,每次肯定只能传cellD其中的一个元胞,把cellD里面每个元胞的最大值输出, 肯定有比1842大的,那么 怎么产生的问题就在哪了。

那么:把sess(:,2)最大值输出 和V的行比较即可见分晓:

 

【原因】baseline里,原来生成的session.mat里面,userid、itemid是有重新编号的!!!按矩阵行序给userid和itemid编号的!!!

所以,回到数据预处理部分:

问题转变为:

以下rawData数据,第一列是userID,第二列是winner,第三列是loser。

现在要给它们的序号重排。userID 的序号重排是比较简单的。但是关于winner和loser这二者都是来自itemset,要将它们映射到同一个itemset,利用numunique可以操作吗?

代码文件如下:

% --userid,winner,loser
rawData=[1 2 3;
1 3 4;
1 3 5;
3 4 7;
3 4 2;
3 5 6];
%统计user数目
[userSet,p] = numunique(rawData(:,1));
for i = 1:length(userSet)
rawData(p{i},1) = i;
end
userNum = length(userSet); %统计item数目---------原先
item1 = rawData(:,2);
item2 = rawData(:,3);
allItem = [item1', item2'] %合并所有item。
% 结果为:1×12double:2 3 3 4 4 5 3 4 5 7 2 6 unique_allItem = unique(allItem) % 对所有item去重并排序。
% 结果为:unique_allItem = 2 3 4 5 6 7 ,共6个 for i =1:length(unique_allItem)
reSetAllItem (i) = i;
end
% 重新编号,从1开始。
% reSetAllItem 结果为:reSetAllItem = 1 2 3 4 5 6,共6个 itemNum = length(reSetAllItem) %利用combine矩阵,将原来的itemid与重排后的itemid对应起来。
combine = [unique_allItem',reSetAllItem']
% combine的结果为:
% combine =
% 2 1
% 3 2
% 4 3
% 5 4
% 6 5
% 7 6 %在combine矩阵查找,更新rawData的对应元素
for i = 1:length(rawData)
for j = 1:length(combine)
if rawData(i,2)==combine(j,1)
rawData(i,2) = combine(j,2);
end
if rawData(i,3)==combine(j,1)
rawData(i,3) = combine(j,2);
end
end
end
rawData
% rawData的结果为:
% rawData =
% 1 1 2
% 1 2 3
% 1 2 4
% 2 3 6
% 2 3 1
% 2 4 5

运用到原问题上,即为:

Debug 路漫漫-01的更多相关文章

  1. Debug 路漫漫-05

    Debug 路漫漫-05: 1.使用这种方式计算 AUC 指标,结果出来居然是 NAN, —— 分母为(M*N),M或者N必有一个为0 了.(nan出现的情况绝大部分是分母出现0了)   若分子为0的 ...

  2. Debug 路漫漫-03

    Debug 路漫漫-03:SVD++的 Matlab 版本 SVD++ 的 pu 这一项: 圈圈中的这一项,它既然要和pu 相加 的话 ,那么,它的维度也应该是 m*K.(就是维度和Pu一致的 . 而 ...

  3. Debug 路漫漫-15:Python: NameError:name 'dataset' is not defined

    在调试 <Outer Product-based Neural Collaborative Filtering>论文的源码(https://github.com/duxy-me/ConvN ...

  4. Debug 路漫漫-13:Python: pandas IndexError: single positional indexer is out-of-bounds

    在数据预处理过程中,出现:IndexError: single positional indexer is out-of-bounds 原因是在使用 Pandas 读取 dataframe 的时候,分 ...

  5. Debug 路漫漫-07

    201811—201903???   1)关于训练参数是复数的问题    ——q_k ^theta   q_k(是item的特征矩阵)中有可能是负数,而指数 theta 如果是含小数点的话,就会产生复 ...

  6. Debug 路漫漫-06

    FSBPR 迭代一轮就停止???…… 循环条件没有问题.. 达到收敛条件了?——参数变化小于1e-4…? deltaU =0 —— U没有更新?——incU < 0 —— 取消动量(前半部分即可 ...

  7. Debug 路漫漫-04

    1.错误使用 cat 要串联的数组的维度不一致. ——前面给个初始化即可: D = cell(length(trainIdx),1); user_itemData = cell(length(trai ...

  8. Debug 路漫漫-02

    重现标准 BTL Model ,using MATLAB: 1. 错误使用 cat要串联的数组的维度不一致.出错 cell2mat (line 83) m{n} = cat(1,c{:,n}); —— ...

  9. Debug 路漫漫-14:Python: AttributeError: module 'tensorflow' has no attribute 'sub'

    在调试 <Neural Factorization Machines for Sparse Predictive Analytics>论文的源码(https://github.com/he ...

随机推荐

  1. Mysql 高可用方案

    1 mysql分布式数据库,如 mycat https://www.cnblogs.com/zzsdream/articles/6650690.html 2 读写分离,mysql主从复制+mysql ...

  2. Android -- setWillNotDraw()

    干货 处理onDraw()方法不被执行的解决方法: setWillNotDraw(false); 官方文档的解释: If this view doesn't do any drawing on its ...

  3. 【转载】.NET/C#-uploadify视频文件or大文件上传

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章: [Asp.net]Up ...

  4. Java-Shiro(二):HelloWord

    新建项目&&配置pom.xml导入包 新建maven java project项目: 修改pom.xml: <project xmlns="http://maven.a ...

  5. colspan width issue

    [问] I'm having trouble setting fixed widths on columns which use colspan. It seems that neither IE8, ...

  6. idea缓存目录mac cache

    IDEA如果出现卡顿,Index疯狂扫描,建议清空一下如下目录 ~/Library/Caches/IntelliJIdea2017.3 Resource nexus-maven-repository- ...

  7. javascript常用的方法(二)

    //判断页面加载完毕 document.onreadystatechange = function () { if (document.readyState == "complete&quo ...

  8. javascript数组操作大全,数组方法总汇

    1. shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] ...

  9. WebStorm 之 Cordova 环境搭建

    一.环境搭建 Cordova 环境配置之前,应先下载安装 Node.js ,中文官网:http://nodejs.cn/. 以管理员身份运行 cmd 命令行工具: 1.查看 Node.js 是否已安装 ...

  10. LeetCode Linked List Cycle II 和I 通用算法和优化算法

    Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cyc ...