svm多分类代码_监督学习——分类算法I

本文是监督学习分类算法的第一部分,简单介绍对样本进行分类的算法,包括
  • 判别分析(DA)
  • 支持向量机(SVM)
  • 随机梯度下降分类(SGD)
  • K近邻分类(KNN)
  • 朴素贝叶斯分类(NaiveBayes)

判别分析(Discriminant Analysis)

判别分析是基于条件概率的分类方法,可以分为线性判别分析(LDA)和二次型判别分析(QDA)。
8872b03d2e5991ea6b5e9045211b3e11.png
不同数据下的线性和二次型判别分析

算法介绍

判别分析的基础是贝叶斯公式,它根据已有数据中的先验概率(可以通过样本得到)推断后验概率: 对于训练集,

我们选择令值较大的那个k作为预测结果。

算法求解

假设条件随机变量服从多元正态分布,那么先验概率应为

其中,为标记为k的样本数据均值,为标记为k的样本协方差矩阵。

代入贝叶斯公式得到对数后验概率:

其中,是分子的对数常数,是已知样本中各分类的比例。

QDA算法就是得到能够使对数后验概率最大的k值。
如果在QDA模型中假设特征之间相互独立,即只包含对角线元素,那么QDA分类器等效于高斯朴素贝叶斯分类器naive_bayes.GaussianNB。
LDA算法是QDA算法的特例,即假设所有类别的y都具有相同的协方差矩阵,那么对数后验概率可以写作其中为样本与均值之间的马氏距离。因此,LDA也可以认为是在先验概率条件下采用马氏距离进行分类的方法。上式也被称为判别函数

算法实例

假设,,即只分两类且概率相等时,判别函数得到

对比两式

  • 当上式大于0时说明的概率大于,则应该属于第1类,否则属于第二类。
  • 当上式等于0时可以得到决策边界
  • 同样可以推导3个以上类别的决策边界。
  • QDA算法由于考虑了不同的协方差矩阵,可以得到二次型的决策边界。

代码

判别函数可以改写为线性形式

其中的拟合数据保存在属性中,保存在属性中。

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
clf2 = LinearDiscriminantAnalysis(solver='lsqr', shrinkage=None).fit(X, y)
从代码中可以看出也要确定判别分析的算法器solver,也可以通过shrinkage进行正则化。

支持向量机(Support Vector Machines)

支持向量机SVM在高维或无限维空间中构建一个超平面或一组超平面,该超平面与任何类别的最近训练数据点之间的距离最大(所谓的功能边界),所以可以实现良好的分离,可用于分类、回归或其他任务。因为通常边界越大,分类器的泛化误差越低。下图显示了线性可分离问题的决策函数,在边界上有三个样本,称为“支持向量”:
fd553ce4d42f71c1a501e9c866fe2841.png
支持向量机原理图

支持向量机也是既可以用来进行分类也可以进行回归的模型,其分类器在Scikit-learn中包括SVC,NuSVC和LinearSVC等类。

算法

给定训练集分为两个类,研究目标是找到满足优化问题的解.SVC的目标是

式子第二项也可以看做是正则化项,是控制参数。上面优化问题的对偶问题是

其中是全1向量,是半正定阶矩阵,且,其中是核(Kernel)

通过调整核函数可以对不同的数据进行分类:
732d14426c6fca7259b542af8864819f.png
核SVM算法估计鸢尾花数据

NuSVC、LinearSVC和其他相关的支持向量机算法都采用了近似的目标函数。

代码

参数存储在属性中,支持向量机数据保存在属性中,参数保存在属性中。
from sklearn.svm import SVC
linear_svc = svm.SVC(kernel='linear')
linear_svc = svm.SVC(kernel='rbf')

RBF是Radial Basis Function的缩写,可以进行非线性划分,效果如下:

ba0a2dae44f4cf172f72bfc11329c335.png

随机梯度下降分类(SGD)

随机梯度下降分类器近似等效于线性SVM
from sklearn.linear_model import SGDClassifier
clf = SGDClassifier(loss="hinge", penalty="l2", max_iter=5).fit(X, y)
可以通过参数设置具体的损失函数。SGDClassifier支持以下损失功能:
  • :(软边距)线性支持向量机;
  • :平滑的铰链损失;
  • :逻辑回归, 等。
