基于SVM的鸢尾花数据集分类实现[使用Matlab]
iris数据集的中文名是安德森鸢尾花卉数据集,英文全称是Anderson’s Iris data set。iris包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,所以iris数据集是一个150行5列的二维表。通俗地说,iris数据集是用来给花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征(前4列),我们需要建立一个分类器,分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾(这三个名词都是花的品种)。
数据的获取:
file=importdata('iris.csv');%读取csv文件中从第R-1行,第C-1列的数据开始的数据
data=file.data;
features=data(:,:);%特征列表
classlabel=data(:,);%对应类别
n = randperm(size(features,));%随机产生训练集和测试集
绘制散点图查看数据:
%% 绘制散点图
class_0 = find(data(:,)==);
class_1 = find(data(:,)==);
class_2 = find(data(:,)==);%返回类别为2的位置索引
subplot(,,)
hold on
scatter(features(class_0,),features(class_0,),'x','b')
scatter(features(class_1,),features(class_1,),'+','g')
scatter(features(class_2,),features(class_2,),'o','r')
subplot(,,)
hold on
scatter(features(class_0,),features(class_0,),'x','b')
scatter(features(class_1,),features(class_1,),'+','g')
scatter(features(class_2,),features(class_2,),'o','r')
subplot(,,)
hold on
scatter(features(class_0,),features(class_0,),'x','b')
scatter(features(class_1,),features(class_1,),'+','g')
scatter(features(class_2,),features(class_2,),'o','r')
subplot(,,)
hold on
scatter(features(class_0,),features(class_0,),'x','b')
scatter(features(class_1,),features(class_1,),'+','g')
scatter(features(class_2,),features(class_2,),'o','r')
subplot(,,)
hold on
scatter(features(class_0,),features(class_0,),'x','b')
scatter(features(class_1,),features(class_1,),'+','g')
scatter(features(class_2,),features(class_2,),'o','r')
subplot(,,)
hold on
scatter(features(class_0,),features(class_0,),'x','b')
scatter(features(class_1,),features(class_1,),'+','g')
scatter(features(class_2,),features(class_2,),'o','r')

