机器学习实战:基于Scikit-Learn和TensorFlow 第5章 支持向量机 学习笔记(硬间隔)
数据挖掘作业,需要实现支持向量机进行分类,记录学习记录
环境:win10,Python 3.7.0
SVM的基本思想:在类别之间拟合可能的最宽的间距,也叫作最大间隔分类
书上提供的源代码绘制了两个图,一个是没用SVM的一个是用了SVM的,我做出了修改只画出使用了硬间隔SVM的图像,图像保存在当前目录的images文件夹下,如果没有此文件夹则需要进行创建
代码如下:
- import numpy as np
- import os
- import matplotlib
- import matplotlib.pyplot as plt
- import warnings
- from sklearn.svm import SVC
- from sklearn import datasets
- np.random.seed(42)
- plt.rcParams['axes.labelsize'] = 14
- plt.rcParams['xtick.labelsize'] = 12
- plt.rcParams['ytick.labelsize'] = 12
- # Where to save the figures
- # 设定图片保存路径,这里写了一个函数,后面直接调用即可
- PROJECT_ROOT_DIR = "."
- IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, "images")
- #保存图片
- def save_fig(fig_id, tight_layout=True, fig_extension="png", resolution=300):
- path = os.path.join(IMAGES_PATH, fig_id + "." + fig_extension)
- print("Saving figure", fig_id)
- if tight_layout:
- plt.tight_layout()
- plt.savefig(path, format=fig_extension, dpi=resolution)
- #画出分类界限
- def plot_svc_decision_boundary(svm_clf, xmin, xmax):
- w = svm_clf.coef_[0]
- b = svm_clf.intercept_[0]
- x0 = np.linspace(xmin, xmax, 200)
- decision_boundary = -w[0]/w[1] * x0 - b/w[1]
- margin = 1/w[1]
- gutter_up = decision_boundary + margin
- gutter_down = decision_boundary - margin
- svs = svm_clf.support_vectors_
- plt.scatter(svs[:, 0], svs[:, 1], s=180, facecolors='#FFAAAA')
- plt.plot(x0, decision_boundary, "k-", linewidth=2)
- plt.plot(x0, gutter_up, "k--", linewidth=2)
- plt.plot(x0, gutter_down, "k--", linewidth=2)
- # 忽略无用警告
- warnings.filterwarnings(action="ignore", message="^internal gelsd")
- iris = datasets.load_iris()
- X = iris["data"][:, (2, 3)] # petal length, petal width
- y = iris["target"]
- setosa_or_versicolor = (y == 0) | (y == 1)
- X = X[setosa_or_versicolor]
- y = y[setosa_or_versicolor]
- # SVM Classifier model
- svm_clf = SVC(kernel="linear", C=float("inf"))
- svm_clf.fit(X, y)
- plot_svc_decision_boundary(svm_clf, 0, 5.5)
- plt.plot(X[:, 0][y==1], X[:, 1][y==1], "bs")
- plt.plot(X[:, 0][y==0], X[:, 1][y==0], "yo")
- plt.xlabel("Petal length", fontsize=14)
- plt.ylabel("Petal width", fontsize=14)
- plt.axis([0, 5.5, 0, 2])
- save_fig("硬间隔SVM分类")
- plt.show()
机器学习实战:基于Scikit-Learn和TensorFlow 第5章 支持向量机 学习笔记(硬间隔)的更多相关文章
- 分享《机器学习实战基于Scikit-Learn和TensorFlow》中英文PDF源代码+《深度学习之TensorFlow入门原理与进阶实战》PDF+源代码
下载:https://pan.baidu.com/s/1qKaDd9PSUUGbBQNB3tkDzw <机器学习实战:基于Scikit-Learn和TensorFlow>高清中文版PDF+ ...
- 【python与机器学习实战】感知机和支持向量机学习笔记(一)
对<Python与机器学习实战>一书阅读的记录,对于一些难以理解的地方查阅了资料辅以理解并补充和记录,重新梳理一下感知机和SVM的算法原理,加深记忆. 1.感知机 感知机的基本概念 感知机 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- 机器学习实战:基于Scikit-Learn和TensorFlow 读书笔记 第6章 决策树
数据挖掘作业,要实现决策树,现记录学习过程 win10系统,Python 3.7.0 构建一个决策树,在鸢尾花数据集上训练一个DecisionTreeClassifier: from sklearn. ...
- 集成算法(chapter 7 - Hands on machine learning with scikit learn and tensorflow)
Voting classifier 多种分类器分别训练,然后分别对输入(新数据)预测/分类,各个分类器的结果视为投票,投出最终结果: 训练: 投票: 为什么三个臭皮匠顶一个诸葛亮.通过大数定律直观地解 ...
- 【Python机器学习实战】感知机和支持向量机学习笔记(三)之SVM的实现
前面已经对感知机和SVM进行了简要的概述,本节是SVM算法的实现过程用于辅助理解SVM算法的具体内容,然后借助sklearn对SVM工具包进行实现. SVM算法的核心是SMO算法的实现,首先对SMO算 ...
- ASP.NET Core基于K8S的微服务电商案例实践--学习笔记
摘要 一个完整的电商项目微服务的实践过程,从选型.业务设计.架构设计到开发过程管理.以及上线运维的完整过程总结与剖析. 讲师介绍 产品需求介绍 纯线上商城 线上线下一体化 跨行业 跨商业模式 从0开始 ...
- 《基于MVC的JavaScript Web富应用开发》学习笔记
第1章 MVC和类 1. 什么是MVC? MVC是一种设计模式, 它将应用划分为3个部分: 数据(模型, Model), 展现层(视图, View) 和用户交互层(控制器, Controller). ...
- 推荐《机器学习实战:基于Scikit-Learn和TensorFlow》高清中英文PDF+源代码
探索机器学习,使用Scikit-Learn全程跟踪一个机器学习项目的例子:探索各种训练模型:使用TensorFlow库构建和训练神经网络,深入神经网络架构,包括卷积神经网络.循环神经网络和深度强化学习 ...
随机推荐
- 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, ...
- [收藏]Dubbo官方资料
首页 || 下载 || 用户指南 || 开发者指南 || 管理员指南 || 培训文档 || 常见问题解答 || 发布记录 || 发展路线 || 社区 English ...
- REST API的使用
需求描述 GET: http://localhost:8080/MyWebsite/user/ Header: Content-Type = application/json Body: 空 Resp ...
- Oracle第二话之调优工具
Oracle第二话之调优工具 原创if 0 = -I can 发布于2019-04-09 19:53:12 阅读数 172 收藏 展开 目录 1.告警日志 2.用户进程trace文件 3.动态性能视 ...
- linux scp命令 将数据从一台linux服务器复制到另一台linux服务器
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...
- 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> ( ...
- Kettle 执行SQL脚本
以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 本文将对Kettle5中常用步骤字段选择(又名选择/改名值,英文原名:Select Values)进行详细解释.这个步骤的功能非常强大, ...
- C C++ ARM X86 函数 方法 的调用约定
参考:https://bbs.pediy.com/thread-224583.htm 整理成表格方便查询 cdecl(C规范), stdcall(WinAPI默认), fastcall, ATPCS( ...
- 源码编译Kubeadm二进制文件
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验k ...
- 智能指针类模板(上)——STL中的智能指针
智能指针类模板智能指针本质上就是一个对象,它可以像原生指针那样来使用. 智能指针的意义-现代C++开发库中最重要的类模板之一-C++中自动内存管理的主要手段-能够在很大程度上避开内存相关的问题 1.内 ...