可以通过penalty参数设置具体的正则项类型。SGD支持以下处罚:
  • :参数的标准正则项;
  • :参数的标准正则项;
  • :和的凸组合。
默认设置为。L1惩罚导致解决方案稀疏,将大多数系数驱动为零。当存在高度相关的属性时,ElasticNet解决了损失的一些不足。该参数控制和惩罚的凸组合。

K近邻分类(KNN)

KNN算法已经介绍过了,这里给出用KNN分类器的代码
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1).fit(X_train,y_train)
效果如下:62dd2268859db5134abd035e60b66c90.png

朴素贝叶斯分类(NaiveBayes)

本文开头指出,QDA在特征相互独立的情况下等价于高斯NaiveBayes,这里的“Naive(朴素)”指的就是这种特征数据相互独立的假设。

算法

给定样本属于的类别数据,由贝叶斯公式可以得到关系:

在“Naive”条件下,上式可以简化为

由于是根据样本计算的常数,所以

所以

在假设了之后就可以进行估计。

类别和特点

  1. scikit-learn 中实现了三种朴素贝叶斯分类器:GaussianNB、BernoulliNB 和MultinomialNB。
  2. GaussianNB 可应用于任意连续数据;
  3. BernoulliNB 假定输入数据为二分类数据;
  4. MultinomialNB 假定输入数据为计数数据(即每个特征代表某个对象的整数计数,比如一个单词在句子里出现的次数)。
  5. BernoulliNB 和MultinomialNB 主要用于文本数据分类。

代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
gnb = GaussianNB()
y_pred = gnb.fit(X_train, y_train).predict(X_test)

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

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

相关文章

oracle awr报告提取,Oracle AWR报告提取方法

默认情况下,oracle是启用数据库统计收集这项功能(AWR)通过show parameter statistics_level来判断是否启用值为TYPICAL或者ALL表示启用AWR值为BASIC,表示禁用AWR1.当前连接实例的AWR报告提取:?/rdbms/admin/awrrpt以sysdba身份登录。SQL>…

关键词组合工具_SEO学习:如何挖掘行业关键词?关键词挖掘策略和工具推荐

关键词是驱动流量增长的基础!挖掘关键词是SEO工作的重中之重。如何快速挖掘到行业相关的所有关键词?我们一起了解下。本文大纲如下:拓展和筛选网站主词挖掘搜索引擎推荐关键词业务相关词的挖掘同行关键词的挖掘关键词组合拓展1、拓展和筛选网…

活体检测python_活体检测很复杂?仅使用opencv就能实现!(附源码)!

摘要: 活体检测在各行各业应用比较广泛,如何实现一个活体检测系统呢?早期实现很困难,现在仅使用opencv即可实现,快来尝试一下吧。什么是活体检测,为什么需要它?随着时代的发展,人脸识…

oracle安装命令大全,oracle安装教程及常用命令

虽然网上已经有很多安装教程了,但还是写一个记录一下自己的安装过程以及遇到问题的解决办法1 安装包下载:去oracle的官网 选择DownLoads->database->oracle database:选择接受选择Windows 64的下载,选择file1,和file2,注意两个文件都要下载,下载时要求登录,有oracle账户的…

规格选择_日常使用的拉杆箱脚轮选择哪种规格最合适?

大家可能在采购拉杆箱脚轮的时候,都会有一个问题,拉杆箱脚轮规格选择哪种比较好呢?万向轮好还是单向轮?是万向轮还是单向轮比较耐磨?脚轮厂家诺贝小编接收到大家的疑问,接下来将告诉大家拉杆箱脚轮选择的规…

ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)

1   ERROR: transport error 202: bind failed 2 ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 3 JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690] 4 …

php session存到redis,php Session存储到Redis的方法

php Session存储到Redis的方法当然要写先安装php的扩展,可参考这篇文章:Redis及PHP扩展安装修改php.ini的设置复制代码 代码如下:session.save_handler redissession.save_path “tcp://127.0.0.1:6379″修改后重启php-fpm或nginx,phpinfo(…

ajax ssm 页面跳转_SSM框架的面试常见问题

阅读文本大概需要9分钟。一、Spring面试题1、Spring 在ssm中起什么作用?Spring:轻量级框架作用:Bean工厂,用来管理Bean的生命周期和框架集成。两大核心:IOC/DI(控制反转/依赖注入) :把dao依赖注入到service…

