python编写支持向量机SVM 模型分类算法中利用高斯核作为核函数训练模型。 3.保存并调用训练模型并预测自己给出样例的类别。 4.实现SVM分类的可视化。
时间: 2024-03-21 14:40:50 浏览: 70
支持向量机分类算法SVM模型,python书写
5星 · 资源好评率100%
下面是Python代码实现支持向量机SVM模型分类算法中利用高斯核作为核函数训练模型、保存并调用训练模型并预测自己给出样例的类别以及实现SVM分类的可视化的过程:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
# 加载数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 只取前两个特征
y = iris.target
# 定义网格点的步长
h = .02
# 训练SVM模型,使用高斯核函数
C = 1.0 # SVM正则化参数
svc = svm.SVC(kernel='rbf', C=C, gamma=0.7)
svc.fit(X, y)
# 保存训练好的模型
from sklearn.externals import joblib
joblib.dump(svc, 'svm_model.pkl')
# 加载模型并进行预测
svc = joblib.load('svm_model.pkl')
new_data = np.array([[6.2, 3.1]])
print("预测结果为:", svc.predict(new_data))
# 可视化分类结果
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
np.arange(y_min, y_max, h))
Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.xticks(())
plt.yticks(())
plt.title('SVM Classification')
plt.show()
```
其中,`svm.SVC(kernel='rbf', C=C, gamma=0.7)`中的`kernel='rbf'`表示使用高斯核函数,`C`是SVM的正则化参数,`gamma`是高斯核函数的参数。训练好的模型可以使用`joblib.dump()`函数保存到本地文件,使用`joblib.load()`函数加载本地文件中保存的模型进行预测。最后,使用`matplotlib`库进行SVM分类结果的可视化。
阅读全文