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

技术标签: matlab  人工智能  

  • 支持向量机结构特点

 

 

 (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('预测测试集分类');

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41582490/article/details/120175431

智能推荐

matlab 网络最短路径,matlab网络最短路径-程序员宅基地

文章浏览阅读1k次。最短路线可由 rij 得到。 2.3 用 matlab 程序实现上述算法编写程序...C OLUMNS 特别企划 基于遗传算法的最短路径问题及其 MATLAB实现文/张书源 郭聪 前言在现实生活中,我们经常遇到最 短路问题,例如寻找两点之间总长度最 短或者费用最低的路径。在运输、物流、设施选址以及人员调度问题中,最 短路径是很......Floyd算法求平均最短路径(matlab)_计算机软件及应..._存在某网络图,其各顶点之间的路径单位运费和各路径的容量最小费用matlab代码

npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.-程序员宅基地

文章浏览阅读3.5k次,点赞16次,收藏13次。再次执行npm install ***,还不行可以尝试设置你的npm镜像源为http开头的,不使用https。npm install时报错code CERT_HAS_EXPIRED。这就说:npm的证书失效了,它不再支持自签名证书。发现我们之前配置了下载镜像源为https开头的,执行命令清除npm缓存。执行命令取消ssl验证。_npm err! code cert_has_expired npm err! errno cert_has_expired npm err! requ

鸿蒙HarmonyOS应用开发之Node-API常见问题,HarmonyOS鸿蒙面试试题-程序员宅基地

文章浏览阅读889次,点赞21次,收藏14次。4.鸿蒙开发系统底层方向。1.项目开发必备面试题。5.鸿蒙音视频开发方向。6.鸿蒙车载开发方向。7.鸿蒙南向开发方向。

Linux下RPM软件包的安装及卸载-程序员宅基地

文章浏览阅读2.7k次。2019独角兽企业重金招聘Python工程师标准>>> ..._ql80-community-release-el7-3.noarch.rpm:不更新已安装的软件包。

腾讯云frp连接失败。login to server failed: dial tcp x:7000: connectex: A connection attempt failed because-程序员宅基地

文章浏览阅读8.2w次,点赞14次,收藏34次。地址:https://github.com/fatedier/frp简介:一个高效的反向代理:A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.最全面的官方教程文档:https://gofrp.org自我记录:a、使用TCP代理,开启本地服务器的访问。Linux服务器启动 frps命令:nohup ./frps -c frps.ini(无挂起启动命令。可以_login to server failed: dial tcp

在WPF TreeView中使用复选框_vfp treeview复选框-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏8次。本文回顾了一个WPFTreeView,其项目包含复选框。每个项目都绑定到一个ViewModel对象。当ViewModel对象的检查状态发生变化时,它会将简单的规则应用于其父项和子项的检查状态。本文还展示了如何使用附加行为概念将一个TreeViewItem变为虚拟ToggleButton,这有助于使TreeView的键盘交互简单直观。_vfp treeview复选框

随便推点

重复测量数据多重填补 SAS code_mmrm模型-程序员宅基地

文章浏览阅读4.6k次,点赞2次,收藏33次。sas code 对多次访视数据进行多重填补_mmrm模型

HashMap和HashSet-程序员宅基地

文章浏览阅读5.6k次,点赞7次,收藏28次。HashMap和HashSet的区别与联系_hashmap和hashset

mysql集群搭建与总结_mysql 不同端口组成集群-程序员宅基地

文章浏览阅读3.2k次,点赞8次,收藏47次。文章目录1.主从复制好久没写博客了,最近做了分布式的项目,调查和搭建了mysql集群,踩坑无数,特此记录。1.主从复制主从复制是最简单的mysql集群,_mysql 不同端口组成集群

Cobalt Strike 的安装与简单使用_cobalt strike客户端英文怎么改成中文-程序员宅基地

文章浏览阅读3k次,点赞8次,收藏34次。一、什么是Cobalt StrikeCobalt Strike 是一个为对手模拟和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁者的后渗透行动。二、如何使用Cobalt Strike 分为服务器端和客户端(在同一压缩文件中,知识运行的文件不同),服务器端必须要在受支持的 linux 系统上运行,客户端可在 windows/linux/mac 系统上运行1.在 kali2021.1 中运行服务器端进入 cobaltstrike 目录下,运行 ./teamserver# ./teams_cobalt strike客户端英文怎么改成中文

[USF-XSim-62] 'elaborate' step failed with error(s).使用vivado进行verilog实验,无法进行仿真,如何解决?-程序员宅基地

文章浏览阅读6.9w次,点赞25次,收藏41次。我之前用的vivado2014.3后来用的vivado2015.03,在Windows10操作系统上,想要仿真的时候报如下类似错误[USF-XSim 62] 'elaborate' step failed with error(s). Please check the Tcl console output or 'D:/lirongcui/learning/cameralink_dri_[usf-xsim-62] 'elaborate' step failed with error(s). please check the tcl co

Java实现AES-128-CBC算法加解密_java aes解密方式(aes-128-cbc)-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏13次。AES加解密工具类import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List..._java aes解密方式(aes-128-cbc)

推荐文章

热门文章

相关标签