Python实现线性SVM分类:生成数据、训练模型并预测新样本
使用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分类。你可以根据自己的需要修改代码,例如改变数据生成方式、调整模型参数、使用不同的核函数等。
原文地址: https://www.cveoy.top/t/topic/jriP 著作权归作者所有。请勿转载和采集!