使用Python实现线性SVM分类:生成数据、训练模型并预测新样本

本教程将使用Python语言,利用scikit-learn库,演示如何生成随机数据,训练线性支持向量机模型,并对新样本进行分类预测。代码示例涵盖数据生成、模型训练、参数输出和预测过程。

1. 生成数据

首先,我们需要生成一些随机数据。我们将生成100个数据点,每个数据点包含两个特征(x1, x2)。我们将这些数据点划分为两类:0类和1类。

import numpy as np

# 随机生成100个数据点
np.random.seed(0)
X = np.random.randn(100, 2)
y = np.zeros(100)
# 将前50个数据点划分为1类
y[:50] = 1

2. 训练模型

接下来,我们将使用scikit-learn库中的SVC类来训练线性SVM模型。我们将使用'linear'核函数。

from sklearn.svm import SVC

# 构建SVM模型
clf = SVC(kernel='linear')
# 训练模型
clf.fit(X, y)
# 输出模型参数
print('W:', clf.coef_)
print('b:', clf.intercept_)

3. 预测新样本

最后,我们将使用训练好的模型对新的样本进行分类预测。

# 预测新样本
new_X = np.array([[1, 2], [-1, -2]])
print(clf.predict(new_X))

完整代码:

import numpy as np
from sklearn.svm import SVC

# 随机生成100个数据点
np.random.seed(0)
X = np.random.randn(100, 2)
y = np.zeros(100)
# 将前50个数据点划分为1类
y[:50] = 1

# 构建SVM模型
clf = SVC(kernel='linear')
# 训练模型
clf.fit(X, y)
# 输出模型参数
print('W:', clf.coef_)
print('b:', clf.intercept_)

# 预测新样本
new_X = np.array([[1, 2], [-1, -2]])
print(clf.predict(new_X))

代码说明:

  • np.random.randn(100, 2):生成100个随机数据点,每个数据点包含两个特征(x1, x2)。
  • y[:50] = 1:将前50个数据点的类别设置为1,其余数据点的类别设置为0。
  • SVC(kernel='linear'):创建一个线性SVM模型。
  • clf.fit(X, y):使用生成的数据训练模型。
  • clf.coef_:输出模型参数W。
  • clf.intercept_:输出模型参数b。
  • clf.predict(new_X):对新样本进行分类预测。

本教程演示了如何使用Python语言实现线性SVM分类。你可以根据自己的需要修改代码,例如改变数据生成方式、调整模型参数、使用不同的核函数等。

Python实现线性SVM分类:生成数据、训练模型并预测新样本

原文地址: https://www.cveoy.top/t/topic/jriP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录