使用char标签创建prtools数据集prdataset()时出错

时间:2014-11-18 18:48:26

标签: matlab statistics dataset

我在创建prtools数据集时遇到问题。 函数prdataset返回错误:

Error using prdataset (line 266)
Illegal datatype

Error in LoadData (line 35)
prdat=prdataset(data,labels,'featlab',featlab);

我检测到错误是由'标签'(第二个参数)引起的,这是一个char矩阵(见图片),应该是prdataset函数接受的类型之一(整数或字符)。

这是我的代码:

% Parameters
Nfeatures=16;
Ninstances=20000;
Ntr_inst=16000;
Ntst_inst=Ninstances-Ntr_inst;

% Load file
fid = fopen('letter-recognition.data');
parsed_file = textscan(fid,'%c%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8','delimiter',',');
fclose(fid);
data=cell2mat(parsed_file(2:Nfeatures+1));
labels=parsed_file{1};
featlab=[ ...
    'x-box'; ...    %horizontal position of box (integer)
    'y-box'; ...    %vertical position of box   (integer)
    'width'; ...    %width of box (integer)
    'hight'; ...    %height of box (integer)
    'onpix'; ...    %total # on pixels (integer)
    'x-bar'; ...    %mean x of on pixels in box (integer)
    'y-bar'; ...    %mean y of on pixels in box (integer)
    'x2bar'; ...    %mean x variance (integer)
    'y2bar'; ...    %mean y variance (integer)
    'xybar'; ...    %mean x y correlation (integer)
    'x2ybr'; ...    %mean of x * x * y (integer)
    'xy2br'; ...    %mean of x * y * y (integer)
    'x-ege'; ...    %mean edge count left to right (integer)
    'xegvy'; ...    %correlation of x-ege with y (integer)
    'y-ege'; ...    %mean edge count bottom to top (integer)
    'yegvx'; ...    %correlation of y-ege with x (integer)
];

prdat=prdataset(data,labels,'featlab',featlab);

% Separate train and test
[prtrain, prtest]=gendat(pr_data,Ntr_inst);

% Save dataset
save('letter-recognition-prdataset.mat', 'prtrain', 'prtest');

导致错误的行是prdat=prdataset(data,labels,'featlab',featlab); 图像显示标签变量的类型

enter image description here

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我终于发现了。它根本不是关于标签的。 prdataset需要double个数据。由于uint8 %u8 textscan double(data) 添加{{1}}就成了伎俩!