记录一下matlab实现BP算法的过程
matlab用BP算法对iris数据集进行分类
数据读取
数据就是常用的iris的鸢尾花数据,但是老师给的这个数据不是标准意义的double数据或者txt数据,所以在数据处理这里花费了一些功夫。
原始数据含有字符串和数字,类型为150*1的cell数据,如下图;
可以很明显的看到,这个数据集很难处理。涉及到分割,字符串替换和cell转化为double类型等等。一步一步来。
首先我们对数据进行分割,这里有很多分割的方法,我用的是regexp函数。代码块为:
下面展示一些
%data split
S=regexp(str,',','split');
得到的结果为:
其中的每一个1*5的cell如下图所示,这里只演示了第一个cell
然后是字符替换部分,由于最后的标签数据是字符串,而我们字符分类很麻烦,最好是转化为分类标签数据。这里一共有三类,分别为’Iris-setosa‘,’Iris-versicolor‘,’Iris-virginica‘,我们想办法将它们分成1,2,3.
这里直接上代码
for i=1:150
if strcmp(S{
i}(5), 'Iris-setosa')==1
S{
i,1}(5)={
'1'};
elseif strcmp(S{
i}(5), 'Iris-versicolor')==1
S{
i,1}(5)={
'2'};
elseif strcmp(S{
i}(5), 'Iris-virginica')==1
S{
i,1}(5)={
'3'};
end
end
好,注意到刚刚的1501cell非常不利于我们分析,这里我们想办法将其变成1505的cell,这里用了vertcat函数