Matlab 创建带有字符标签的prtools数据集prdataset()时出错
我在创建prtools数据集时遇到问题。 函数prdataset返回一个错误:Matlab 创建带有字符标签的prtools数据集prdataset()时出错,matlab,statistics,dataset,Matlab,Statistics,Dataset,我在创建prtools数据集时遇到问题。 函数prdataset返回一个错误: Error using prdataset (line 266) Illegal datatype Error in LoadData (line 35) prdat=prdataset(data,labels,'featlab',featlab); 我检测到错误是由'labels'(第2个参数)引起的,它是一个字符矩阵(参见图),应该是prdataset函数接受的类型之一(是整数或字符) 这是我的代码: % P
Error using prdataset (line 266)
Illegal datatype
Error in LoadData (line 35)
prdat=prdataset(data,labels,'featlab',featlab);
我检测到错误是由'labels'(第2个参数)引起的,它是一个字符矩阵(参见图),应该是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(数据、标签、'featlab',featlab);
此图显示labels变量的类型
我做错了什么
谢谢 我终于发现了。这与标签无关。prdataset需要
double
数据。由于文本扫描中的%u8
,我有uint8
添加double(数据)
成功了