一、实验目的 1.熟悉支持向量机SVM (Support Vector Machine)模型分类算法的使用。 2.利用高斯核作为核函数训练模型。 3.保存并调用训练模型并预测自己给出样例的类别。 4.实现SVM分类的可视化。python代码
时间: 2024-03-25 09:37:50 浏览: 116
好的,以下是一个简单的Python代码示例,用于实现支持向量机(SVM)的训练和预测,使用高斯核函数。同时,还包括了模型的保存和调用,以及可视化分类结果的部分。
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.datasets import make_blobs
from sklearn.externals import joblib
# 生成随机数据
X, y = make_blobs(n_samples=50, centers=2, random_state=6)
# 训练SVM模型
clf = svm.SVC(kernel='rbf', gamma=0.5, C=1.0)
clf.fit(X, y)
# 保存模型到文件
joblib.dump(clf, 'svm_model.pkl')
# 从文件中加载模型
clf = joblib.load('svm_model.pkl')
# 预测新样本的分类
new_sample = [[-5, 0], [0, 5], [5, 0]]
print(clf.predict(new_sample))
# 可视化分类结果
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
plt.xlabel('X1')
plt.ylabel('X2')
# 生成网格数据并绘制分类边界
xlim = plt.gca().get_xlim()
ylim = plt.gca().get_ylim()
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50), np.linspace(ylim[0], ylim[1], 50))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contour(xx, yy, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])
plt.show()
```
这个示例程序使用`make_blobs()`函数生成了50个带标签的二维数据点。接着,使用`svm.SVC()`函数构建了一个基于高斯核的SVM分类器,并使用`fit()`方法对数据进行训练。训练好模型后,使用`joblib.dump()`函数将模型保存到文件中。接下来,使用`joblib.load()`函数从文件中加载模型,并使用`predict()`方法对新样本进行分类。最后,使用Matplotlib库绘制了散点图和分类边界。
阅读全文