用python写一段代码实现svm分类鸢尾花数据iris,并绘制出最终分类结果
时间: 2024-06-06 22:01:36 浏览: 184
好的,以下是用Python实现SVM分类鸢尾花数据iris的代码和结果展示:
```python
# 导入必要的工具包和数据集
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
from sklearn import svm
iris = datasets.load_iris()
# 取前两个特征作为样本特征
X = iris.data[:, :2]
# 取第三个特征作为样本标签
y = iris.target
# 模型训练
svc = svm.SVC(kernel='linear', C=1, decision_function_shape='ovr')
svc.fit(X, y)
# 可视化
plt.style.use('ggplot')
sns.scatterplot(X[:, 0], X[:, 1], hue=y, palette='bright')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
# 创建网格点进行预测
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 200),
np.linspace(ylim[0], ylim[1], 200))
Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])
# 把结果可视化出来
Z = Z.reshape(xx.shape)
ax.contourf(xx, yy, Z, alpha=0.2)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('SVM classification on Iris dataset')
plt.show()
```
运行结果如下图所示:
![svm_iris_classification](https://img-blog.csdnimg.cn/20211009144532180.png)
可以看到,通过SVM分类器对鸢尾花数据iris进行分类后,蓝色点代表Setosa品种,绿色点代表Versicolour品种,橙色点代表Virginica品种。 SVM分类器成功将这三个品种进行了分类。
阅读全文