运维工程师绩效考核表_IT运维存在问题及改进

欢迎大家一起学习交流https://t.zsxq.com/imimAYF​t.zsxq.com1.1 IT运维机制不完善,流程操作层面缺乏统一 没有建立起稳定、规范的IT运维机制。现有的IT运维流程的操作层面缺乏统一。如事件单提交之后,事件预判和优先级的设定缺少统一、规范的指导文档&…

在linux中 要删除abc目录,操作系统原理与应用(linux)A卷

福州外语外贸职业技术学院2010-2011学年第一学期(期末)试卷09 级网络系统管理专业操作系统原理与应用(linux)科目(A )卷课程代码考试形式闭卷考试时量 120 分钟姓名__ _______ _级班学号____ __1.操作系统是一种( )A.系统软件B.系统硬件C.应用软件D.支援软件2.MS—DOS的存贮管理…

数据产品经理修炼手册pdf_【尼读书】数据产品经理修炼手册(附思维导图)

前言:进入一个行业,除了要多在工作中实践和思考之外,还需要多读书。这样能够站在一个更高的角度去看问题,往往会对问题有更全面的掌握和新的认知。在【尼读书】这个栏目中,尼同学通过自己读书后的理解和整理与大家分享…

WebStorm 预览时把浏览器地址localhost 改成IP

最近在使用WebStorm时,预览网页时地址总是显示的 http://localhost:63342/... ,如果要调试其它设备感觉很不方法,此时肯定首先想到的亲爱的度娘,但是貌似没有真正很解决问题的(可能是我搜索方法不对)。最后…

linux内存管理的主要概念是虚拟内存,你知道linux内存管理基础及方法?

描述一、基本概念(1)物理内存和虚拟内存物理内存:系统硬件提供的真实物理内存虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为swap,swap类似于windows的虚拟内存。1、linux的内存管理采取的分页存取机制…

R plot图片背景设置为透明_R语言入门第十二讲:基础绘图(二)------plot与par函数(1)...

上一次给大家简单展示了plot函数的用法,以及par函数的使用。今天我们继续应用这两个函数,看看它的其他功能。下面这个图是数据的一部分[1]。我一直认为,作图简单,但关键是要知道数据在数据库中的格式,才能更好的应用到…

visual studio 2015 搭建python开发环境,python入门到精通[三]

在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo,这里略带一句,其实就"学习python"而言,比较建议使用pycharm,pychar…

如何给打印机墨盒加墨

今天打印东西突然遇到问题了,显示墨盒黑色没墨了,网上一搜,整套的墨盒大几十,随手换了一个关键词 墨盒墨水 这下不到十块钱解决,正好锻炼下自己的动手能力(其实就是穷嘛。。。) 接下来就分享下动…

全局莫兰指数_空间自相关 | 莫兰指数

空间自相关:是指一些变量在同一个分布区内的观测数据之间潜在的相互依赖性。其中,自相关中的“自”表示当你进行相关性观察统计量,是来源于不同对象的同一属性。Tobler(1970)曾指出“地理学第一定律:任何东西与别的东西之间都是相…

linux vi 排序命令,10 个你必须掌握的超酷 VI 命令技巧

摘要:大部分Linux开发者对vi命相当熟悉,可是遗憾的是,大部分开发者都只能掌握一些最常用的Linux vi命令,下面介绍的10个vi命令虽然很多不为人知,但是在实际应用中又能让你大大提高效率。在使用vi 编辑器时—无论是初次…

arduino 水位传感器_云南可信赖的威卡压力传感器哪里有

云南可信赖的威卡压力传感器哪里有 k52gh264云南可信赖的威卡压力传感器哪里有 在生产生活中,对压力表的正确使用为工业生产提供了一定程度的便利。.指针转动受阻在检修过程中,先给弹賛管式压力表施加压力,如果发现被检测表的指针成比例变快或…

小甲鱼Python笔记(下)

二十八 二十九 文件 打开文件 open(文件名[,模式][,缓冲])  注意open是个函数不是方法 模式: 缓冲: 大于1的数字代表缓冲区的大小(单位是字节),-1(或者是任何负数)代表使用默认缓冲区大小 只…