曲线为根据花萼长度、花萼宽度、花瓣长度、花瓣宽度之间的关系绘制的散点图。
训练集与测试集:
%% 训练集--70个样本
train_features=features(n(:),:);
train_label=classlabel(n(:),:);
%% 测试集--30个样本
test_features=features(n(:end),:);
test_label=classlabel(n(:end),:);
数据归一化:
%% 数据归一化
[Train_features,PS] = mapminmax(train_features');
Train_features = Train_features';
Test_features = mapminmax('apply',test_features',PS);
Test_features = Test_features';
使用SVM进行分类:
%% 创建/训练SVM模型
model = svmtrain(train_label,Train_features);
%% SVM仿真测试
[predict_train_label] = svmpredict(train_label,Train_features,model);
[predict_test_label] = svmpredict(test_label,Test_features,model);
%% 打印准确率
compare_train = (train_label == predict_train_label);
accuracy_train = sum(compare_train)/size(train_label,)*;
fprintf('训练集准确率:%f\n',accuracy_train)
compare_test = (test_label == predict_test_label);
accuracy_test = sum(compare_test)/size(test_label,)*;
fprintf('测试集准确率:%f\n',accuracy_test)
结果:
*
optimization finished, #iter = 18
nu = 0.668633
obj = -21.678546, rho = 0.380620
nSV = 30, nBSV = 28
*
optimization finished, #iter = 29
nu = 0.145900
obj = -3.676315, rho = -0.010665
nSV = 9, nBSV = 4
*
optimization finished, #iter = 21
nu = 0.088102
obj = -2.256080, rho = -0.133432
nSV = 7, nBSV = 2
Total nSV = 40
Accuracy = 97.1429% (68/70) (classification)
Accuracy = 97.5% (78/80) (classification)
训练集准确率:97.142857
测试集准确率:97.500000
基于SVM的鸢尾花数据集分类实现[使用Matlab]的更多相关文章
- Python实现鸢尾花数据集分类问题——基于skearn的SVM
Python实现鸢尾花数据集分类问题——基于skearn的SVM 代码如下: # !/usr/bin/env python # encoding: utf-8 __author__ = 'Xiaoli ...
- Python实现鸢尾花数据集分类问题——基于skearn的NaiveBayes
Python实现鸢尾花数据集分类问题——基于skearn的NaiveBayes 代码如下: # !/usr/bin/env python # encoding: utf-8 __author__ = ...
- Python实现鸢尾花数据集分类问题——基于skearn的LogisticRegression
Python实现鸢尾花数据集分类问题——基于skearn的LogisticRegression 一. 逻辑回归 逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题, ...
- python实现HOG+SVM对CIFAR-10数据集分类(上)
本博客只用于学习,如果有错误的地方,恳请指正,如需转载请注明出处. 看机器学习也是有一段时间了,这两天终于勇敢地踏出了第一步,实现了HOG+SVM对图片分类,具体代码可以在github上下载,http ...
- Python实现鸢尾花数据集分类问题——使用LogisticRegression分类器
. 逻辑回归 逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法. 概率p与因变量往 ...
- ML学习笔记之XGBoost实现对鸢尾花数据集分类预测
import xgboost as xgb import numpy as np import pandas as pd from sklearn.model_selection import tra ...
- 基于SKLearn的SVM模型垃圾邮件分类——代码实现及优化
一. 前言 由于最近有一个邮件分类的工作需要完成,研究了一下基于SVM的垃圾邮件分类模型.参照这位作者的思路(https://blog.csdn.net/qq_40186809/article/det ...
- 做一个logitic分类之鸢尾花数据集的分类
做一个logitic分类之鸢尾花数据集的分类 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例.数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都 ...
- 实验一 使用sklearn的决策树实现iris鸢尾花数据集的分类
使用sklearn的决策树实现iris鸢尾花数据集的分类 要求: 建立分类模型,至少包含4个剪枝参数:max_depth.min_samples_leaf .min_samples_split.max ...
随机推荐
- .net core高性能通讯开源组件BeetleX
BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便.性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的T ...
- Java基础14:离开IDE,使用java和javac构建项目
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- Chapter 5 Blood Type——10
"What?" “什么?” "Your boyfriend seems to think I'm being unpleasant to you — he's debat ...
- 【ASP.NET Core快速入门】(十六)MVC开发:DbContextSeed初始化
前言 由于我们现在每次EF实体模型变化的时候每次都是手动更改,我们想通过代码的方式让他自动更新,或者程序启动的时候添加一些数据进去 DbContextSeed初始化 首先,在Data文件夹下添加一个A ...
- 云原生实践之 RSocket 从入门到落地:Servlet vs RSocket
技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广. 本期开始,我们推出<RSocket 从入门到落地>系列文章,通过实例和对比来介绍RSocket.主要围 ...
- 超级账本fabric原理之gossip详解
Goosip协议 去中心化.容错和最终一致性的算法 信息达到同步的最优时间:log(N). 功能: 节点发现 数据广播 gossip中有三种基本的操作: push - A节点将数据(key,value ...
- Linux之数据库操作
一.mysql基本操作 ,连接数据库 mysql -u root -p -h 127.0.0.1 mysql -u root -p -h 192.168.12.56 ,授予远程连接的权限 grant ...
- LeetCode数组解题模板
一.模板以及题目分类 1.头尾指针向中间逼近 ; ; while (pos1<pos2) { //判断条件 //pos更改条件 if (nums[pos1]<nums[pos2]) pos ...
- 【转】java缩放图片、java裁剪图片代码工具类
一首先看下效果 二工具类 三测试类 在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统 ...
- MySQL 笔记整理(8.b) --事务到底是隔离还是不隔离的?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 8.a) --事务到底是隔离还是不隔离的? 本周工作较忙,加上懒惰,拖更 ...