SVM线性调包

import numpy as np
import pylab as pl
from sklearn import svm

X = np.array([[3, 3], [4, 3], [1, 1]])
Y = np.array([1, 1, -1])
clf = svm.SVC(kernel="linear")  # 定义分类器,核函数为线性核符合题意
clf.fit(X, Y)  # 即计算出划分超平面

w = clf.coef_[0]  # w 是一个二维数据,coef 就是 w = [w0,w1]
k = -w[0] / w[1]  # 斜率,即w

xx = np.linspace(-6, 6)  # 用于画超平面
# clf.intercept[0] 即b
yy = k * xx - (clf.intercept_[0]) / w[1]  # 带入 x 的值,获得直线方程

b = clf.support_vectors_[0]
yy_down = k * xx + (b[1] - k * b[0])  # 计算下界

b = clf.support_vectors_[-1]
yy_up = k * xx + (b[1] - k * b[0])  # 计算上界

print("支持向量,即最大间隔边界上的点", clf.support_vectors_)
print("属于支持向量的点在原数据集中的索引", clf.support_)
print("在每一个类中属于支持向量的个数:", clf.n_support_)
print("(4,4)的预测值为", clf.predict([[4, 4]]))
print("超平面的w", w)
print("超平面的b", clf.intercept_[0])

# 绘制划分超平面,边际平面和样本点
pl.plot(xx, yy, 'k-')
pl.plot(xx, yy_down, 'k--')
pl.plot(xx, yy_up, 'k--')

pl.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1],
           s=80, facecolors='none')
pl.scatter(X[:, 0], X[:, 1], c=Y)
pl.axis('tight')
pl.show()
n
在这里插入代码片
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值