一
这里讲解我以二维空间为例。首先定义两个数组:
c = [[2, 0], [1, 1], [2, 3]] c1 = [0, 0, 1]
二
画出边界线y1,y2
w1y1+w0x1+b1=0
y1= -w0/w1*x1-b1/w1
假设斜率为a,a=-w0/w1
w = clf.coef_ # 获取w a = -w[0] / w[1] # 斜率
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])#上边界
clf.intercept_[0]#用来获得截距(这里共有两个值,分别为到x和到y的)
yy = a * xx - (clf.intercept_[0]) / w[1]
源代码:
from skleran import svm import numpy as np import matplotlib.pyplot as plt x = [[2,0], [1, 1], [2, 3]] y = [0, 0, 1] clf = svm.SVC(kerner='linear') clf.fit(x, y) w = clf.coef_[0] a = -w[0]/w[1] xx = np.linspace(-5, 5) yy = a*xx - (clf.intercept_[0])/w[1] 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]) plt.figure(figsize=(8, 4)) plt.plot(xx, yy) plt.plot(xx, yy_down) plt.plot(xx, yy_up) plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=80) plt.axis('tight) plt.show()
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225011.html原文链接:https://javaforall.net
