支持向量机(Support Vector Machine,SVM)是一种强大的监督学习算法,广泛用于分类和回归问题。它能够有效处理线性和非线性数据,并在复杂数据集中表现出色。本文将介绍如何使用Python和scikit-learn库实现SVM,以及如何通过可视化不同参数设置来理解其工作原理。
一、什么是支持向量机(SVM)?
支持向量机是一种二类分类模型,它的基本思想是在特征空间中找到一个最优的超平面,能够将不同类别的数据点分隔开来,并且使得两侧距离最近的数据点(支持向量)到超平面的距离最大化。对于非线性可分的数据集,SVM通过核函数将数据映射到高维空间,使得数据线性可分。
二、实现步骤
我们将使用Python的scikit-learn库来实现一个简单的支持向量机分类器,并在一个合成的数据集上进行可视化展示。
1、导入必要的库和数据集生成
from sklearn import svm
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
import numpy as np
2、定义绘制决策边界和支持向量的函数
# 定义绘制决策边界和支持向量的函数
def plot_hyperplane(clf, X, y, h=0.02, draw_sv=True, title='Hyperplane'):
# 确定绘图边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
np.arange(y_min, y_max, h))
# 设置绘图属性
plt.title(title)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
# 生成网格数据并进行预测
Z = clf.predict(np.c_