2016-09-18 124 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