我无法将所有数据放入图表中。这就是我得到的
这就是我需要得到的
我正在使用此代码:
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()
数据集从这里下载WINE dataset 。我也在使用Python 2.7。我对此很陌生,希望得到任何帮助。 预先感谢您!
最佳答案
删除第一个plt.show()
# plt.show() # remove this
plt.plot([-6,2],[-6,4],"k-")
plt.plot([5,0],[-6,4],"k-")
plt.legend()
plt.title('LDA of WINE dataset')
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)
现在你就得到了你想要的输出。
关于python - 线性判别分析后仅绘制了 2 个簇,而不是 3 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47672534/