数据挖掘作业,需要实现支持向量机进行分类,记录学习记录

环境:win10,Python 3.7.0

SVM的基本思想:在类别之间拟合可能的最宽的间距,也叫作最大间隔分类

书上提供的源代码绘制了两个图,一个是没用SVM的一个是用了SVM的,我做出了修改只画出使用了硬间隔SVM的图像,图像保存在当前目录的images文件夹下,如果没有此文件夹则需要进行创建

代码如下:

  1. import numpy as np
  2. import os
  3. import matplotlib
  4. import matplotlib.pyplot as plt
  5. import warnings
  6. from sklearn.svm import SVC
  7. from sklearn import datasets
  8. np.random.seed(42)
  9. plt.rcParams['axes.labelsize'] = 14
  10. plt.rcParams['xtick.labelsize'] = 12
  11. plt.rcParams['ytick.labelsize'] = 12
  12. # Where to save the figures
  13. # 设定图片保存路径,这里写了一个函数,后面直接调用即可
  14. PROJECT_ROOT_DIR = "."
  15. IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, "images")
  16. #保存图片
  17. def save_fig(fig_id, tight_layout=True, fig_extension="png", resolution=300):
  18. path = os.path.join(IMAGES_PATH, fig_id + "." + fig_extension)
  19. print("Saving figure", fig_id)
  20. if tight_layout:
  21. plt.tight_layout()
  22. plt.savefig(path, format=fig_extension, dpi=resolution)
  23. #画出分类界限
  24. def plot_svc_decision_boundary(svm_clf, xmin, xmax):
  25. w = svm_clf.coef_[0]
  26. b = svm_clf.intercept_[0]
  27. x0 = np.linspace(xmin, xmax, 200)
  28. decision_boundary = -w[0]/w[1] * x0 - b/w[1]
  29. margin = 1/w[1]
  30. gutter_up = decision_boundary + margin
  31. gutter_down = decision_boundary - margin
  32. svs = svm_clf.support_vectors_
  33. plt.scatter(svs[:, 0], svs[:, 1], s=180, facecolors='#FFAAAA')
  34. plt.plot(x0, decision_boundary, "k-", linewidth=2)
  35. plt.plot(x0, gutter_up, "k--", linewidth=2)
  36. plt.plot(x0, gutter_down, "k--", linewidth=2)
  37. # 忽略无用警告
  38. warnings.filterwarnings(action="ignore", message="^internal gelsd")
  39. iris = datasets.load_iris()
  40. X = iris["data"][:, (2, 3)] # petal length, petal width
  41. y = iris["target"]
  42. setosa_or_versicolor = (y == 0) | (y == 1)
  43. X = X[setosa_or_versicolor]
  44. y = y[setosa_or_versicolor]
  45. # SVM Classifier model
  46. svm_clf = SVC(kernel="linear", C=float("inf"))
  47. svm_clf.fit(X, y)
  48. plot_svc_decision_boundary(svm_clf, 0, 5.5)
  49. plt.plot(X[:, 0][y==1], X[:, 1][y==1], "bs")
  50. plt.plot(X[:, 0][y==0], X[:, 1][y==0], "yo")
  51. plt.xlabel("Petal length", fontsize=14)
  52. plt.ylabel("Petal width", fontsize=14)
  53. plt.axis([0, 5.5, 0, 2])
  54. save_fig("硬间隔SVM分类")
  55. plt.show()

