-
2019-03-04 23:44:06
多分类支持向量机是由k个支持向量机构成,当输入一个样本,分别输出k个概率,样本属于概率最大的那个类。
更多相关内容 -
支持向量机(SVM)多分类算法实现
2019-05-13 12:52:18一般的支持向量机(SVM)只能够用作二分类,而本次上传的代码是一个四分类的支持向量机(SVM)算法实现,代码的关键部分都会有注释,适合刚入门的小白看。本代码还用到了libsvm这个工具箱,需要读者自己配置,配置... -
啤酒瓶检测中多分类支持向量机算法的选择* (2009年)
2021-05-06 22:55:54本文通过一对一、一对多、决策有向无环图、二叉树、误差纠错码、一次性求解等多分类支持向量机算法在核函数为线性、多项式、径向基,神经网络的情况下,对多个基准样本进行了分类性能、分类速度、分类准确性的详细... -
多分类支持向量机
2008-08-25 13:20:05多分类支持向量机,SVM -
多分类支持向量机及其Python实现
2018-07-30 23:38:571.多分类支持向量机Multiclass Support Vector Machine (SVM) 其评分函数为:f(ω)=ωx+bf(ω)=ωx+bf(\omega)=\omega x+b 在此用到的都是支持向量机的原始形式,没有核方法也没有使用SMO算法。无约束原始优化问题...1.多分类支持向量机Multiclass Support Vector Machine (SVM)
- 其评分函数为: f(ω)=ωx+b f ( ω ) = ω x + b
- 在此用到的都是支持向量机的原始形式,没有核方法也没有使用SMO算法。无约束原始优化问题。
- 常用的多分类支持向量机有One-Vs-All(OVA),All-Vs-All,Structured SVM,其中OVA比较简单。
- 多分类支持向量机对第i个类的损失函数是 Li=∑j≠yimax(0,sj−syi−Δ) L i = ∑ j ≠ y i m a x ( 0 , s j − s y i − Δ ) ,若 sj s j 不是比 syi s y i 还小 Δ Δ ,或者 sj s j 比 syi s y i 还大,那就要对其评分进行惩罚。这样就是说,到最后,正确类别的分数要比错误分类的分数至少大 Δ Δ 。 阈值为0的max(0,-)函数也被称为合页损失函数(hingle loss)。
- L=1N∑iLi⏟data loss+λR(W)⏟regularization loss L = 1 N ∑ i L i ⏟ data loss + λ R ( W ) ⏟ regularization loss
- data loss中的超参数 Δ Δ 和正则化前面的超参数 λ λ 看似无关,其实它们两个之间相互影响。使用小的间隔 Δ Δ 时,将会压缩 ω ω 的值在较小的区间上,正则化损失也就会变小,反之亦然。
和二分类支持向量机之间的关系
,二分类支持向量机的损失函数 Li=Cmax(0,1−yiwTxi)+R(W) L i = C max ( 0 , 1 − y i w T x i ) + R ( W ) ,C也是一个超参数, C∝1λ C ∝ 1 λ .
2.Python 实现
训练数据获取地址:https://raw.githubusercontent.com/lxrobot/General-source-code/master/SVM/data216x197.npy
#!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Created on Sun Jul 29 17:15:25 2018 @author: rd """ from __future__ import division import numpy as np """ This dataset is part of MNIST dataset,but there is only 3 classes, classes = {0:'0',1:'1',2:'2'},and images are compressed to 14*14 pixels and stored in a matrix with the corresponding label, at the end the shape of the data matrix is num_of_images x 14*14(pixels)+1(lable) """ def load_data(split_ratio): tmp=np.load("data216x197.npy") data=tmp[:,:-1] label=tmp[:,-1] mean_data=np.mean(data,axis=0) train_data=data[int(split_ratio*data.shape[0]):]-mean_data train_label=label[int(split_ratio*data.shape[0]):] test_data=data[:int(split_ratio*data.shape[0])]-mean_data test_label=label[:int(split_ratio*data.shape[0])] return train_data,train_label,test_data,test_label """compute the hingle loss without using vector operation, While dealing with a huge dataset,this will have low efficiency X's shape [n,14*14+1],Y's shape [n,],W's shape [num_class,14*14+1]""" def lossAndGradNaive(X,Y,W,reg): dW=np.zeros(W.shape) loss = 0.0 num_class=W.shape[0] num_X=X.shape[0] for i in range(num_X): scores=np.dot(W,X[i]) cur_scores=scores[int(Y[i])] for j in range(num_class): if j==Y[i]: continue margin=scores[j]-cur_scores+1 if margin>0: loss+=margin dW[j,:]+=X[i] dW[int(Y[i]),:]-=X[i] loss/=num_X dW/=num_X loss+=reg*np.sum(W*W) dW+=2*reg*W return loss,dW def lossAndGradVector(X,Y,W,reg): dW=np.zeros(W.shape) N=X.shape[0] Y_=X.dot(W.T) margin=Y_-Y_[range(N),Y.astype(int)].reshape([-1,1])+1.0 margin[range(N),Y.astype(int)]=0.0 margin=(margin>0)*margin loss=0.0 loss+=np.sum(margin)/N loss+=reg*np.sum(W*W) """For one data,the X[Y[i]] has to be substracted several times""" countsX=(margin>0).astype(int) countsX[range(N),Y.astype(int)]=-np.sum(countsX,axis=1) dW+=np.dot(countsX.T,X)/N+2*reg*W return loss,dW def predict(X,W): X=np.hstack([X, np.ones((X.shape[0], 1))]) Y_=np.dot(X,W.T) Y_pre=np.argmax(Y_,axis=1) return Y_pre def accuracy(X,Y,W): Y_pre=predict(X,W) acc=(Y_pre==Y).mean() return acc def model(X,Y,alpha,steps,reg): X=np.hstack([X, np.ones((X.shape[0], 1))]) W = np.random.randn(3,X.shape[1]) * 0.0001 for step in range(steps): loss,grad=lossAndGradNaive(X,Y,W,reg) W-=alpha*grad print"The {} step, loss={}, accuracy={}".format(step,loss,accuracy(X[:,:-1],Y,W)) return W train_data,train_label,test_data,test_label=load_data(0.2) W=model(train_data,train_label,0.0001,25,0.5) print"Test accuracy of the model is {}".format(accuracy(test_data,test_label,W)) >>>python linearSVM.py The 0 step, loss=2.13019790746, accuracy=0.913294797688 The 1 step, loss=0.542978231611, accuracy=0.924855491329 The 2 step, loss=0.414223869196, accuracy=0.936416184971 The 3 step, loss=0.320119455456, accuracy=0.942196531792 The 4 step, loss=0.263666138421, accuracy=0.959537572254 The 5 step, loss=0.211882339467, accuracy=0.959537572254 The 6 step, loss=0.164835849395, accuracy=0.976878612717 The 7 step, loss=0.126102746496, accuracy=0.982658959538 The 8 step, loss=0.105088702516, accuracy=0.982658959538 The 9 step, loss=0.0885842087354, accuracy=0.988439306358 The 10 step, loss=0.075766608953, accuracy=0.988439306358 The 11 step, loss=0.0656638756563, accuracy=0.988439306358 The 12 step, loss=0.0601955544228, accuracy=0.988439306358 The 13 step, loss=0.0540709950467, accuracy=0.988439306358 The 14 step, loss=0.0472173965381, accuracy=0.988439306358 The 15 step, loss=0.0421049154242, accuracy=0.988439306358 The 16 step, loss=0.035277229437, accuracy=0.988439306358 The 17 step, loss=0.0292794459009, accuracy=0.988439306358 The 18 step, loss=0.0237297062768, accuracy=0.994219653179 The 19 step, loss=0.0173572330624, accuracy=0.994219653179 The 20 step, loss=0.0128973291068, accuracy=0.994219653179 The 21 step, loss=0.00907220930146, accuracy=1.0 The 22 step, loss=0.0072871437553, accuracy=1.0 The 23 step, loss=0.00389257560805, accuracy=1.0 The 24 step, loss=0.00347981408653, accuracy=1.0 Test accuracy of the model is 0.976744186047
-
支持向量机一对一多分类
2017-04-10 20:54:09已经把相应的函数放在了压缩包里,包括数据图片运行结果,用的是传统的一对一支持向量机多分类方法,直接可以运行。如果你不能直接运行,请安装stprtool工具箱或相应的函数。 -
基于BP神经网络与多分类支持向量机的水质识别与分类.pdf
2021-09-26 21:32:15基于BP神经网络与多分类支持向量机的水质识别与分类.pdf -
基于多分类支持向量机算法的PCB焊点检测研究.pdf
2021-07-25 00:58:20基于多分类支持向量机算法的PCB焊点检测研究.pdf -
基于支持向量机的中文极短文本分类模型
2021-04-30 13:20:09为了有效提取极短文本中的关键特征信息,提出了一种基于支持向量机的极短文本分类模型。首先对原数据进行数据清洗并利用jieba分词将清洗过的数据进行处理;再将处理后的数据存入数据库,通过TF-IDF进行文本特征的... -
基于预测-校正原对偶内点法的多分类支持向量机学习算法 (2009年)
2021-05-21 00:15:19是一种新型通用的有监督的机器学习方法,其核心思想是使结构风险极小化,但是由于需要求解二次规划,使得它在求解大规模数据上具有一定的局限性,尤其是对于多分类问题,现有的支持向量机算法具有很高的复杂性。... -
基于使用常规水质传感器的多分类支持向量机对污染物进行在线分类
2021-03-08 06:31:06基于使用常规水质传感器的多分类支持向量机对污染物进行在线分类 -
多分类支持向量机SVM
2011-03-08 16:24:57对多分类支持向量机几种算法进行分析, 系统地比较了各种算法的性能 -
新建文件夹_基于GEE_gee_支持向量机分类_
2021-09-30 10:47:03通过GEE平台调用Landsat8影像数据对土地覆被进行分类,并且计算其总体精度 -
Python 支持向量机分类器的实现
2020-09-18 03:03:10主要介绍了Python 支持向量机分类器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
实验5-支持向量机分类实验.doc
2021-10-31 21:43:341、掌握支持向量机的原理 2、能够理解支持向量机分类算法; 3、掌握sklearn的支持向量机分类算法; -
葡萄酒支持向量机SVM分类
2019-04-15 17:57:44采用支持向量机SVM分类葡萄酒,完整代码,无错误,下载即可运行。 -
SVM支持向量机,实现iris二分类问题
2021-06-16 20:50:06matlab程序+数据集(预处理完成的) -
基于支持向量机(SVM)的粒子群算法处理乳腺癌的分类预测
2022-04-01 21:01:37内包含基于SVM的粒子群算法来处理乳腺癌的分类预测,其中首先用到了特征提取方法进行特征提取,然后再进行了分类预测。 本程序调用libsvm,使用该代码时,首先需要配置libsvm函数包。 -
R语言机器学习系列-支持向量机多分类代码
2022-03-06 10:07:33与二分类问题类似,首先构建公式,然后采用e1071包的svm函数训练支持向量机模型。为了svm函数能够自动构建分类模型,需要先将训练集中因变量设置为factor。为了预测时能输出预测概率,需要设置probability参数为TRUE...与二分类问题类似,首先构建公式,然后采用e1071包的svm函数训练支持向量机模型。为了svm函数能够自动构建分类模型,需要先将训练集中因变量设置为factor。为了预测时能输出预测概率,需要设置probability参数为TRUE。
对于分类模型预测时从概率到分类的转化,多分类模型没有采用如二分类模型中的约登法则,一般采用赢家通吃的规则,简单理解就是哪个分类的预测概率最高就将其预测为哪个分类。当然也有其转化规则,比如402040规则。相关的规则,有RSNNS包里面的analyzeClassification函数,大家可以了解下。
# 因变量自变量构建公式 colnames(winequalityred) form_clsm <- as.formula( paste0("quality ~ ", paste(colnames(traindata)[1:11], collapse = " + ")) ) form_clsm # 构建模型 fit_svm_clsm <- svm(form_clsm, data = traindata, kernel = "radial", cost = 1, probability = T) fit_svm_clsm # str(fit_svm_clsm) # 训练集预测概率 trainpred <- predict(fit_svm_clsm, newdata = traindata, probability = T) trainpredprob <- attr(trainpred, "probabilities")
-
基于支持向量机的改进分类算法
2021-05-06 12:30:42首先介绍支持向量机的基本原理,总结了常见的多分类器分类算法及其特点,结合现有分类算法的优点,为分类器引入了不同的权值,提出二叉树改进分类算法,有效避免了常用分类算法不足.通过仿真实验,与典型的多类分类... -
支持向量机三分类算法
2018-06-12 14:03:571-16个标签分为三大类,判断心脏病的有无。此SVM 算法采用Matlab的形式进行编码,通俗易懂。 -
文本分类,使用机器学习算法,如朴素贝叶斯、逻辑回归、支持向量机等
2022-04-27 06:53:46文本分类,使用机器学习算法,如朴素贝叶斯、逻辑回归、支持向量机等 -
数学建模国赛获奖论文分类整理:支持向量机
2020-05-21 17:25:18数学建模国赛获奖论文整理,使用支持向量机做的论文集合,可以系统的学习支持向量机在数学建模中的应用,非常有用。 -
麻雀搜索算法优化支持向量机python
2022-04-18 22:26:351.有数据集 2.麻雀算法优化支持向量机python代码 -
详解python 支持向量机(SVM)算法
2020-12-16 22:13:23支持向量机,能在N维平面中,找到最明显得对数据进行分类的一个超平面!看下面这幅图: 如上图中,在二维平面中,有红和蓝两类点。要对这两类点进行分类,可以有很多种分类方法,就如同图中多条绿线,都 -
机器学习推导+python实现(九):线性支持向量机
2020-12-21 10:59:30大家不免会发现其既定前提是数据线性可分,但实际生活中对于线性可分的数据来说还是比较少,那么如何在线性可分支持向量机的基础上进行改机使得线性支持向量机能够在线性不可分的数据中绘制超平面进行分类任务。... -
SVM实验_fashionmnist_支持向量机_
2021-10-01 12:58:26在fashion_mnist数据集上进行SVM的分类及调参 -
机器学习算法总结2:感知机和支持向量机
2021-01-06 18:21:02感知机于1957年由Rosenblatt提出,是神经网络与支持向量机的基础。感知机二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值,该模型属于判别模型,旨在求出将训练数据进行线性划分的... -
matlab-SVM支持向量机数据分类-高精度
2021-11-15 09:58:03使用SVM对数据进行分类