计算matlab中每个项目的每个标记的权重

时间:2015-08-04 17:51:29

标签: arrays matlab

我有一个如下数组:

 item   tag
 1      2
 1      3
 2      1
 3      2
 3      2
 3      4

我想计算数组中每个项目的每个标记的权重。 例如,项目3的标签2的重量是0.66,而项目1的标签2的重量是0.5。 在matlab中有没有一种简单的方法可以做到这一点?

1 个答案:

答案 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]