入门 Machine Learning SVM 笔记

SVM(Support Vector Machine)是在分类与回归分析中分析数据的监督式学习模型(supervised learning)。

SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

使用 scikit-learn 学习一个简单的例子 —— 手写数字识别。

使用 scikit 内置数据集,选定 0:-8 为训练样本,-7:-1 为测试样本。训练 SVM 分类器时采用默认核函数 rbf 高斯核,取 gamma 值为 .0001,其中 gamma 越小,分类界面越连续,C 取 100,其中 C 越大,对误分类的惩罚增大,趋向于对训练集全分对的情况,但泛化(generalization)能力弱;反之对误分类的惩罚减小,将他们当成噪声点,泛化能力较强。

Py:

#!/usr/bin/env python3

import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn import svm

digits = datasets.load_digits()   # NOTE: num - 1797

clf = svm.SVC(gamma=.0001, C=100)

x, y = digits.data[:-8], digits.target[:-8]
clf.fit(x, y)

index_predict = -5
print(f'prediction { clf.predict( [digits.data[index_predict]] ) }.')
plt.imshow(digits.images[index_predict], cmap=plt.cm.gray_r, interpolation='nearest')
plt.show()

当减小 gamma 值后,可发现数字识别的正确率下降。

参考:

  1. http://sklearn.apachecn.org/cn/0.19.0/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC
  2. https://zh.wikipedia.org/wiki/支持向量机
  3. https://blog.csdn.net/szlcw1/article/details/52336824

作者: YanWen

Web 开发者

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s