【问题标题】:Machine Learning Data Preprocessing with Pandas使用 Pandas 进行机器学习数据预处理
【发布时间】:2017-12-15 23:24:05
【问题描述】:

我是机器学习的新手。我正在尝试使用 pandas/tensorflow 来处理一些数据。 我知道什么时候有数据:

+----+------+
| ID | asset|
+----+------+
|  A | 1    |
|  B | 2    |
|  C | 3    |
|  D | 4    |
+----+------+

我可以将 col "asset" 作为列表 [1,2,3,4],然后使用 tensorflow 将其转移到 [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]

但如果我有如下数据:

+----+------+
| ID | asset|
+----+------+
|  A | 1    |
|  A | 2    |
|  A | 3    |
|  B | 1    |
+----+------+

还有一个看起来像这样的表:

+----+------+
| ID | debt |
+----+------+
|  D | 1    |
|  D | 2    |
|  D | 3    |
|  A | 1    |
+----+------+

也就是说,我的客户 A 拥有 3 种不同类型的资产,而客户 D 拥有 3 种不同类型的债务。请注意,客户端 D 甚至不存在于第一个表中。

第一个问题是我如何结合这些表格来找到与其资产/债务相匹配的客户。我只是加入那些表吗? (在熊猫pd.merge()) 这样,客户端 D 的资产将具有空值。还是我应该只选择每个表中存在的客户?我该怎么做?

第二个问题是如何将表 A 转移到[[1,1,1], [1,0,0]]

我希望描述是有道理的。如果我说错了什么,请纠正我。抱歉问了这么长的问题:(

【问题讨论】:

  • 我只是不明白第二个问题是否可以更具体一些?谢谢
  • 是的,从表 A 中我们可以看到客户 A 的资产类型为 1、2、3,而客户 B 的资产类型为 1,因此它们的矩阵表示形式为 [[1,1,1],[1,0,0]]。我想知道如何从表 A 中获取矩阵。
  • 我要提一下,数据都是csv格式,所以表A是一个csv文件,表B是另一个。
  • @BeyondRiver - 我认为在尝试开始机器学习之前很久就需要对 pandas 有基本的了解......这就像在了解金钱在企业中的作用之前尝试学习会计一样。
  • @Andrew L 谢谢你的建议。我确实有一些使用预建数据集的机器学习实践。我从来没有遇到过我必须自己准备数据的情况,这就是我现在正在努力学习的。

标签: python mysql pandas machine-learning tensorflow


【解决方案1】:

第一个问题

这个问题的答案实际上取决于您的机器学习问题以及您希望如何预处理数据(如果您想删除缺少数据的样本或估算它们)。由于这可能是您需要准备数据集的第一个问题,我建议您查看this

现在,如果您决定要删除缺失值,您可以直接执行inner merge,如下所示:

df = pd.merge(df1,df2,"inner")

这样你只会走df1df2之间的交叉点。

如果您选择估算缺失值,请像这样使用outer merge

df = pd.merge(df1,df2,"outer")

那么您应该能够随心所欲地填充缺失值(链接中建议的方法是一种方法)。

第二个问题

然而,对于这个问题,可能有一个更好的方法(但如果它确实存在,我完全忘记了它的名字)但这应该也可以:

a = df1.groupby('ID')['asset'].unique()
# to have something like
#ID
#A    [1, 2, 4] 
#B          [1]

x = a.size
y = max([max(x) for x in a])
z = np.zeros((x,y))
# just instantiating the final matrix with the right shape and zeros

然后您可以使用numpy.put1's 实际放在正确的位置,如下所示:

for row in range(x):
    np.put(z[row],a[row]-1,1)

O/P(以你为例):

[[ 1.  1.  1.]
 [ 1.  0.  0.]]

希望对您有所帮助,如果有任何问题或改进,请发表评论。

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 2020-06-15
    • 2015-08-18
    • 2019-04-27
    • 2012-11-16
    • 2017-05-03
    • 2018-03-11
    • 2014-02-17
    相关资源
    最近更新 更多