我有一个如下数组:
item tag
1 2
1 3
2 1
3 2
3 2
3 4
我想计算数组中每个项目的每个标记的权重。 例如,项目3的标签2的重量是0.66,而项目1的标签2的重量是0.5。 在matlab中有没有一种简单的方法可以做到这一点?
答案 0 :(得分:0)
它不是一个奇特的解决方案,但却是你需要的。
item = [
1 2
1 3
2 1
3 2
3 2
3 4
];
items = unique(item(:,1));
tags = unique(item(:,2));
ind = 0;
weights = zeros(size(items,1) * size(tags,1),3);
for idx = items'
for idx2 = tags'
ind = ind + 1 ;
weights(ind,:) = [idx,idx2,(sum(item(:,1) == idx & item(:,2) == idx2)) / sum(item(:,1) == idx)];
end
end
weights(weights(:,3) == 0,:) = [];
weights = [{'Item','Tag','Weight'};num2cell(weights)]
weights =
'Item' 'Tag' 'Weight'
[ 1] [ 2] [0.5000]
[ 1] [ 3] [0.5000]
[ 2] [ 1] [ 1]
[ 3] [ 2] [0.6667]
[ 3] [ 4] [0.3333]