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