前述
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。
线性支持向量机学习算法如下:
输入:训练数据集
输出:分离超平面和分类决策函数
demo代码示意:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import svm
# Demo演示LogisticRegression分类
# 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])
# 调用SVC模型 (支持向量机分类)
svc = svm.SVC(kernel='linear')
# 用SVM模型拟合构造的数据集
svc = svc.fit(x_fearures, y_label)
## 查看其对应模型的w
print('the weight of Logistic Regression:',svc.coef_)
## 查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',svc.intercept_)
## 模型预测
y_train_pred = svc.predict(x_fearures)
print('The predction result:',y_train_pred)
# 最佳函数
x_range = np.linspace(-3, 3)
w = svc.coef_[0]
a = -w[0] / w[1]
y_3 = a*x_range - (svc.intercept_[0]) / w[1]
# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.plot(x_range, y_3, '-c')
plt.show()
输出:


图中蓝色的线即为判别线。然而事实上,对于所给出的数据,并不只有一种决策边界。决策边界有好有坏,好的分类器不仅仅是能够很好的分开已有的数据集,还能对未知数据集进行两个的划分。为了寻找最优的分类器,我们引入SVM。支持向量机为我们提供了在众多可能的分类器之间进行选择的原则,从而确保对未知数据集具有更高的泛化性。
SVM尝试寻找一个最优的决策边界,距离两个类别的最近的样本最远。样本中距离超平面最近的一些点,叫做支持向量。
本文深入解析了支持向量机(SVM)这一二分类模型,介绍了SVM的学习目标是寻找特征空间上间隔最大的线性分类器。通过具体实例展示了如何使用Python的sklearn库实现SVM分类,包括数据准备、模型训练、参数查看及决策边界的可视化。

被折叠的 条评论
为什么被折叠?



