适应给定输入数据(无论是给定还是不给定)的ML算法?

时间:2019-10-22 08:35:11

标签: machine-learning

我正在寻找一种能够处理缺少参数的输入数据的机器学习算法。

示例: 使用包含10个输入参数的数据来训练模型。使用具有NaN值的10个参数中的2个的数据进行预测。

是否有任何机器学习算法可以对此数据进行预测,或者我必须首先以任何方式处理NaN值?是否存在具有处理NaN值的内置功能的机器学习算法?


也许我的问题不够详细。我确实拥有训练模型所需的所有数据,并且我确实知道如何在缺失值训练之前处理数据。我的问题的意思有所不同。一旦我对模型进行了训练,并且可以在生产,实时数据中使用该模型,并且发生这种情况,例如,仅获得了我训练模型所使用的10个功能中的8个的值,那么仍然有一种算法可以执行预测?我的第一个想法是为10个值中的每一个设置一个默认值,如果我会收到Nan值,则设置该值,但是我希望有一种能够自行处理的算法。这样模型就可以用最合适的替换值(均值,回填或任何其他值)替换Nan值

2 个答案:

答案 0 :(得分:0)

是的,机器学习算法仍然可以使用可用数据进行预测,但是您应该考虑处理丢失的数据,以便模型能够更好地训练。

在训练模型之前,有几种方法可以处理数据中的缺失值。可以尝试的一些方法是

  1. 忽略数据行
  2. 后退或前进填充以传播下一个或上一个值 分别:
    • 用于回填dataframe.fillna(method ='bfill',inplace = True)
    • 用于前向填充dataframe.fillna(method ='ffill',inplace = True)
  3. 替换一些固定值,超出固定值范围-999,-1 等等
  4. 替换为平均值,中位数
  5. Isnull功能添加新功能isull,指示哪些行具有 此功能缺少值。通过这样做基于树 现在,它可以理解存在缺失值的方法。的 缺点是功能数量翻了一番。

答案 1 :(得分:0)

这取决于您使用的软件包以及如何表示功能。 NaN在机器学习包(scikit learning,weka,vowpal wabbit,tensorflow等)之间的解释可能有所不同

您基本上是在描述有点稀疏的数据集。您可以尝试外推/内插这些值(如果可能的话),也可以将它们设置为0。