入门 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

作者: V

Web Dev

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s