无涯教程-分类算法 - Python实现函数

news2024/10/7 4:22:34

为了在Python中实现SVM,无涯教程将从标准库导入开始,如下所示-

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import seaborn as sns; sns.set()

接下来,从sklearn.dataset.sample_generator创建具有线性可分离数据的样本数据集,以使用SVM进行分类-

from sklearn.datasets.samples_generator import make_blobs
X, y=make_blobs(n_samples=100, centers=2, random_state=0, cluster_std=0.50)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=summer);

以下是生成具有100个样本和2个聚类的样本数据集后的输出-

Implementing SVM In Python

知道SVM支持判别分类。它通过在二维的情况下简单地找到一条线,在多维的情况下通过歧管来简单地将类彼此划分。它在上述数据集上实现如下-

xfit = np.linspace(-1, 3.5)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = summer)
plt.plot([0.6], [2.1], x, color = black, markeredgewidth = 4, markersize = 12)
for m, b in [(1, 0.65), (0.5, 1.6), (-0.2, 2.9)]:
plt.plot(xfit, m * xfit + b, -k)
plt.xlim(-1, 3.5);

输出如下-

Output

从上面的输出中可以看到,有三种不同的分隔符可以完美地区分以上示例。

正如讨论的那样,SVM的主要目标是将数据集划分为类,以找到最大的边际超平面(MMH),而不是在类之间绘制零线,可以在每条线周围画出一定宽度的边界,直到最近的点。它可以做到如下-

xfit = np.linspace(-1, 3.5)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = summer)

for m, b, d in [(1, 0.65, 0.33), (0.5, 1.6, 0.55), (-0.2, 2.9, 0.2)]:
   yfit = m * xfit + b
   plt.plot(xfit, yfit, -k)
   plt.fill_between(xfit, yfit - d, yfit + d, edgecolor=none,
   color = #AAAAAA, alpha = 0.4)
plt.xlim(-1, 3.5);
Maximum Marginal Hyperplane

从上面的输出图像中,无涯教程可以轻松地观察到判别式分类器中的"边距", SVM将选择使边距最大化的线。

接下来,将使用Scikit-Learn的支持向量分类器在此数据上训练SVM模型。在这里,使用线性内核来拟合SVM,如下所示:

from sklearn.svm import SVC # "Support vector classifier"
model = SVC(kernel = linear, C = 1E10)
model.fit(X, y)

输出如下-

SVC(C=10000000000.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape=ovr, degree=3, gamma=auto_deprecated,
kernel=linear, max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)

现在,为了更好地理解,以下内容将绘制2D SVC的决策函数-

def decision_function(model, ax = None, plot_support = True):
   if ax is None:
      ax = plt.gca()
   xlim = ax.get_xlim()
   ylim = ax.get_ylim()

为了判断模型,需要创建网格,如下所示:

x = np.linspace(xlim[0], xlim[1], 30)
y = np.linspace(ylim[0], ylim[1], 30)
Y, X = np.meshgrid(y, x)
xy = np.vstack([X.ravel(), Y.ravel()]).T
P = model.decision_function(xy).reshape(X.shape)

接下来,需要绘制决策边界和边际,如下所示:

ax.contour(X, Y, P, colors=k, levels=[-1, 0, 1], alpha=0.5, linestyles=[--, -, --])

现在,类似地绘制支持向量,如下所示:

if plot_support:
   ax.scatter(model.support_vectors_[:, 0],
   model.support_vectors_[:, 1], s=300, linewidth=1, facecolors=none);
ax.set_xlim(xlim)
ax.set_ylim(ylim)

现在,使用此功能来拟合无涯教程的模型,如下所示:

plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=summer)
decision_function(model);
Implementing SVM Model

无涯教程可以从上面的输出中观察到SVM分类器适合数据的边距,即虚线和支持向量,该适合度的关键元素与虚线接触。这些支持向量点存储在分类器的 support_vectors _属性中,如下所示-

model.support_vectors_

输出如下-

array([[0.5323772 , 3.31338909], [2.11114739, 3.57660449], [1.46870582, 1.86947425]])

分类算法 中的 Python实现函数 - 无涯教程网无涯教程网提供为了在Python中实现SVM,无涯教程将从标准库导入开始,如下所示- import numpy as np...https://www.learnfk.com/python-machine-learning/machine-learning-with-python-implementing-svm-in-python.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/941714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

材料空间「填空解谜」:MIT 利用深度学习解决无损检测难题

内容一览:材料检测在工程、科学及制造业中扮演着至关重要的角色。传统的材料检测方法,例如切割和化学试剂检测具有破坏性,同时较为耗费时间和资源。近期,MIT 科学家利用深度学习开发了一种技术,能够填补缺失信息&#…

迁移学习:实现快速训练和泛化的新方法

文章目录 迁移学习的原理迁移学习的应用快速训练泛化能力提升 迁移学习的代码示例拓展应用与挑战结论 🎉欢迎来到AIGC人工智能专栏~迁移学习:实现快速训练和泛化的新方法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博…

服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

作者:王夕宁、 刘强、 华相 公司介绍 丽迅物流是百丽旗下专注于时尚产业、为企业提供专业物流及供应链解决方案的服务商。其产品服务主要包括城市落地配、仓配一体、干线运输及定制化解决方案。通过自研智能化物流管理平台,全面助力企业合作集约化发展…

C++中前置++和后置++的详细讲解

