使用自定义数据集与nprtool

时间:2015-10-05 13:06:51

标签: matlab

我试图在MATLAB中使用神经网络nprtool来分类对象。但是,加载数据(输入和输出)是我的问题。我已经阅读了文档中给出的示例,但无法自定义输入和输出。下面给出了部分数据集供您参考;假设数据已经标准化。如何使用MATLAB神经网络工具箱nprtool和这些自定义数据?

% Small vehicles
XS1 = 1.0e+03 *[3.2730    0.0712    0.0614        5.1480]; % frame 167
XS2 = 1.0e+03 *[4.4680    0.0869    0.0668        6.2370];% frame 555
XS3 = 1.0e+03 *[2.5450    0.0742    0.0659        4.6900]; % frame 780
XS4 = 1.0e+03 *[1.9830    0.0617    0.0477        2.9680]; % frame 826
XS5 = 1.0e+03 *[2.9090    0.0630    0.0610        4.1600]; % frame 880
XS6 = 1.0e+03 *[3.8460    0.0797    0.0640        5.6700]; % frame 1283

% Medium vehicles
XM1 = 1.0e+03 *[4.7770    0.0981    0.0663        6.9560]; % frame 167
XM2 = 1.0e+03 *[5.1050    0.0997    0.0678        7.4460]; % frame 430
XM3 = 1.0e+03 *[4.0240    0.0846    0.0619        5.4780]; % frame 2020
XM4 = 1.0e+03 *[6.9750    0.1165    0.0794        9.6280]; % frame 2982
XM5 = 1.0e+03 *[5.2040    0.1063    0.0652        7.0810]; % frame 3081
XM6 = 1.0e+03 *[3.2830    0.0733    0.0645        4.6080]; % frame 4314

% Large vehicles
XL1 = 1.0e+04 *[1.0092    0.0148    0.0089        1.4948]; % frame 1340
XL2 = 1.0e+04 *[0.9351    0.0129    0.0096        1.2444]; % frame 1375
XL3 = 1.0e+04 *[0.6021    0.0141    0.0095        1.5096]; % frame 1625
XL4 = 1.0e+04 *[0.8734    0.0143    0.0086        1.1868]; % frame 1679
XL5 = 1.0e+04 *[1.0773    0.0141    0.0100        1.4933]; % frame 2204
XL6 = 1.0e+04 *[0.8491    0.0118    0.0097        1.0556]; % frame 3535

% CONCATANATING THE OBJECT FEATURES
XS = [XS1;XS2;XS3;XS4;XS5;XS6];
XM = [XM1;XM2;XM3;XM4;XM5;XM6];
XL = [XL1;XL2;XL3;XL4;XL5;XL6];

%  inputs matrix
X = [XS;XM;XL];

%% OUTPUTS
YS ={'smallvehicle';'smallvehicle';'smallvehicle';'smallvehicle';'smallvehicle';'smallvehicle'};
YM ={'mediumvehicle';'mediumvehicle';'mediumvehicle';'mediumvehicle';'mediumvehicle';'mediumvehicle'};
YL ={'largevehicle';'largevehicle';'largevehicle';'largevehicle';'largevehicle';'largevehicle'};

% outputs matrix
Y = [YS;YM;YL];

1 个答案:

答案 0 :(得分:0)

正如MATLAB documentation所述:

  

然后排列另一组Q目标向量,以便它们指示输入向量被分配到的类

在这里,我们需要一组Q=3目标向量,如果训练样本属于该类,则为1。在您的示例中,目标矩阵如下所示:

T =

     1     0     0
     1     0     0
     1     0     0
     1     0     0
     1     0     0
     1     0     0
     0     1     0
     0     1     0
     0     1     0
     0     1     0
     0     1     0
     0     1     0
     0     0     1
     0     0     1
     0     0     1
     0     0     1
     0     0     1
     0     0     1

第一列对应小型,第二列对应中型,第三列对应大型车辆。您可以使用Y从现有单元格数组cellfun生成此矩阵,以将条目与字符串'smallvehicle'进行比较,依此类推:

T = [ cellfun(@(x)strcmp(x,'smallvehicle'),Y)   , ...
      cellfun(@(x)strcmp(x,'mediumvehicle'),Y)  , ...
      cellfun(@(x)strcmp(x,'largevehicle'),Y)   ];

然后你可以开始

nprtool

并使用X作为输入,T作为目标。请务必选择Matrix Rows而不是Matrix columns。右边的摘要有助于:"输入' X'是一个18x4矩阵,表示静态数据:18个4个元素的样本"。