概述
线性可分的二维超平面
生成数据
利用sklearn中make_blobs函数,
X, Y = make_blobs(n_samples=30, n_features=2, centers=2,
random_state=3, cluster_std=1)
n_samples: 待生成的样本的总数,如果不设置默认是100个。
n_features: 每个样本的特征数,如果不设置默认是2个。
centers: 要生成的样本中心(类别)数,或者是确定的中心点,如果不设置 默认是2个。
cluster_std: 每个类别的方差,例如我们希望生成2类数据,其中一类比另一 类具有更大的方差,可以将cluster_std设置为[1.0,3.0],如果不设置默认1.0。
random_state: 是随机数生成器使用的种子,我试了试会影响超平面的方向。
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets.samples_generator import make_blobs
# we create 30 separable pointS
X, Y = make_blobs(n_samples=30, n_features=2, centers=2,
random_state=3, cluster_std=1)
# fit the model
clf = svm.SVC(kernel='linear')
clf.fit(X, Y)
# get the separating hyperplane
w = clf.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(-7,4)
yy = a * xx - (clf.intercept_[0]) / w[1]
# plot the parallels to the separating hyperplane that pass through the
# support vectors
b = clf.support_vectors_[0]
yy_down = a * xx + (b[1] - a * b[0])
b = clf.support_vectors_[-1]
yy_up = a * xx + (b[1] - a * b[0])
# plot the line, the points, and the nearest vectors to the plane
plt.plot(xx, yy, 'k-')
plt.plot(xx, yy_down, 'k--')
plt.plot(xx, yy_up, 'k--')
plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1],
s=80, facecolors='none')
plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)
plt.axis('tight')
plt.show()
print(clf.decision_function(X))
把random_state=3改成8,为了好看把xx = np.linspace(,)区间改一下,就得到了下图。
最后
以上就是害羞唇膏为你收集整理的画SVM支持向量机线性超平面的全部内容,希望文章能够帮你解决画SVM支持向量机线性超平面所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复