利用python实现支持向量机模型在分类问题并可视化和结果分析
时间: 2024-05-09 16:17:03 浏览: 63
Python支持向量机案例-源代码
好的,我知道了。对于你的问题,首先需要安装SVM模型的库,比如scikit-learn等。接下来,可以使用以下代码实现SVM模型的训练和可视化结果:
```python
# 导入库
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 加载数据
iris = datasets.load_iris()
X = iris.data[:, :2] # 只选用前两个特征
y = iris.target
# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 模型训练
C = 1.0 # 惩罚项参数
clf = svm.SVC(kernel='linear', C=C, decision_function_shape='ovr') # 线性SVM分类器
clf.fit(X_train, y_train) # 拟合
# 可视化结果
def plot_decision_boundary(clf, X, y):
# 设置画图范围
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, 0.02), np.arange(y_min, y_max, 0.02))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
# 绘制决策边界和样本点
plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.6)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Spectral, edgecolors='none')
# 绘制训练集的决策边界
plot_decision_boundary(clf, X_train, y_train)
plt.title('Training Set')
plt.show()
# 绘制测试集的决策边界
plot_decision_boundary(clf, X_test, y_test)
plt.title('Test Set')
plt.show()
# 预测并评估准确率
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
上述代码中,首先加载 iris 数据集并只选用前两个特征。然后对数据集进行划分,使用 SVM 对划分后的训练集进行拟合,接着可视化训练集和测试集的决策边界。最后,用测试集进行预测,并计算预测准确率。
希望这个回答能够解决你的问题。如果你还有其他问题,可以继续问我。
阅读全文