使用Pandas加载数据并使用SkLearn执行LDA

时间:2016-02-04 11:40:00

标签: python pandas machine-learning scikit-learn

我是使用python进行数据挖掘的新手。我需要对数据集实现线性判别分析,如下所示:

0.38769,0.50132,1
-0.86481,0.10141,1
-0.19577,0.22167,1
0.015502,0.1554,2

其中最后一位是标签。我使用sklearn和pandas来加载我的数据。我这样加载它:

import numpy as np
import pandas as pd
import matplotlib as plt

from sklearn.lda import LDA

data = pd.read_csv('data.txt')
print data

因此,当我打印数据时,它看起来像是:

0    -0.864810  0.101410  1
1    -0.195770  0.221670  1
2     0.015502  0.155400  1

我在sklearn官方网站上找到了LDA示例:

>>> import numpy as np
>>> from sklearn.lda import LDA
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> y = np.array([1, 1, 1, 2, 2, 2])
>>> clf = LDA()
>>> clf.fit(X, y)
LDA(n_components=None, priors=None, shrinkage=None, solver='svd',
  store_covariance=False, tol=0.0001)
>>> print(clf.predict([[-0.8, -1]]))

从这个例子中我想我需要我的标签在单独的矩阵(y)中,但此时我被卡住了。我不知道下一步该往哪里去。我读了大熊猫和sklearn的文档,但他们什么也没告诉我。 你可以通过提供指导和可能的例子来帮助我。

1 个答案:

答案 0 :(得分:2)

这是你想要做的吗?

data = pd.read_csv('data.txt',names=['X1','X2','Y'])
clf = LDA()
clf.fit(data.loc[:,'X1':'X2'].values, data.Y)