使用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分类器,并进行训练和预测,最后通过数据可视化来展示分类结果。
