我是使用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的文档,但他们什么也没告诉我。 你可以通过提供指导和可能的例子来帮助我。
答案 0 :(得分:2)
这是你想要做的吗?
data = pd.read_csv('data.txt',names=['X1','X2','Y'])
clf = LDA()
clf.fit(data.loc[:,'X1':'X2'].values, data.Y)