欢迎访问宙启技术站
智能推送

Python中使用sklearn.svm进行决策边界预测

发布时间:2023-12-11 11:44:33

在Python中使用sklearn.svm进行决策边界预测,可以通过支持向量机(SVM)算法来实现。SVM是一种非常有用的机器学习算法,可以用于分类和回归问题。它的主要思想是找到一个 的决策边界,使得不同类别的样本点能够最大程度地被分开。

首先,我们需要安装scikit-learn库,可以通过在终端中运行以下命令来完成安装:

pip install scikit-learn

接下来,我们将使用一个简单的例子来说明如何使用sklearn.svm进行决策边界预测。考虑一个二维数据集,其中包含两个类别(红色和蓝色)。我们的目标是找到一个决策边界,将这两个类别完美地分割开来。

我们首先需要导入所需的库和数据集:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC

# 创建一个简单的二维数据集
X = np.array([[1, 2], [2, 4], [3, 1], [6, 7], [7, 5], [8, 6]])
y = np.array([0, 0, 0, 1, 1, 1])  # 标签(类别)

接下来,我们创建一个SVC对象,并使用数据集来训练我们的模型:

# 创建一个SVC对象
model = SVC(kernel='linear')

# 训练模型
model.fit(X, y)

在这里,我们选择了一个线性核函数(kernel='linear'),这意味着我们的决策边界将是一个直线。你还可以选择其他核函数,如多项式核函数或高斯核函数,以适应不同的问题。

训练完成后,我们就可以使用模型来进行预测并绘制决策边界了:

# 预测新样本的类别
new_samples = np.array([[4, 3], [5, 5]])
predicted_labels = model.predict(new_samples)

# 绘制训练样本
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='bwr', edgecolors='k')
# 绘制预测样本
plt.scatter(new_samples[:, 0], new_samples[:, 1], c=predicted_labels, cmap='bwr', marker='x', s=100, edgecolors='k')

# 绘制决策边界
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 生成网格点
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T

# 获取决策函数
Z = model.decision_function(xy).reshape(XX.shape)

# 绘制决策边界
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])

# 显示图像
plt.show()

运行上述代码后,我们将得到一个包含训练样本、预测样本和决策边界的散点图。决策边界表示为红色和蓝色之间的虚线。

通过这个例子,我们可以看到,使用sklearn.svm库的SVC模块可以方便地进行决策边界预测。希望这个例子能帮助你更好地理解如何使用sklearn.svm进行决策边界预测。