2015-10-05 66 views
-1

我试图在MATLAB中使用神经网络'nprtool分类对象。但是,加载数据(输入和输出)是我的问题。我已经通过文档中的给定示例,但无法定制输入和输出。部分数据集在下面给出供您参考;假定数据已经正常化。如何使用MATLAB神经网络工具箱nprtool和这些自定义数据?使用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]; 

回答

0

由于MATLAB documentation状态:

然后让他们指示其输入向量分配

这里班安排另一组Q个目标矢量的,我们需要一个如果训练样本属于那个类别,则目标向量是的集合Q=3。在你的例子中,目标矩阵看起来像这样:

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 

第一列对应于小型,第二到中型和第三到大型车辆。您可以通过使用cellfun比较条目到字符串'smallvehicle'等产生,从现有的单元阵列Y这个矩阵:

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矩阵,代表静态数据:4个元素的18个样本”。

+0

感谢您的洞察。现在,如何通过陈述车辆的类别来使用训练的网络来预测未见的数据。它正在返回一个矩阵,而我不明白。 –

+0

'y = sim(net,someNewInput)'的输出应该是一个3x1向量,它包含这个输入的网络输出。最高值将是你的班级(例如'[0.99 0.01 0]'将是一辆小型车辆)。如果这没有帮助,请提出一个新问题,详细说明您打电话的功能,您的输入是什么以及净收益(以及您的期望)。 – hbaderts

+0

感谢您的回应和帮助。在一辆新车上使用训练有素的网络XL,给出了以下矩阵。首先XL = [4.3569 3.3396 4.5793 6.1457],那么,sim(net,XL)= [0.0000 0.0000 0.0000 0.0000; 0.0845 0.1116 0.0773 0.0288; 0.9155 0.8884 0.9227 0.9712]。这个矩阵是什么意思?非常感谢您的帮助。 –