python sklearn svm多分类_sklearn中SVM一对一多分类参数的研究

1、引言

最近在学习sklearn库中SVM算法中C-SVC多分类的相关应用,但是在sklearn中关于如何提取训练后的参数,并脱离原有的sklearn库,甚至脱离原有的python开发环境,在新的平台和系统中使用训练后的参数完成前向推理,是本文所需要讲述的内容。由于笔者主要从事于嵌入式平台(包括但不限于ARM、FPGA,目前主要是异构平台)中机器学习算法的相关应用与加速设计,所以需要对于算法的每一个步骤和细节都具有深刻的了解。而目前从网上查阅到的相关资料对于sklearn多分类的解释不够清晰,综合查阅到的中文资料和英文资料,在此处做一个详细的说明。

2、sklearn多分类示例

首先以二维平面内通过聚类生成四组数据,分别隶属于四个不同的类别,对应的代码如下所示,最终生成目标图像如图1所示。

1 importnumpy as np2 importmatplotlib.pyplot as plt3 from sklearn importsvm4 from sklearn.datasets importmake_blobs5

6 n_samples = [10, 10, 10, 10]7 centers = [[0.0, 0.0], [2.0, 2.0], [4.0, 4.0], [6.0, 6.0]]8 cluster_std = [0.4, 0.4, 0.4, 0.4]9

10 x, y = make_blobs(n_samples=n_samples, centers=centers, cluster_std=cluster_std, random_state=0, shuffle=False)11

12 plt.scatter(x[:, 0], x[:, 1], c=y, cmap=plt.cm.rainbow, edgecolors='k')13

14 plt.show()

图1 聚类方法生成四组不同的数据

为了更加能够简化多分类的示例,此处直接使用线性核函数的方法,对于sklearn中C-SVC算法中多分类方法,网上给出的多分类示例包含有一对一(ovo)、一对多(ovr)、有向无环图等方法,但是此处需要说明的是,sklearn中的SVM算法底层的实现采用了台湾大学林智仁教授等发表的LibSVM运行库,而LibSVM中采用的多分类方法为一对一(ovo)的多分类方法(之前笔者误以为sklearn中能够支持不同的多分类方法,对于后面提到的提取训练参数并自行完成前向推理过程产生了误解,导致好几天没能理解参数函数)。因此,由于sklearn中C-SVC算法只能够支持一对一的多分类方法,只需要按照一对一的理论方法来理解给出的参数即可。

接下来给出笔者进行二维平面内多分类的示例,示例程序如下:

1 importnumpy as np2 importmatplotlib.pyplot as plt3 from sklearn importsvm4 from sklearn.datasets importmake_blobs5

6 n_samples = [10, 10, 10, 10]7 centers = [[0.0, 0.0], [2.0, 2.0], [4.0, 4.0], [6.0, 6.0]]8 cluster_std = [0.4, 0.4, 0.4, 0.4]9

10 x, y = make_blobs(n_samples=n_samples, centers=centers, cluster_std=cluster_std, random_state=0, shuffle=False)11

12 clf = svm.SVC(kernel='linear', C=

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值