read_bag_files.m

来自「Multiple INstance Learning Library」· M 代码 · 共 51 行

M
51
字号
function [bags, num_data, num_feature] = MIL_data_wrap(filename)

nbag = 0;
prev_bag_name = '';

fid = fopen(cell2mat(filenames(nfile)), 'r');
if fid == -1,
    error('The input data file is missing!');
end;

ninst = 1;
while feof(fid) == 0
    line = strtrim(fgets(fid));
    elems = strsplit(',',line);

    bag_name = cell2mat(elems(1));
    if strcmp(bag_name, prev_bag_name) == 0     %change of bag
        nbag = nbag + 1;
        bags(nbag).name = bag_name;
        bags(nbag).label = 0;                   %bag label is initialized to 0
        prev_bag_name = bag_name;
        ninst = 1;
    end

    bags(nbag).inst_name(ninst) = elems(2);

    %read in all the features for the current instance
    for i = 3 : length(elems)-1
        value = cell2mat(elems(i));
        if isempty(strfind(value, ':')) == 0
            value = value(strfind(value,':')+1 : length(value));
        end
        bags(nbag).instance(ninst, i-2) = str2num(value);
    end

    label = cell2mat(elems(length(elems)));
    if(label(length(label)) == '.'), label = label(1:length(label)-1); end;

    bags(nbag).inst_label(ninst) = str2num(label);

    %if one instance in the bag is positive,
    %the bag is set to positive
    if bags(nbag).inst_label(ninst) == 1
        bags(nbag).label = 1;
    end
    ninst = ninst + 1;
end
fclose(fid);

num_data = length(bags);
num_feature = size(bags(1).instance, 2);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?