参考链接(链接讲的很全):C前置和后置的区别 对于迭代器和其他模板对象使用前缀形式 (i) 的自增, 自减运算符.,理由是 前置自增 (i) 通常要比后置自增 (i) 效率更高。 class Age { public: Age& operator() //前置 {…

c++ std::ref

ref 对于函数式编程(如 std::bind),是对参数直接拷贝,而不是引用,std::ref的引入就是为了解决一些传参问题 ref是个函数模板,用来构建一个reference_wrapper对象并返回,该对象拥有传入的elem变…

day-33 代码随想录算法训练营(19) 贪心part03

1005.K次取反后最大化的数组和 思路一:求出正负数的个数,根据k值来进行取反 134.加油站 思路:考虑总油量和当前剩余油量,同时遍历两个数组,当前剩余油量小于0时,说明在 i 之前都无法出发。 135.分发糖果 …

yml基本语法与支持的数据格式

一、yml基本语法 1、yml文件以缩进代表层级关系 2、缩进不允许使用tab只能使用空格 3、空格的个数不重要,只要相同层级的元素左对齐即可 4、大小写敏感 5、数据格式为,名称:(空格)值 二、yml支持的数据格式 1、对象:键值对的集合(key:…

EDAS系统提交 | 编译报错显示 fonttype: Font DejaVuSans is of type Type 3.

目录 1. 问题:fonttype: Font DejaVuSans is of type Type 3. 2. 原因及解决:用python的matplotlib画的图片转出的pdf有问题,包含Type 3字体。 3. 具体解决过程:在用python代码画图时,添加一行代码,重新…

第八周第一天学习总结 | MySQL入门及练习学习第三天

实操练习 1.创建一个名为 lianxi 的数据库 2.在 lianxi 库内创建一个名为 xinxi 的数据表要求如下: 包含信息:编号,姓名,备注,籍贯,部门,公司。 3.给xinxi表添加相应信息: 4.查询…

kafka复习:(22)一个分区只能被消费者组中的一个消费者消费吗?

默认情况下,一个分区只能被消费者组中的一个消费者消费。但可以自定义PartitionAssignor来打破这个限制。 一、自定义PartitionAssignor. package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consumer.internals.Abstrac…

【环境配置】Android-Studio-OpenCV-JNI以及常见错误 ( 持续更新 )

最近一个项目要编译深度学习的库,需要用到 opencv 和 JNI,本文档用于记录环境配置中遇到的常见错误以及解决方案 Invalid Gradle JDK configuration found failed Invalid Gradle JDK configuration foundInvalid Gradle JDK configuration found. Open…

【Acwing905】区间选点贪心策略超清晰证明!!包含题解

题目描述 贪心策略 首先按右端点对区间进行排序 然后从左到右遍历每一个区间,如果这个区间还没有选中的点,那么就选择这个区间的右端点,否则就pass掉这个区间 举一个栗子 贪心策略证明 假设最少的选点数为:ans 利用上述贪心策…

【JUC基础】JUC入门基础

目录 什么是JUC线程和进程锁传统的 synchronizedLock 锁Synchronized 与 Lock 的区别 生产者和消费者问题Synchronized 版Lock版Condition 的优势:精准通知和唤醒线程 8 锁现象问题1:两个同步方法,先执行发短信还是打电话?问题2&a…

代码随想录刷题笔记 (python版本) 持续更新.....

代码随想录刷题笔记总结: https://www.programmercarl.com/ 个人学习笔记 如有错误欢迎指正交流1. 数组 1.1 理论基础 详细介绍:https://www.programmercarl.com/%E6%95%B0%E7%BB%84%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 数组下标都是从0开始的。数组内存空间的地址是…

什么是亚马逊类目核心关键词?

亚马逊类目核心关键词是指在亚马逊平台上,与特定产品类别相关且具有较高搜索量和竞争度的关键词。这些关键词在产品标题、描述、属性和搜索关键字等位置使用,有助于提高产品的曝光度和搜索排名,并吸引潜在买家的注意。选择适当的核心关键词可…

@Configuration 注解的 Full 模式和 Lite 模式!

Configuration 注解相信各位小伙伴经常会用到,但是大家知道吗,这个注解有两种不同的模式,一种叫做 Full 模式,另外一种则叫做 Lite 模式。 准确来说,Full 模式和 Lite 模式其实 Spring 容器在处理 Bean 时的两种不同行…

Nacos基础(2)——nacos的服务器和命名空间 springBoot整合nacos 多个nacos配置的情况

目录 引出nacos服务器和命名空间Nacos服务器命名空间 springBoot整合nacosspringcloud Alibaba 版本与springcloud对应关系引包配置maincontroller 报错以及解决【报错】错误:缺少服务名称报错:9848端口未开放 启动测试引入多个nacos配置多个配置的情况没…

基于java swing和mysql实现的学生选课成绩信息管理系统(源码+数据库+ER图文档+运行指导视频)

一、项目简介 本项目是一套基于java swing和mysql实现的学生选课成绩信息管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。…

概念解析 | 无人机集群形状与轨迹建模: 集群舞蹈的艺术

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:无人机集群形状和轨迹建模 无人机集群形状与轨迹建模: 集群舞蹈的艺术 无人机集群的形状和轨迹建模可能听起来像是一部科幻小说的标题,但它实际上是现实中的一个重要研究领…

国内精选五大现货黄金价格实时查询软件最新名单(综合榜单)

随着金融市场的不断发展和投资者的日益增多,现货黄金价格实时查询软件成为了人们关注的焦点。投资者需要一款功能强大、操作简便、数据准确的软件来帮助他们获取实时的黄金价格信息,以便做出更加明智的投资决策。 本文将介绍国内精选五大现货黄金价格实…