Matlab 将自定义数据集与工具一起使用

Matlab 将自定义数据集与工具一起使用,matlab,Matlab,我试图使用MATLAB中的神经网络工具对对象进行分类。然而,加载数据(输入和输出)是我的问题。我已经阅读了文档中给出的示例,但无法自定义输入和输出。部分数据集如下所示,供您参考;假设数据已经标准化。如何使用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.0

我试图使用MATLAB中的神经网络工具对对象进行分类。然而,加载数据(输入和输出)是我的问题。我已经阅读了文档中给出的示例,但无法自定义输入和输出。部分数据集如下所示,供您参考;假设数据已经标准化。如何使用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];
作为缔约国:

然后排列另一组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
第一列对应小型车辆,第二列对应中型车辆,第三列对应大型车辆。您可以使用
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
作为目标。记住选择
矩阵行
,而不是
矩阵列
。右侧的摘要提供了帮助:“输入‘X’是一个18x4矩阵,表示静态数据:4个元素的18个样本”。

感谢您的深入了解。现在,如何使用经过训练的网络通过说明车辆类别来预测看不见的数据。它返回的是一个矩阵,我不明白。
y=sim(net,someNewInput)
的输出应该是一个3x1向量,其中包含该输入的网络输出。最高值为您的等级(例如,
[0.99 0.01 0]
为小型车辆)。如果这没有帮助,请提出一个新问题,详细说明您调用的函数、您的输入以及网络返回的结果(以及您的期望值)。感谢您的回答和帮助。在新车XL上使用经过培训的网络,得出以下矩阵。首先,XL=[4.3569 3.3396 4.5793 6.1457],然后,sim(净,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]。这个矩阵是什么意思?非常感谢你的帮助。