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

时间:2016-04-21 11:56:53

标签: python python-2.7 numpy scikit-learn pycharm

我已成功使用Python 2.7在PyCharm中使用iris数据集复制其中一个this answer。但是,当我尝试用我自己的数据重复这个时,我遇到了一个问题。我一直在使用&#n; 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)

1 个答案:

答案 0 :(得分:2)

您发布的示例中的数组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)