介绍
在上一篇博客:数据挖掘入门系列教程(八点五)之SVM介绍以及从零开始公式推导中,详细的讲述了SVM的原理,并进行了详细的数学推导。在这篇博客中,主要是应用SVM,使用SVM进行数据分类,不会涉及到SVM的解释,so,如果对svm并不是特别了解的话,非常建议先去看我的上一篇博客(or其他博主的博客),然后再来看这一篇博客。因为在这篇并不是自己实现SVM而是基于sklearn中的svm包来进行应用。因此,我们可能使用几行代码可能就可以对数据集进行训练了。
「我们不仅要知其然,更要知其所以然。」
在这一章博客中,我们会使用SVM做两个任务:
- 基于SVM对MINIST数据集进行分类。
- 基于SVM对垃圾邮件进行判断
基于SVM对MINIST数据集进行分类
在前面神经网络的博客中,我们基于pybrain使用神经网络对MINIST手写数据集进行分类,但是最后结果并不是很好(可以说得上是比较差了),只有:
这次我们使用SVM来进行继续操作。数据集在前面的博客中已经进行说明,就不再赘述。
直接看代码吧:
使用SVM
下面的代码没有什么好说的,就是加载下载处理好的数据集,然后在将数据集分割成训练集和测试集(在Github中有这两个数据集,先解压再使用【其中dataset是压缩包,需要解压】):
import numpy as np
X = np.load("./Data/dataset.npy")
y = np.load("./Data/class.npy")
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(X,y,random_state=14 )
然后我们就可以使用SVM进行训练了:
from sklearn import svm
predictor = svm.SVC(gamma='scale', C=1.0, decision_function_shape='ovr', kernel='rbf')
# 进行训练
predictor.fit(x_train, y_train)
同样关于SVM的官网介绍在这里。关于svm包具体的使用可以看官方文档,官方文档写的还是蛮详细的。
这里来解释一下代码:
svm有很多类型的Estimators如下:
在这里我们选择SVC
,也就是说使用SVM进行分类。具体的使用在这里。关于代码中参数的介绍:
C = 1.0
在上一章博客中,我们提到的软间隔支持向量机中提到了以下公式: