2016-11-22 4 views
1

欠損値は、データ解析の一般的な問題です。 1つの一般的な戦略は、欠損値が、既存の値の分布からランダムにサンプリングされた値で置き換えられるということです。既存の値の分布からサンプリングして値を欠損する

データフレームにこの前処理ステップを便利に実行するPythonライブラリコードはありますか?私が見る限り、sklearn.preprocessingモジュールはこの戦略を提供しません。

+0

これを行うには、['sample'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sample.html)を使用できます。 – EdChum

+2

statsmodelsにはMICE(マスターと0.8 rc)は、近傍が予測近似によって定義される近傍からの帰属された観測を選択する予測平均マッチングを実装します。 – user333700

答えて

2

既存の値の分布をサンプリングするには、その分布を知る必要があります。その分布が分かっていない場合は、カーネル密度の推定を使ってそれに適合させることができます。このブログ記事には、Pythonのカーネル密度推定の実装の素敵な概要があります:http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/

scikit-learnに実装があります(http://scikit-learn.org/stable/modules/density.html#kernel-densityを参照)。 sklearnのKernelDensityには.sample()メソッドがあります。統計モデルにはカーネル密度推定値もあります(http://statsmodels.sourceforge.net/devel/generated/statsmodels.nonparametric.kernel_density.KDEMultivariate.html)。カテゴリの機能をサポートしています。

もう1つの方法は、データセットにはない値を生成せずに、既存の値をランダムに選択する方法です。この解決策の問題は、値が同じ行の他の値に依存する可能性があり、これを考慮しないrandom.sampleが非現実的な例を生成する可能性があることです。

関連する問題