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

使用sklearn.svm实现数据集的拟合和预测

发布时间:2023-12-15 21:58:29

使用sklearn库中的svm模块可以实现数据集的拟合和预测。接下来我将给出一个实例来说明如何使用sklearn.svm进行模型训练和预测。

首先,我们需要导入必要的库和数据集。在这个例子中,我们将使用sklearn库中的datasets模块中的make_classification函数生成一个二分类的人工数据集。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import svm
import matplotlib.pyplot as plt

# 生成二分类人工数据集
X, y = datasets.make_classification(n_samples=100, n_features=2, n_informative=2, 
                                    n_redundant=0, random_state=42)

# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

接着,我们可以使用svm模块中的SVC类来初始化一个分类器,并通过fit方法对训练集进行拟合。

# 初始化一个SVM分类器
classifier = svm.SVC(kernel='linear')

# 对训练集进行拟合
classifier.fit(X_train, y_train)

在这个例子中,我们使用了线性核函数。SVM模型的训练过程是通过找到一个超平面来最大化分类间的间隔。SVC类中的kernel参数可以设置为linear(线性核函数)或rbf(径向基核函数)等。

完成模型训练后,我们可以使用predict方法对测试集进行预测,并通过score方法计算模型在测试集上的准确率。

# 对测试集进行预测
y_pred = classifier.predict(X_test)

# 计算准确率
accuracy = classifier.score(X_test, y_test)
print("准确率:", accuracy)

最后,我们还可以可视化分类结果,通过将训练集和测试集的特征点绘制在散点图上,并根据预测结果使用不同的颜色进行标记。

# 绘制训练集和测试集的散点图
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap='viridis')
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, cmap='viridis', marker='x')

# 绘制决策边界
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 = classifier.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实现数据集的拟合和预测的一个例子。通过以上步骤,我们可以利用svm模块建立SVM分类器,并进行训练和预测,最后通过数据可视化来展示分类结果。