我用SVM算法绘制了决策边界图,但是图例显示0,1,2,3,4并没有按照我的csv文件中的标签来,如果想要更改图例,python代码是什么
时间: 2024-01-03 21:03:32 浏览: 67
你可以使用 `matplotlib` 库中的 `legend` 函数来更改图例的显示。具体操作如下所示:
1. 给每个类别定义一个标签,例如 `label_0`、`label_1`、`label_2` 等;
2. 在绘制决策边界时,加上 `label` 参数,将标签传入;
3. 在绘制完图形后,调用 `legend` 函数,传入标签和位置参数,即可更改图例的显示。
下面是示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
# 加载数据
data = np.loadtxt('data.csv', delimiter=',')
X = data[:, :2]
y = data[:, 2]
# 定义标签
label_0 = 'Class 0'
label_1 = 'Class 1'
# 训练SVM模型
clf = svm.SVC(kernel='linear')
clf.fit(X, y)
# 绘制决策边界
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='coolwarm')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()
xx = np.linspace(xlim[0], xlim[1], 10)
yy = np.linspace(ylim[0], ylim[1], 10)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = clf.decision_function(xy).reshape(XX.shape)
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
linestyles=['--', '-', '--'])
ax.set_xlim(xlim)
ax.set_ylim(ylim)
# 更改图例
plt.legend([label_0, label_1], loc='upper right')
plt.show()
```
在这个示例代码中,我们给类别0和类别1定义了标签 `label_0` 和 `label_1`,并在绘制时传入了 `label` 参数。在绘制完图形后,我们使用 `legend` 函数传入标签和位置参数,即可更改图例的显示。
阅读全文