Python LinearDiscriminantAnalysis-从.transform(X)输出的单列

Python LinearDiscriminantAnalysis-从.transform(X)输出的单列,python,python-2.7,numpy,scikit-learn,pycharm,Python,Python 2.7,Numpy,Scikit Learn,Pycharm,我已经成功地使用PyCharm中的iris数据集,使用Python2.7复制了其中一个。然而,当我试图用自己的数据重复这一点时,我遇到了一个问题。我一直在使用“np.genfromtxt”从.csv文件导入数据,但出于某种原因,我一直在为X_r2(见下文)获取单列输出,而我应该获得2列输出。因此,我用一些随机生成的变量替换了我的数据,并将其发布到SO上,我仍然遇到同样的问题 我在下面列出了“问题”代码,我想知道我做错了什么。我已经广泛使用PyCharm中的调试功能来检查变量的类型和形状是否与原始

我已经成功地使用PyCharm中的iris数据集,使用Python2.7复制了其中一个。然而,当我试图用自己的数据重复这一点时,我遇到了一个问题。我一直在使用“np.genfromtxt”从.csv文件导入数据,但出于某种原因,我一直在为X_r2(见下文)获取单列输出,而我应该获得2列输出。因此,我用一些随机生成的变量替换了我的数据,并将其发布到SO上,我仍然遇到同样的问题

我在下面列出了“问题”代码,我想知道我做错了什么。我已经广泛使用PyCharm中的调试功能来检查变量的类型和形状是否与原始的sklearn示例相似,但这并没有帮助我解决问题。如有任何帮助或建议,将不胜感激

import numpy as np
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

y = np.random.randint(2, size=500)
X = np.random.randint(1, high=1000, size=(500, 6))
target_names = np.array([['XX'], ['YY']])
lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

在您发布的示例中,数组
y
的值为0、1和2,而您的数组的值仅为0和1。此更改实现了您想要的:

import numpy as np
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

y = np.random.randint(3, size=500)
X = np.random.randint(1, high=1000, size=(500, 6))
target_names = np.array([['XX'], ['YY']])
lda = LinearDiscriminantAnalysis(n_components=2)
X_r2 = lda.fit(X, y).transform(X)

谢谢你的快速回复。这确实解决了问题。然而,我只有两个目标,因为它代表了我目前的问题。这是否意味着这种方法只适用于至少3个目标?我不知道这种方法实际上做了什么。要问你的后续问题,这似乎是关于理解统计数据而不是编程,你最好还是谢谢你的建议。