【问题标题】:How to convert layers of many-to-one relationships into input data without losing information?如何在不丢失信息的情况下将多对一关系层转换为输入数据?
【发布时间】:2023-03-21 00:40:01
【问题描述】:

如果这个问题没有多大意义,我深表歉意。 我正在尝试将数据转换为分类器的输入。我有多层多对一数据,我需要将其“附加”到顶层。我将尝试用一个例子来解释:

假设您有一个家庭,每个家庭至少包含一个人(以男性/女性/其他类别数据表示),每个人都有一定数量的宠物(以狗/猫/老鼠/等类别数据表示)。 )。是否可以在不丢失信息的情况下将这些数据表示为一行(针对家庭)?

我能想到的一种方法是计算每个类别的数据量,因此一个家庭将有 2 男、1 女、2 条狗和 1 只猫。除非这会丢失有关数据本身结构的信息,例如女性是否拥有所有宠物,但该数据不会告诉您。

另一种方法是将每个家庭构建到一个数据库中,因此每一行是一个人,包含 m/f/o 和每只宠物的数量,然后执行一些降维技术将其全部放在家庭的一行中但我不确定这是否可行。

是的,任何建议都将不胜感激。

【问题讨论】:

  • 表示数据的方法有很多。取决于您以后要在其上运行哪种分类器。
  • 现在我只是在使用神经网络。输出数据是分类的。你能给我一些如何表示它的例子吗?

标签: data-structures data-science


【解决方案1】:

您是否尝试过使用 one-hot-encoding 方法在一行上表示每个?或者这种方法有效吗?

import pandas as pd    
df = pd.DataFrame({'household':["M","M","F","M","F","F"],
                   'pets': ["Cat","Dog","Cat","Hamster","Dog","Cat"],
                  'amount of pets': [2,1,1,2,2,3]})

df=pd.get_dummies(df,columns=["pets"])
print(df)

  household  amount of pets  pets_Cat  pets_Dog  pets_Hamster
0         M               2         1         0             0
1         M               1         0         1             0
2         F               1         1         0             0
3         M               2         0         0             1
4         F               2         0         1             0
5         F               3         1         0             0

print(df.iloc[:1])

 household  amount of pets  pets_Cat  pets_Dog  pets_Hamster
0         M               2         1         0             0

通过这种方式,可以在一行中同时查看家庭拥有的动物及其数量。这是你想要的表现形式吗?

【讨论】:

  • 也许我看错了表格,但看起来每一行都代表了每个人及其宠物的数量,而不是家庭。每个家庭有多个人,每个人都有多只宠物,我想要一个家庭数据库的表示形式,每一行包含代表有关谁拥有什么宠物的最多信息的数据。
猜你喜欢
  • 1970-01-01
  • 2012-04-14
  • 2015-01-10
  • 1970-01-01
  • 2015-08-05
  • 2020-01-11
相关资源
最近更新 更多