【问题标题】:Loading data with Pandas and performing LDA with SkLearn使用 Pandas 加载数据并使用 SkLearn 执行 LDA
【发布时间】:2016-05-14 00:10:42
【问题描述】:

我对使用 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) 中,但在这一点上我被卡住了。我不知道下一步该去哪里。我阅读了 pandas 和 sklearn 的文档,但它们什么也没告诉我。 您能否通过提供指导和可能的示例来帮助我。

【问题讨论】:

  • data.txt 中的行的名称是什么
  • 那么你试过X = np.array([[-0.864810, 0.101410], [-0.195770, 0.221670], ...)y = np.array([1, 1, ...])吗?
  • @Farseer,数据以没有行名的数字开头。

标签: python pandas machine-learning scikit-learn


【解决方案1】:

这是你想做的吗?

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

【讨论】:

  • 是的,类似的,我想知道标签。我虽然需要将标签拆分到不同的数组。
猜你喜欢
  • 2016-01-19
  • 2022-11-16
  • 1970-01-01
  • 2020-08-20
  • 2016-05-10
  • 2014-02-28
  • 2017-12-20
  • 2014-08-29
相关资源
最近更新 更多