支持向量机算法之鸢尾花特征分类【机器学习】
文章目录
- 一.前言
- 1.1 本文原理
- 1.2 本文目的
- 二.实验过程
- 2.1 支持向量机算法SVM
- 2.2List item使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类;
- 2.3 使用scikit-learn机器学习包的支持向量机算法,设置SVM对象的参数,包括kernel、gamma和C,分别选择一个特征、两个特征、三个特征,写代码对鸢尾花进行分类;
- 2.3.1 使用一个特征对鸢尾花进行分类
- 2.3.2 使用两个特征对鸢尾花进行分类
- 2.3.3 使用三个特征对鸢尾花进行分类
- 2.3.4 可视化三个特征分类结果
- 2.4使用scikit-learn机器学习包的支持向量机算法,选择特征0和特征2对鸢尾花分类并画图,gamma参数分别设置为1、10、100,运行程序并截图,观察gamma参数对训练分数(score)的影响,请说明如果错误调整gamma参数会产生什么问题?
- 2.4.1当gamma为1时:
- 2.4.2当gamma为10时:
- 2.4.3当gamma为100时:
- 2.4.4 结论
一.前言
1.1 本文原理
支持向量机(SVM)是一种二元分类模型。它的基本模型是在特征空间中定义最大区间的线性分类器,这使它不同于感知器;支持向量机还包括核技术,这使得它本质上是一个非线性分类器。支持向量机的学习策略是区间最大化,它可以形式化为求解凸二次规划的问题,等价于正则化铰链损失函数的最小化。支持向量机的学习算法是求解凸二次规划的优化算法。Scikit learn(sklearn)是机器学习中常见的第三方模块。它封装了常见的机器学习方法,包括回归、降维、分类、聚类等。
1.2 本文目的
- List item使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类;
- 使用scikit-learn机器学习包的支持向量机算法,设置SVM对象的参数,包括kernel、gamma和C,分别选择一个特征、两个特征、三个特征,写代码对鸢尾花进行分类;
- 使用scikit-learn机器学习包的支持向量机算法,选择特征0和特征2对鸢尾花分类并画图,gamma参数分别设置为1、10、100,运行程序并截图,观察gamma参数对训练分数(score)的影响,请说明如果错误调整gamma参数会产生什么问题?
二.实验过程
2.1 支持向量机算法SVM
实例的特征向量(以2D为例)映射到空间中的一些点,如下图中的实心点和空心点,它们属于两个不同的类别。支持向量机的目的是画一条线来“最好”区分这两类点,这样,如果将来有新的点,这条线也可以很好地进行分类。
2.2List item使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类;
首先引入向量机算法svm模块:
from sklearn import svm
还是老样子,使用load_iris模块,里面有150组鸢尾花特征数据,我们可以拿来进行学习特征分类。
如下代码:
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
print(X.shape, X)
y = iris.target
print(y.shape, y)
下面使用sklearn.svm.SVC()函数。
C-支持向量分类器如下:
svm=svm.SVC(kernel='rbf',C=1,gamma='auto')
使用全部特征对鸢尾花进行分类
svm.fit(X[:,:4],y)
输出训练得分:
print("training score:",svm.score(X[:,:4],y))
print("predict: ",svm.predict([[7,5,2,0.5],[7.5,4,7,2]]))
使用全部特征对鸢尾花进行分类训练得分如下:
2.3 使用scikit-learn机器学习包的支持向量机算法,设置SVM对象的参数,包括kernel、gamma和C,分别选择一个特征、两个特征、三个特征,写代码对鸢尾花进行分类;
2.3.1 使用一个特征对鸢尾花进行分类
上面提过的基础就不再写了。如下代码:
使用一个特征对鸢尾花进行分类,如下代码:
svm=svm.SVC()
svm.fit(X,y)
输出训练得分:
print("training score:",svm.score(X,y))
print("predict: ",svm.predict([[7,5,2,0.5],[7.5,4,7,2]]))
使用一个特征对鸢尾花进行分类训练得分如下:
2.3.2 使用两个特征对鸢尾花进行分类
使用两个特征对鸢尾花进行分类,如下代码:
svm=svm.SVC()
svm.fit(X[:,:1],y)
输出训练得分:
print("training score:",svm.score(X[:,:1],y))
print("predict: ",svm.predict([[7],[7.5]]))
使用两个特征对鸢尾花进行分类训练得分如下:
2.3.3 使用三个特征对鸢尾花进行分类
使用三个特征对鸢尾花进行分类,如下代码:
svm=svm.SVC(kernel='rbf',C=1,gamma='auto')
svm.fit(X[:,1:3],y)
输出训练得分:
print("training score:",svm.score(X[:,1:3],y))
print("predict: ",svm.predict([[7,5],[7.5,4]]))
使用三个特征对鸢尾花进行分类训练得分如下:
2.3.4 可视化三个特征分类结果
使用plt.subplot()函数用于直接指定划分方式和位置进行绘图。
x_min,x_max=X[:,1].min()-1,X[:,1].max()+1
v_min,v_max=X[:,2].min()-1,X[:,2].max()+1
h=(x_max/x_min)/100
xx,vy =np.meshgrid(np.arange(x_min,x_max,h),np.arange(v_min,v_max,h))
plt.subplot(1,1,1)
Z=svm.predict(np.c_[xx.ravel(),vy.ravel()])
Z=Z.reshape(xx.shape)
绘图,输出可视化。如下代码
plt.contourf(xx,vy,Z,cmap=plt.cm.Paired,alpha=0.8)
plt.scatter(X[:, 1], X[:, 2], c=y, cmap=plt.cm.Paired)
plt.xlabel('Sepal width')
plt.vlabel('Petal length')
plt.xlim(xx.min(), xx.max())
plt.title('SVC with linear kernel')
plt.show()
可视化三个特征分类结果图:
2.4使用scikit-learn机器学习包的支持向量机算法,选择特征0和特征2对鸢尾花分类并画图,gamma参数分别设置为1、10、100,运行程序并截图,观察gamma参数对训练分数(score)的影响,请说明如果错误调整gamma参数会产生什么问题?
2.4.1当gamma为1时:
讲上文的gamma='auto‘ 里的auto改为1,得如下代码:
svm=svm.SVC(kernel='rbf',C=1,gamma='1')
svm.fit(X[:,1:3],y)
运行上文可视化代码,得如下结果:
2.4.2当gamma为10时:
讲上文的gamma='auto‘ 里的auto改为10,得如下代码:
svm=svm.SVC(kernel='rbf',C=1,gamma='10')
svm.fit(X[:,:3:2],y)
运行上文可视化代码,得如下结果:
2.4.3当gamma为100时:
讲上文的gamma='auto‘ 里的auto改为100,得如下代码:
svm=svm.SVC(kernel='rbf',C=1,gamma='100')
svm.fit(X[:,:3:2],y)
运行上文可视化代码,得如下结果:
2.4.4 结论
参数gamma主要是对低维的样本进行高度度映射,gamma值越大映射的维度越高,训练的结果越好,但是越容易引起过拟合,即泛化能力低。通过上面的图可以看出gamma值越大,分数(score)越高。错误使用gamma值可能会引起过拟合,太低可能训练的结果太差。
支持向量机算法之鸢尾花特征分类【机器学习】相关推荐
- 线性回归算法之鸢尾花特征分类【机器学习】
文章目录 一.前言 1.1 本文原理 1.1 本文目的 二.实验过程 2.1使用scikit-learn机器学习包的算法,对鸢尾花进行分类 2.2 使用scikit-learn机器学习包的线性回归算法 ...
- 朴素贝叶斯算法之鸢尾花特征分类【机器学习】【伯努利分布,多项式分布,高斯分布】
文章目录 一.前言 1.1 本文原理 1.2 本文目的 二.实验过程 2.1使用BernoulliNB(伯努利分布)给鸢尾花分类,写出代码,对运行结果截图并对分类结果进行分析: 2.2 使用Multi ...
- 机器学习实践:基于支持向量机算法对鸢尾花进行分类
摘要:List item使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类. 本文分享自华为云社区<支持向量机算法之鸢尾花特征分类[机器学习]>,作者:上 ...
- 决策树算法之鸢尾花特征分类可视化详解【机器学习】
文章目录 一.前言 1.1 本文原理 1.2 本文目的 二.实验过程 2.1 使用scikit-learn机器学习包的决策树算法,使用4个特征对鸢尾花进行分类: 2.2使用ID3算法对天气与踢球数据集 ...
- KNN算法实现鸢尾花数据集分类
KNN算法实现鸢尾花数据集分类 作者介绍 数据集介绍 KNN算法介绍 用KNN实现鸢尾花分类 作者介绍 乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组. 研究方向:机 ...
- 实验二:用python实现SVM支持向量机并对鸢尾花数据集分类
实验二:SVM支持向量机 1. 实验内容: (1)用你熟知的语言(尽量使用python)实现支持向量机的算法,并在给定的数据集上训练. (2)在测试集上用训练好的支持向量机进行测试,并将预测结果以cs ...
- Python+sklearn使用支持向量机算法实现数字图片分类
关于支持向量机的理论知识,大家可以查阅机器学习之类的书籍或网上资源,本文主要介绍如何使用Python扩展库sklearn中的支持向量机实现数字图片分类. 1.首先编写代码生成一定数量的含有数字的图片 ...
- KNN算法实现鸢尾花的分类
题目 原生python实现knn分类算法,用鸢尾花数据集. 题目分析 KNN算法: 准备数据:来源百度下载鸢尾花数据集,共150组数据,将数据分为训练数据和测试数据,训练数据为120组,测试数据为30 ...
- python鸢尾花案例_BP算法实例—鸢尾花的分类(Python)
首先了解下Iris鸢尾花数据集: Iris数据集(https://en.wikipedia.org/wiki/Iris_flower_data_set)是常用的分类实验数据集,由Fisher,1936 ...
最新文章
- 企业研发管理工具应用分析
- 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?
- 删除的页面怎么恢复_手机短信删除了怎么恢复?手机短信恢复最新教程
- python订单详细教程-Python抓取订单页面
- 因虚而安全---vsftpd虚拟用户
- 好货日报邀请码54321软件的操作逻辑
- 何洁音乐会今晚开唱 大手笔打造pure show
- 生日快乐程序_祝肖战1005生日快乐-用R给他画个蛋糕爱心吧
- html标签属性%= %,HTML标签属性集合
- STL(五)——slist/list链表
- r语言 读取dta_R语言与计量经济学(三)异方差
- hssfworkbook 单元格合并后宽度不生效_一起来学习Excel批量合并单元格的操作技巧...
- 清晰架构的 Go 微服务: 程序容器
- IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
- c语言 进程调度 短作业,帮忙编写一个操作系统中进程调度的短作业优先算发的程序,感谢!该怎么解决...
- 韩开发新技术 用纸代替硅制造电路芯片
- 帆软动态列之数据集实现动态列
- 《Programming WPF》翻译 第9章 3.自定义功能
- 使用SESSION实现PHP会话的步骤
- NLP系列之文本分类