预处理列表数据

数据挖掘 数据清理 预处理 金融
2022-02-10 07:39:37

我对我的 ML 算法的准备数据有疑问。原始数据的格式类似于:

{
  "finances": [
    {
      "assets": 1230.39,
      "investments": 3245.39,
      "netProfit": 8765.45,
      "year": 2017
    },
    {
      "assets": 111.11,
      "investments": 222.22,
      "netProfit": 333.33,
      "year": 2016
    },
    {
      "assets": 1111.11,
      "investments": 2222.22,
      "netProfit": 3333.33,
      "year": 2015
    }
  ],
  "someValue": 123.45,
  "title": "Hello!"
}

我想知道将财务数据传递给我的算法的最佳方法是什么(年数可以从 0 到 8 不等)。

我正在考虑为每年的每个参数设置新属性,但这会导致在某些情况下有许多非空值,因为并非每条记录都有 8 年的财务历史。

我的问题是:在输入数据中处理此类数据的最佳方法是什么(实际上每个finances元素都会有更多的值(大约 10-15)。

1个回答

建模的最终目标将影响您希望格式化数据的方式。每当你开始一个机器学习项目时,问问自己,你想回答的确切问题是什么,这是一个很好的做法,因为无论你生成什么模型,只有在所问问题的上下文中使用它才会有意义。

如果在您的情况下您想预测贷款批准,那么首先您需要检查该信息是否甚至存在于您拥有的数据中。您刚刚获得的 JSON 显示了历史数据,但您知道每个数据点的结果吗?这是另一个功能,可能记录在文件的“someValue”、“title”区域吗?没有它,你真的什么都做不了。

如果你能得到这些信息,那么为每一年生成一个变量就很好了:assets_year1、assets_year2、... assets_year8、investments_year1、...等等。没错,year8 可能有很多 Null 值,但这不一定坏的。例如,大多数处理文本数据的模型都包含非常稀疏的训练矩阵,但它们在实践中做得很好。根据算法,它可能会清除这些变量。使用 Null 值,您只需尝试以不同的方式估算 Null 值,还可以为列是否存在缺失值创建指示变量,并查看不同设置如何改变性能。

为了更进一步,您还可以创建其他功能来封装多年来发生的细微差别。创建历史平均值、每年平均变化、历史总年数等特征。创意特征工程是最难的部分,但会导致性能发生很大变化。