iris数据集的读取,训练,预测

来源:互联网 发布:新网域名代理平台 编辑:程序博客网 时间:2024/04/24 11:19

一 读取UCI数据集iris.data中数据方法

1.将数据分成五组,一列一列读进列向量当中

>> [attrib1, attrib2, attrib3, attrib4, class] = textread('data\iris.data', '%f%f%f%f%s', 'delimiter', ',');

 

2.将前面的4组浮点型数据,整合进一个矩阵当中,成为一个column_length*4类型的矩阵

>> attrib = [attrib1; attrib2; attrib3; attrib4];

注:另外一种形式

    >> attrib = [attrib1'; attrib2'; attrib3'; attrib4']';

    作用: 

3.创建一个1*150的矩阵列向量,初始化为0

>> a = zeros(150, 1);

 

4.对照字符串向量class<存储的是花的类别>,对应三种花类型保存相应类型数字

>> a(strcmp(class, 'Iris-setosa')) = 1;

>> a(strcmp(class, 'Iris-versicolor')) = 2;

>> a(strcmp(class, 'Iris-virginica')) = 3;

至此,属性值均保存到attrib中,类别值保存到数组a中。

 

二 将数据集划分为训练集和测试集

1. 训练集的读取<每组数据40个>

>> train_label = a([1:40 51:90 101:140],end);

//[]里指的是截取相应行,第二维的end指的是取最后一列,此处label仅有一列,也即取所有列

>> train_data = attrib([1:40 51:90 101:140],1:end);

//[]意义同上,第二维即是,取第1到end列,也即是所有列

 

2.测试集的读取<每组数据10个>

>> test_label = a([41:50 91:100 141:150],end);

>> test_data = attrib([41:50 91:100 141:150],1:end);

三 建立模型训练并预测

>> model = svmtrain(train_label,train_data);

>> [predict,accuracy,pp] = svmpredict(test_label,test_data,model,'-q');<版本问题,libsvm3.17,需要加入pp,'-q'的版本>

四  实验结果


参照:http://www.cnblogs.com/tornadomeet/archive/2012/06/04/2534939.html


0 0
原创粉丝点击