Python 线性判别分析后,只绘制了2个聚类,而不是3个聚类

Python 线性判别分析后,只绘制了2个聚类,而不是3个聚类,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我不能把我所有的数据都放进图表里。这就是我得到的 这就是我需要得到的 我正在使用以下代码: import pandas import matplotlib.pyplot as plt from sklearn.discriminant_analysis import LinearDiscriminantAnalysis import numpy as np dataset = np.loadtxt("wine.data.csv", delimiter=",") print(dataset

我不能把我所有的数据都放进图表里。这就是我得到的

这就是我需要得到的

我正在使用以下代码:

import pandas
import matplotlib.pyplot as plt

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import numpy as np

dataset = np.loadtxt("wine.data.csv", delimiter=",")
print(dataset)
X = dataset[:,1:14]
y = dataset[:,0]
target_names = ['class_0', 'class_1', 'class_2']

lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit(X,y).transform(X)
plt.figure()
for c, i, target_name in zip("rgb", [0, 1, 2], target_names):
    plt.scatter(X_lda[y == i, 0], X_lda[y == i, 1], c=c, label=target_name)

plt.show()
plt.plot([-6,2],[-6,4],"k-")
plt.plot([5,0],[-6,4],"k-")
plt.legend()
plt.title('LDA of WINE dataset')
plt.show()
数据集是从这里下载的。我也在使用Python2.7。我是新手,希望能得到任何帮助。
提前谢谢你

移除第一个
plt.show()

只要调用
plt.show()
,就会生成绘图,此行下面的所有代码都将被忽略

此外,将
[0,1,2]
更改为
[1,2,3]

for c, i, target_name in zip("rgb", [1, 2, 3], target_names):
    plt.scatter(X_lda[y == i, 0], X_lda[y == i, 1], c=c, label=target_name)

现在您获得了所需的输出。

但是我的第三个集群仍然丢失。。。这就是问题所在。谢谢你的评论!添加了解决方案。非常感谢!
for c, i, target_name in zip("rgb", [1, 2, 3], target_names):
    plt.scatter(X_lda[y == i, 0], X_lda[y == i, 1], c=c, label=target_name)