在 Python 中为机器学习模型处理每个实例具有多个值的特征

数据挖掘 机器学习 Python 预处理
2022-02-01 18:56:15

我有一个包含儿童医学数据的数据集,我正在开发一个预测机器学习模型来预测不良妊娠结果。该数据集主要包含每个孩子具有单个值的特征,例如性别 = [“男性”,“女性]。但是,我有一些每个孩子有多个值的特征,例如每个孩子多次记录的腹围, 像这样:

    ChildID     abdomcirc
0   1           273
1   1           267
2   1           294
3   2           136
4   2           248

因此,在上表中,孩子 1 的 abdomcirc 有 3 个值,孩子 2 的 abdomcirc 有两个值。将此特征添加到剩余数据集(由单个观察特征组成)将导致几乎重复的行,除了 abdomcirc 的不同值,如下所示:

    ChildID     gender  diabetes  birthroute  abdomcirc
0   1           Male    No        Normal      273
1   1           Male    No        Normal      267
2   1           Male    No        Normal      294
3   2           Female  Yes       csection    136
4   2           Female  Yes       csection    248

我不确定处理这些功能的最佳方法是什么,而不合并数据并具有近乎重复的行。我考虑了以下几点:

  • 对 abdomcirc 使用 python 列表类型。但是,我不知道机器学习模型是否可以处理这种数据类型。所以我的数据看起来像这样

          ChildID     gender  diabetes  birthroute  abdomcirc
     0    1           Male    No        Normal      [273, 267, 294]
     1    2           Female  Yes       csection    [136, 248]
    
  • 通过计算平均值将 abdomcirc 转换为单个观察特征(尽管我不确定这些信息对我的预测模型有多大用处),如下所示:

          ChildID     gender  diabetes  birthroute  abdomcirc
     0    1           Male    No        Normal      278
     1    2           Female  Yes       csection    192
    

我已经尝试寻找资源来帮助我解决这个问题,但并不是很成功,可能是因为我没有输入正确的关键字或其他东西。所以,我会很感激你的意见和有用的资源。非常感谢!

1个回答

一个可能的资源是featuretools,他们对有很多记录的数据进行特征工程。他们的例子不是来自医疗案例,但我认为它也应该对你有用。

您还可以手动构建多个功能。例如,给定一个 列表abdomcirc,您可以计算它:

  • 意思是
  • 最大
  • 最低限度
  • 方差
  • 从最小值到最大值的差异
  • 最后一个值(如果它们按日期排序)
  • 唯一值的数量

这些功能将获得列表的大部分信息abdomcirc,这应该有助于您的建模。

我不会采用第一种为算法提供列表的方法,尽管这是可能的,但我认为这是一个相对先进的东西,除非更简单的方法不起作用,否则我不会采用它。