首页 > 分享 > 基于SVM的鸢尾花数据集回归分析

基于SVM的鸢尾花数据集回归分析

目录 1. 作者介绍 2. SVM支持向量机算法 2.1 鸢尾花数据集 2.2 鸢尾花数据集可视化 2.2.1 散点图 2.2.2 箱型图 2.2.3 三维散点图(3D) 3. SVM算法实现 3.1 完整代码 3.2 运行结果 3.3 问题与分析

1. 作者介绍

张佳伦,男,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:1091418175@qq.com

陈梦丹,女,西安工程大学电子信息学院,2022级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1169738496@qq.com

2. SVM支持向量机算法

支持向量机(Support Vector Machine, SVM),其决策边界是对学习样本求解的最大边距超平面。

图(1)为决策边界与支持向量。
在这里插入图片描述

图(2)为软间隔与硬间隔
在这里插入图片描述
SVM可以通过核技巧(kernel Trick)进行非线性分类,是常见的核学习(kernel learning)方法之一。
在这里插入图片描述
常见的核函数:

Rbf高斯核函数:
在这里插入图片描述
Sigmoid核函数:
在这里插入图片描述

2.1 鸢尾花数据集

在这里插入图片描述
利用.info()查看数据集的整体信息,可以查看到数据集的标签种类以及对应的标签名称与标签个数。

# 使用.info()查看数据的整体信息 iris_features.info()

python

运行

12

在这里插入图片描述
利用.value_counts()查看数据集样本的种类,可以查看到数据集对应样本种类的编号和对应样本个数。
在这里插入图片描述

2.2 鸢尾花数据集可视化

2.2.1 散点图

合并标签和特征信息,将数据集的标签特征与样本种类结合起来进行二维的可视化分布。如鸢尾花数据集有四个特征标签以及三种样本种类,将三种样本种类分布,分别映射到对应的二维特征坐标中。且当坐标对应为同一纬度时,及可视各个样本在本纬度对应的分布数量。可以在各个纬度的二维组合下观察到每个样本的特征分布。

# 合并标签和特征信息 iris_all = iris_features.copy() ##进行浅拷贝,防止对于原始数据的修改 iris_all['target'] = iris_target sns.pairplot(data=iris_all,diag_kind='hist', hue= 'target') # 特征与标签组合的散点可视化 plt.show()

python

运行

12345

在这里插入图片描述

2.2.2 箱型图

箱线图是针对单个特征纬度的样本种类分布,通过箱线图即可方便的观察到数据集在某个单一特征下,样本种类的一维特征分布以及各个样本种类之间的可分离度。

for col in iris_features.columns: sns.boxplot(x='target', y=col, saturation=0.5,palette='pastel', data=iris_all) plt.title(col) plt.show()

python

运行

1234

在这里插入图片描述

2.2.3 三维散点图(3D)

选取其三个特征绘制三维散点图。根据选中的三个纬度的特征即可对数据集中的样本种类进行三维建模。通过改变选中的三个特征,和根据箱线图的单一纬度特征的样本可分离度,可以在不同的特征纬度下对数据集进行3D建模,并得到分离度最高的3D建模结果。

# 选取其前三个特征绘制三维散点图 from mpl_toolkits.mplot3d import Axes3D fig = plt.figure(figsize=(10,8)) ax = fig.add_subplot(111, projection='3d') iris_all_class0 = iris_all[iris_all['target']==0].values iris_all_class1 = iris_all[iris_all['target']==1].values iris_all_class2 = iris_all[iris_all['target']==2].values # 'setosa'(0), 'versicolor'(1), 'virginica'(2) ax.scatter(iris_all_class0[:,0], iris_all_class0[:,1], iris_all_class0[:,2],label='setosa') ax.scatter(iris_all_class1[:,0], iris_all_class1[:,1], iris_all_class1[:,2],label='versicolor') ax.scatter(iris_all_class2[:,0], iris_all_class2[:,1], iris_all_class2[:,2],label='virginica') plt.legend() plt.show()

python

运行

1234567891011121314

在这里插入图片描述

3. SVM算法实现

3.1 完整代码

import numpy as np import pandas as pd import pylab from sklearn import datasets from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn

python

运行

123456

相关知识

基于svm的鸢尾花数据集分类
鸢尾花、葡萄酒分类数据集
鸢尾花数据集可视化与机器学习模型评估
【视觉算法—图像分类】基于SVM实现鸢尾花数据集分类
MATLAB实现鸢尾花数据集的支持向量机(SVM)分类
鸢尾花数据集深度分析:机器学习的入门实践
【Pytorch】新手入门:基于sklearn实现鸢尾花数据集的加载
利用SVM分类算法解析鸢尾花数据集
鸢尾花(iris)数据集分析
对鸢尾花数据集和月亮数据集,分别采用LDA、k

网址: 基于SVM的鸢尾花数据集回归分析 https://m.huajiangbk.com/newsview2508863.html

所属分类:花卉
上一篇: 使用Python实现线性支持向量
下一篇: 头歌实践平台:机器学习——支持向