我在创建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);
图像显示标签变量的类型
我做错了什么?
谢谢!
答案 0 :(得分:0)
我终于发现了。它根本不是关于标签的。 prdataset需要double
个数据。由于uint8
%u8
textscan
double(data)
添加{{1}}就成了伎俩!