【基于SVM的数据分类预测——意大利葡萄酒种类识别】的一些笔记

  • 支持向量机结构特点

 

 

 (1)测试数据:

测试数据wine,其中包含的数据为classnumber = 3,记录的是类别数目;wine:178*13的double型矩阵,记录了178个样本的13个属性;wine_labes:178*1的列向量,记录了类别标签。

  • 画出测试数据的box可视化图

%% 清空环境变量
close all;
clear;
clc;
format compact;
%% 数据提取

% 载入测试数据wine,其中包含的数据为classnumber = 3,wine:178*13的矩阵,wine_labes:178*1的列向量
load chapter_WineClass.mat;

% 画出测试数据的box可视化图
figure;
boxplot(wine,'orientation','horizontal','labels',categories);%让默认的“垂直”箱型图,变成“水平”的箱型图。
title('wine数据的box可视化图','FontSize',12);%将字体大小设置为12磅
xlabel('属性值','FontSize',12);
grid on;%显示 gca 命令返回的当前坐标区或图的主网格线。主网格线从每个刻度线延伸。

  •  画出测试数据的分维可视化图

figure    %使用默认属性值创建一个新窗口
subplot(3,5,1);
hold on %创建一个线图。使用 hold on 添加第二个线图,而不删除已有的线图。
for run = 1:178
    plot(run,wine_labels(run),'*');%第二张图里的星,plot创建 Y 中数据对 X 中对应值的二维线图
end
xlabel('样本','FontSize',10);
ylabel('类别标签','FontSize',10);
title('class','FontSize',10);
for run = 2:14
    subplot(3,5,run);
    hold on;
    str = ['attrib ',num2str(run-1)];%将数值数组转换为表示数字的字符数组,num2str 对使用数值为绘图添加标签和标题非常有用,添加标题
    for i = 1:178
        plot(i,wine(i,run-1),'*');%展示每一列
    end
    xlabel('样本','FontSize',10);
    ylabel('属性值','FontSize',10);
    title(str,'FontSize',10);
end

  • 选定训练集和测试集

% 将第一类的1-30,第二类的60-95,第三类的131-153做为训练集
train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 将第一类的31-59,第二类的96-130,第三类的154-178做为测试集
test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];

  • 数据预处理

% 数据预处理,将训练集和测试集归一化到[0,1]区间

[mtrain,ntrain] = size(train_wine);%返回长度
[mtest,ntest] = size(test_wine);

dataset = [train_wine;test_wine];
% mapminmax为MATLAB自带的归一化函数
[dataset_scale,ps] = mapminmax(dataset',0,1);%每一行处理成0到1的区间,Y是归一化得到的数据,PS是一种描述数据的结构,归一化处理得到dataset-scale
dataset_scale = dataset_scale';

train_wine = dataset_scale(1:mtrain,:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );
%% SVM网络训练
model = svmtrain(train_wine_labels, train_wine, '-c 2 -g 1');

%% SVM网络预测,对测试数据进行预测
[predict_label, accuracy] = svmpredict(test_wine_labels, test_wine, model);

%% 结果分析

  • 测试集的实际分类和预测分类图

% 通过图可以看出只有一个测试样本是被错分的
figure;
hold on;
plot(test_wine_labels,'o');
plot(predict_label,'r*');
xlabel('测试集样本','FontSize',12);
ylabel('类别标签','FontSize',12);

title('测试集的实际分类和预测分类图','FontSize',12);

grid on;
legend('实际测试集分类');
legend('预测测试集分类');

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值