Java实现鸢尾花分类,基于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')

Java实现鸢尾花分类,基于SVM的鸢尾花数据集分类实现[使用Matlab]_第1张图片

曲线为根据花萼长度、花萼宽度、花瓣长度、花瓣宽度之间的关系绘制的散点图。

训练集与测试集:

%% 训练集--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

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 ...

做一个logitic分类之鸢尾花数据集的分类

做一个logitic分类之鸢尾花数据集的分类 Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例.数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都 ...

实验一 使用sklearn的决策树实现iris鸢尾花数据集的分类

使用sklearn的决策树实现iris鸢尾花数据集的分类 要求: 建立分类模型,至少包含4个剪枝参数:max_depth.min_samples_leaf .min_samples_split.max ...

机器学习——logistic回归,鸢尾花数据集预测,数据可视化

0.鸢尾花数据集 鸢尾花数据集作为入门经典数据集.Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理.Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数 ...

随机推荐

vue.js的一些知识点

1.

你可能感兴趣的:(Java实现鸢尾花分类)