支持向量机(SVM),是机器学习中最重要的算法之一,也是除集成算法外,最强的学习器。它能解决有监督、无监督、半监督,分类和回归几乎所有场景。支持向量机,就是通过找出边际最大的决策边界,来对数据进行分类的分类器。

1、生成测试数据

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

x, y = make_blobs(200, 2, centers=2, random_state=7)
plt.scatter(x[:, 0], x[:, 1], c=y)
# plt.show()

2、画超平面

训练时返回的权重矩阵和截距,对应方程w0·x0+w1·x1+b=0,化简得x1=-w0/w1·x0-b/w1

from sklearn.svm import SVC
import numpy as np

clf = SVC(kernel='linear').fit(x, y)

# 权重矩阵和截距
weight = clf.coef_[0]
bias = clf.intercept_[0]

k = -weight[0] / weight[1]
b = -bias / weight[1]

# 取图像范围
xlim = plt.xlim()
x_ = np.linspace(xlim[0], xlim[1], x.shape[0])
plt.plot(x_, k * x_ + b)
plt.ylim(0, 10)
# plt.show()

3、标注支持向量

for vec in clf.support_vectors_:
    plt.scatter(vec[0], vec[1], c='red', marker='x')
plt.show()

本文为 陈华 原创,欢迎转载,但请注明出处:http://edu.ichenhua.cn/read/284