2016-09-18 127 views
1

我正在尝试使用scikit-learn构建模型,并且我想知道处理特定类型的缺失功能的最佳方法。时间序列数据缺失值Sklearn随机森林

我有一个用户群,每个用户需要在给定的时间范围内(例如3天)完成一个目标。我有关于每个用户的基本信息,始终保持不变。我已经在这个信息上训练了一个简单的随机森林分类器,它对于预测用户是否会完成目标非常好。

我也有完成百分比的所有已完成(或未完成)的用户的每日细分。两个样本有一个完成的用户和一个没有看起来像这样的三天的样本:[[0., 0.58, 1.], [0.2, 0.5, .8]]其中每个特征是通过实现目标的百分比。第一个用户在该时间段内达到100%,第二个用户没有。

我希望能够对飞行中的目标完成进行预测。因此,如果新用户的时间限制为1天,并且达到目标的20%,他们的数据可能如下所示:[[.2, NaN, NaN]]

我可以看到将此数据集成到现有模型的唯一方法是拟合每天的不同模型(第1天的模型,第2天的模型等)。但这对我的生产环境来说根本不可行。我也考虑过试图推测缺失的值(对于上述类型,例如0.2,4.6,6),但我知道用户目标完成倾向于不像这样是线性的。

有没有一种好的方法来训练这种数据的模型?或者是由scikit-learn或另一个为这类任务构建的python库支持的算法?请注意,我的模型也需要支持概率估计。

回答

0

如果您有时间序列数据,有效处理它的一种方法是将时间序列分成不同的部分。

此外,RandomForest有一个非常有趣的属性,该模型可以处理缺失的值。对于概率估计,可以使用RandomForestClassifier的predict_proba()方法。关于这方面的更多细节,你可以看看这里的sklearn RandomForest文档:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

+0

我不相信随机森林可以显式处理缺失值。您链接的文档没有提及缺失值。你从哪里得到这些信息? – TheRuler

+0

这里有两个链接:[链接](http://amateurdatascientist.blogspot.in/2012/01/random-forest-algorithm.html)和[链接](https://www.stat.berkeley.edu /~breiman/RandomForests/cc_home.htm#missing1)。我希望这有助于! – Nain

+0

我不认为scikit学习Random Forest支持缺失值。见[这里](https://stackoverflow.com/questions/9365982/missing-values-in-scikits-machine-learning)。 – TheRuler