文章目录

  • 一.前言
    • 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 本文目的

  1. List item使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类;
  2. 使用scikit-learn机器学习包的支持向量机算法,设置SVM对象的参数,包括kernel、gamma和C,分别选择一个特征、两个特征、三个特征,写代码对鸢尾花进行分类;
  3. 使用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.1 本文目的 二.实验过程 2.1使用scikit-learn机器学习包的算法,对鸢尾花进行分类 2.2 使用scikit-learn机器学习包的线性回归算法 ...

  2. 朴素贝叶斯算法之鸢尾花特征分类【机器学习】【伯努利分布,多项式分布,高斯分布】

    文章目录 一.前言 1.1 本文原理 1.2 本文目的 二.实验过程 2.1使用BernoulliNB(伯努利分布)给鸢尾花分类,写出代码,对运行结果截图并对分类结果进行分析: 2.2 使用Multi ...

  3. 机器学习实践:基于支持向量机算法对鸢尾花进行分类

    摘要:List item使用scikit-learn机器学习包的支持向量机算法,使用全部特征对鸢尾花进行分类. 本文分享自华为云社区<支持向量机算法之鸢尾花特征分类[机器学习]>,作者:上 ...

  4. 决策树算法之鸢尾花特征分类可视化详解【机器学习】

    文章目录 一.前言 1.1 本文原理 1.2 本文目的 二.实验过程 2.1 使用scikit-learn机器学习包的决策树算法,使用4个特征对鸢尾花进行分类: 2.2使用ID3算法对天气与踢球数据集 ...

  5. KNN算法实现鸢尾花数据集分类

    KNN算法实现鸢尾花数据集分类 作者介绍 数据集介绍 KNN算法介绍 用KNN实现鸢尾花分类 作者介绍 乔冠华,女,西安工程大学电子信息学院,2020级硕士研究生,张宏伟人工智能课题组. 研究方向:机 ...

  6. 实验二:用python实现SVM支持向量机并对鸢尾花数据集分类

    实验二:SVM支持向量机 1. 实验内容: (1)用你熟知的语言(尽量使用python)实现支持向量机的算法,并在给定的数据集上训练. (2)在测试集上用训练好的支持向量机进行测试,并将预测结果以cs ...

  7. Python+sklearn使用支持向量机算法实现数字图片分类

    关于支持向量机的理论知识,大家可以查阅机器学习之类的书籍或网上资源,本文主要介绍如何使用Python扩展库sklearn中的支持向量机实现数字图片分类. 1.首先编写代码生成一定数量的含有数字的图片 ...

  8. KNN算法实现鸢尾花的分类

    题目 原生python实现knn分类算法,用鸢尾花数据集. 题目分析 KNN算法: 准备数据:来源百度下载鸢尾花数据集,共150组数据,将数据分为训练数据和测试数据,训练数据为120组,测试数据为30 ...

  9. python鸢尾花案例_BP算法实例—鸢尾花的分类(Python)

    首先了解下Iris鸢尾花数据集: Iris数据集(https://en.wikipedia.org/wiki/Iris_flower_data_set)是常用的分类实验数据集,由Fisher,1936 ...

最新文章

  1. 企业研发管理工具应用分析
  2. 为什么权重初始化要非对称?为什么权重初始化不能全为0?为什么初始化值不能太大或者太小?介绍下He初始化以及Xavier初始化?
  3. 删除的页面怎么恢复_手机短信删除了怎么恢复?手机短信恢复最新教程
  4. python订单详细教程-Python抓取订单页面
  5. 因虚而安全---vsftpd虚拟用户
  6. 好货日报邀请码54321软件的操作逻辑
  7. 何洁音乐会今晚开唱 大手笔打造pure show
  8. 生日快乐程序_祝肖战1005生日快乐-用R给他画个蛋糕爱心吧
  9. html标签属性%= %,HTML标签属性集合
  10. STL(五)——slist/list链表
  11. r语言 读取dta_R语言与计量经济学(三)异方差
  12. hssfworkbook 单元格合并后宽度不生效_一起来学习Excel批量合并单元格的操作技巧...
  13. 清晰架构的 Go 微服务: 程序容器
  14. IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
  15. c语言 进程调度 短作业,帮忙编写一个操作系统中进程调度的短作业优先算发的程序,感谢!该怎么解决...
  16. 韩开发新技术 用纸代替硅制造电路芯片
  17. 帆软动态列之数据集实现动态列
  18. 《Programming WPF》翻译 第9章 3.自定义功能
  19. 使用SESSION实现PHP会话的步骤
  20. NLP系列之文本分类

热门文章

  1. cpu架构体系 简单总结
  2. 各种卷积操作及其矩阵运算
  3. linux内核I2C子系统详解
  4. Apache Kafka教程A系列:消费者群体示例
  5. UltData for Android for Mac如何在Android上恢复已删除的短信
  6. 好书推荐:低功耗蓝牙5.x 高级开发
  7. Navicat_keygen 使用
  8. 标签转换为独热码的三种方法Python
  9. Excel如何统计合并单元格数据个数
  10. Comparison method violates its general contract!