机器学习实战:基于Scikit-Learn和TensorFlow 第5章 支持向量机 学习笔记(硬间隔)的更多相关文章

  1. 分享《机器学习实战基于Scikit-Learn和TensorFlow》中英文PDF源代码+《深度学习之TensorFlow入门原理与进阶实战》PDF+源代码

    下载:https://pan.baidu.com/s/1qKaDd9PSUUGbBQNB3tkDzw <机器学习实战:基于Scikit-Learn和TensorFlow>高清中文版PDF+ ...

  2. 【python与机器学习实战】感知机和支持向量机学习笔记(一)

    对<Python与机器学习实战>一书阅读的记录,对于一些难以理解的地方查阅了资料辅以理解并补充和记录,重新梳理一下感知机和SVM的算法原理,加深记忆. 1.感知机 感知机的基本概念 感知机 ...

  3. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  4. 机器学习实战:基于Scikit-Learn和TensorFlow 读书笔记 第6章 决策树

    数据挖掘作业,要实现决策树,现记录学习过程 win10系统,Python 3.7.0 构建一个决策树,在鸢尾花数据集上训练一个DecisionTreeClassifier: from sklearn. ...

  5. 集成算法(chapter 7 - Hands on machine learning with scikit learn and tensorflow)

    Voting classifier 多种分类器分别训练,然后分别对输入(新数据)预测/分类,各个分类器的结果视为投票,投出最终结果: 训练: 投票: 为什么三个臭皮匠顶一个诸葛亮.通过大数定律直观地解 ...

  6. 【Python机器学习实战】感知机和支持向量机学习笔记(三)之SVM的实现

    前面已经对感知机和SVM进行了简要的概述,本节是SVM算法的实现过程用于辅助理解SVM算法的具体内容,然后借助sklearn对SVM工具包进行实现. SVM算法的核心是SMO算法的实现,首先对SMO算 ...

  7. ASP.NET Core基于K8S的微服务电商案例实践--学习笔记

    摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...

  8. 《基于MVC的JavaScript Web富应用开发》学习笔记

    第1章 MVC和类 1. 什么是MVC? MVC是一种设计模式, 它将应用划分为3个部分: 数据(模型, Model), 展现层(视图, View) 和用户交互层(控制器, Controller). ...

  9. 推荐《机器学习实战:基于Scikit-Learn和TensorFlow》高清中英文PDF+源代码

    探索机器学习,使用Scikit-Learn全程跟踪一个机器学习项目的例子:探索各种训练模型:使用TensorFlow库构建和训练神经网络,深入神经网络架构,包括卷积神经网络.循环神经网络和深度强化学习 ...

随机推荐

  1. FCC---Create Movement Using CSS Animation---设计一个盒子上下左右移动,结合animation, @keyframe, position (上下左右的offset)

    When elements have a specified position, such as fixed or relative, the CSS offset properties right, ...

  2. [收藏]Dubbo官方资料

    首页  ||  下载  ||  用户指南  ||  开发者指南  ||  管理员指南  ||  培训文档  ||  常见问题解答  ||  发布记录  ||  发展路线  ||  社区 English ...

  3. REST API的使用

    需求描述 GET: http://localhost:8080/MyWebsite/user/ Header: Content-Type = application/json Body: 空 Resp ...

  4. Oracle第二话之调优工具

    Oracle第二话之调优工具 原创if 0 = -I can 发布于2019-04-09 19:53:12 阅读数 172  收藏 展开 目录 1.告警日志 2.用户进程trace文件 3.动态性能视 ...

  5. linux scp命令 将数据从一台linux服务器复制到另一台linux服务器

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  6. Troubleshooting ORA-1628 - max # extents (32765) reached for rollback segment <SEGMENT_NAME> (Doc ID 1580182.1)

    Troubleshooting ORA-1628 - max # extents (32765) reached for rollback segment <SEGMENT_NAME> ( ...

  7. Kettle 执行SQL脚本

    以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 本文将对Kettle5中常用步骤字段选择(又名选择/改名值,英文原名:Select Values)进行详细解释.这个步骤的功能非常强大, ...

  8. C C++ ARM X86 函数 方法 的调用约定

    参考:https://bbs.pediy.com/thread-224583.htm 整理成表格方便查询 cdecl(C规范), stdcall(WinAPI默认), fastcall, ATPCS( ...

  9. 源码编译Kubeadm二进制文件

    kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...

  10. 智能指针类模板(上)——STL中的智能指针

    智能指针类模板智能指针本质上就是一个对象,它可以像原生指针那样来使用. 智能指针的意义-现代C++开发库中最重要的类模板之一-C++中自动内存管理的主要手段-能够在很大程度上避开内存相关的问题 1.内 ...