资源简介

对iris数据集进行分类,基于lssvm,用matlab编写,里面有代码运行图,可以直接运行。里面还有lsssvm工具箱函数,不用另下lssvm工具箱。打开iris.m就可以直接运行。

资源截图

代码片段和文件信息

%基于SVM的iris数据辨识
clear;
clc;
A=load(‘irisdata.txt‘);  %导入数据
data = A(:1:4);      %1—4列数据是鸢尾花的4个特征:花萼和花瓣的长度和宽度
labels = A(:5);        %最后一列是属性标签。1代表山鸢尾(iris-setosa),
                       %2代表变色鸢尾(iris-versicolor),3代表维吉尼亚鸢尾(iris-virginica)

%将第一类的1-20第二类的51-70第三类的101-120做为训练集
train_iris=[data(1:20:);data(51:70:);data(101:120:)];
%相应的训练集的标签也要分离出来
train_iris_labels = [labels(1:20);labels(51:70);labels(101:120)];

%将第一类的21-50第二类的71-100第三类的121-150做为测试集
test_iris=[data(21:50:);data(71:100:);data(121:150:)];

%相应的测试集的标签也要分离出来
test_iris_labels = [labels(21:50);labels(71:100);labels(121:150)];

%数据预处理  将训练集和测试集进行归一化处理  归一化到[01]区间
[mtrainntrain] = size(train_iris);
[mtestntest] = size(test_iris);
dataset = [train_iris;test_iris];
% mapminmax为MATLAB自带的归一化函数                       
[dataset_scaleps] = mapminmax(dataset‘01)
dataset_scale = dataset_scale‘;

train_iris = dataset_scale(1:mtrain:);
test_iris = dataset_scale( (mtrain+1):(mtrain+mtest): );

% SVM网络训练
model = svmtrain(train_iris_labels train_iris ‘-c 2 -g 1‘);



%% SVM网络预测
[predict_labelaccuracy] = svmpredict(test_iris_labelstest_irismodel);


figure;
hold on;
plot(test_iris_labels‘o‘);
plot(predict_label‘r*‘);
xlabel(‘测试集样本‘‘FontSize‘12);
ylabel(‘类别标签‘‘FontSize‘12);
legend(‘实际测试集分类‘‘预测测试集分类‘);
title(‘测试集的实际分类和预测分类图‘‘FontSize‘12);
grid on;
snapnow;





 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1637  2018-03-27 11:14  iris12\iris.m

     文件       8924  2016-12-27 19:57  iris12\iris.png

     文件       2850  2016-12-27 16:58  iris12\irisdata.txt

     文件       1628  2018-03-27 10:53  iris\iris.m

     文件       8924  2016-12-27 19:57  iris\iris.png

     文件       2850  2016-12-27 16:58  iris\irisdata.txt

     目录          0  2018-03-19 18:53  iris12

     目录          0  2018-03-19 18:53  iris

----------- ---------  ---------- -----  ----

                26813                    8


评论

共有 条评论