支持向量机[线性可分]——机器学习

该代码示例展示了如何使用Python的scikit-learn库实现支持向量机(SVM)进行二分类任务。通过训练数据集,应用线性核函数的SVM模型被训练,并计算出决策边界。可视化结果用红色表示类别1,绿色表示类别0,以及分类的决策边界。
摘要由CSDN通过智能技术生成
import numpy as np
from matplotlib import pyplot as plt
import matplotlib as mpl
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
from sklearn import svm  # 支持向量机库
from sklearn.svm import SVC  # (分类)
from sklearn.svm import SVR  # (回归)
X = np.array([[ 1.9643, 4.5957  ], [ 2.2753, 3.8589  ], [ 2.9781, 4.5651  ], [ 2.932, 3.5519  ],
        [ 3.5772, 2.856   ], [ 4.015, 3.1937  ], [ 3.3814, 3.4291  ], [ 3.9113, 4.1761  ],
        [ 2.7822, 4.0431  ], [ 2.5518, 4.6162  ], [ 3.3698, 3.9101  ], [ 3.1048, 3.0709  ],
        [ 1.9182, 4.0534  ], [ 2.2638, 4.3706  ], [ 2.6555, 3.5008  ], [ 3.1855, 4.2888  ],
        [ 3.6579, 3.8692  ], [ 3.9113, 3.4291  ], [ 3.6002, 3.1221  ], [ 3.0357, 3.3165  ],
        [ 1.5841, 3.3575  ], [ 2.0103, 3.2039  ], [ 1.9527, 2.7843  ], [ 2.2753, 2.7127  ],
        [ 2.3099, 2.9584  ], [ 2.8283, 2.6309  ], [ 3.0473, 2.2931  ], [ 2.4827, 2.0373  ],
        [ 2.5057, 2.3853  ], [ 1.8721, 2.0577  ], [ 2.0103, 2.3546  ], [ 1.2269, 2.3239  ],
        [ 1.8951, 2.9174  ], [ 1.561, 3.0709  ], [ 1.5495, 2.6923  ], [ 1.6878, 2.4057  ],
        [ 1.4919, 2.0271  ], [ 0.962, 2.682   ], [ 1.1693, 2.9276  ], [ 0.8122, 2.9992  ],
        [ 0.9735, 3.3881  ], [ 1.25, 3.1937  ], [ 1.3191, 3.5109  ], [ 2.2292, 2.201   ],
        [ 2.4482, 2.6411  ], [ 2.7938, 1.9656  ], [ 2.091, 1.6177  ], [ 2.5403, 2.8867  ],
        [ 0.9044, 3.0198  ], [ 0.76615, 2.5899  ], [ 0.086405, 4.1045  ]])
Y = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])

#SVM分类
model =SVC(C=1.0, kernel='linear')
model.fit(X,Y)
w = model.coef_ #系数
print(w)
print(w[0,0])

b = model.intercept_ #截距
#求决策分界线
xp = np.linspace(np.min(X[:, 0]), np.max(X[:, 0]), 100)
yp = -(w[0, 0] * xp + b) / w[0, 1]
#显示分类结果(决策分界线)

plt.figure()
plt.plot(np.ravel(X[Y == 1, 0]), np.ravel(X[Y == 1, 1]), 'ro', markersize=6)
plt.plot(np.ravel(X[Y == 0, 0]), np.ravel(X[Y == 0, 1]), 'gs', markersize=6)
plt.legend( ["Y=1", "Y=0"], loc='lower right')
plt.plot(xp, yp, 'r-', linewidth=4.0)
plt.grid(True);plt.show()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值