質問

にすることは可能でにおける欠測値補完のscikit-learn?どう表現されるでしょ見られませんでしたが何らかの文書についての質問です。

役に立ちましたか?

解決

欠損値は、Scikit-Learnでは単にサポートされていません。これに関するメーリングリストでは以前に議論がありましたが、実際にそれらを処理するためのコードを作成する試みはありませんでした。

あなたが何をしても、 しないでください Algorithmsの多くはNANを含むサンプルを処理することを拒否しているため、NANを使用して欠損値をエンコードします。

上記の答えは時代遅れです。 Scikit-Learnの最新リリースにはクラスがあります Imputer これは、単純で、食事ごとの欠損値の代入をもたらします。 NANを含むアレイをフィードして、対応する機能の平均、中央値、またはモードに置き換えることができます。

他のヒント

簡単な例を提供できたらいいのにと思いますが、RandomForestRegressorはそうしていることがわかりました いいえ ナンを優雅に処理します。 NANの割合が増加する機能を追加すると、パフォーマンスは着実に悪化します。 「あまりにも多く」ナンを持っている機能は、NANが非常に有用な情報を示している場合でも、完全に無視されます。

これは、アルゴリズムがそうなるためです 一度もない 「isnan」または「ismissing」という決定の分割を作成します。アルゴリズムが行われます 機能を無視します その機能にサンプルのサブセットに単一のNANがある場合、ツリーの特定のレベルで。しかし、ツリーのレベルが低い場合、サンプルサイズが小さくなると、サンプルのサブセットに特定の機能の値にNANがないことがあり、その機能で分割が発生する可能性が高くなります。

私は問題に対処するためにさまざまな代入技術を試しました(平均/中央値に置き換え、異なるモデルを使用して欠損値を予測するなど)が、結果は混合されました。

代わりに、これは私の解決策です。ナンを単一の、明らかに範囲外の値(-1.0など)に置き換えます。これにより、ツリーは基準「不明値と既知の価値」の基準で分割できます。ただし、このような範囲外の値を使用するという奇妙な副作用があります。アルゴリズムが良い場所を見つけようとすると、範囲外値の近くの既知の値が範囲外値と一緒に集中する可能性があります分割します。たとえば、既知の0は、ナンのものを置き換えるために使用される-1にまとめられる可能性があります。したがって、モデルが最小値よりも少ないか、最大値よりも大きいかどうかに応じて、モデルが変更される可能性があります(それぞれ最小値または最大値で集中する可能性があります)。これは、手法の一般化に役立つ場合とそうでない場合があります。結果は、動作の最小値または最大値サンプルがNAN値サンプルに対して類似していることに依存します。

置換、欠損値と平均値/中央値/その他緊急な問題解決として、その値が不足する必要があります。.例えば、調査の物理的特性、回答者が入れないでその高さが恥ずかしい異常に高い又は小さい。このことを意味するもの欠損値を示す回答した異常に高いまたは小型-反対側の中央値です。

何が必要であるモデルを別のルール向けサービス価格指数は、解決しようとする問題に最適なもの欠損値が削減予測のモデルです。

e.g:

df['xvariable_missing'] = np.where(df.xvariable.isna(),1,0)
df.xvariable = df.xvariable.fillna(df.xvariable.median())

実行するとき、私は非常に似たような問題に出くわしました RandomForestRegressor データについて。 NA値の存在は、予測のために「ナン」を捨てていました。いくつかの議論の周りにスクロールすることから、Breimanのドキュメントでは、それぞれ連続データとカテゴリデータのために2つのソリューションを推奨しています。

  1. 列(機能)のデータの中央値を計算し、これを使用します(連続データ)
  2. 最も頻繁に発生するカテゴリを決定し、これを使用します(カテゴリデータ)

Breimanによれば、アルゴリズムのランダムな性質と木の数は、予測の精度にあまり影響を与えることなく修正を可能にします。これは、NA値の存在がまばらである場合、私がそうであると思います。これは、おそらく影響を与えると思われる多くのNA値を含む機能です。

オレンジ 代入専用の施設を備えた別のPython機械学習ライブラリです。私はそれらを使用する機会はありませんでしたが、ナンをゼロに置き換える簡単な方法、平均、または中央値がすべて重大な問題を抱えているため、すぐにそうなるかもしれません。

私はこの問題に遭遇します。実用的なケースでは、この問題をうまく処理できるMissForestと呼ばれるRでパッケージを見つけました。

NASを単に中央値または平均に置き換えるのではなく、 MissForest 欠損値があるべきだと思うものの予測に置き換えます。データマトリックスの観測値で訓練されたランダムフォレストを使用して予測を行います。多数の欠損値を含む大きなデータセットで非常に遅く実行できます。したがって、この方法のトレードオフがあります。

Pythonの同様のオプションはです Predictive_imputer

入力機能で欠損値に遭遇した場合、ビジネスの最初の注文は、欠落を請求する方法ではありません。最も重要な質問は、なぜあなたがすべきかということです。データの背後にある「真の」現実が何であるかを明確で決定的な心がない限り、あなたは衝動を抑えたいと思うかもしれません。これは、そもそもテクニックやパッケージに関するものではありません。

歴史的に、私たちの一部は、主に、線形回帰、ロジスティック回帰、またはnnなどの回帰を推定するために不足していると少なくとも不足していると感じていたので、私たちの中には少なくとも、私たちの中には、不足しているようにゆがんでいると感じていたので、列 '。いわゆる欠落の情報。これは、たとえばベイジアンに精通している人たちにとって馴染みのある概念でなければなりません。

あなたが本当にビッグデータをモデル化している場合、それについて話すことに加えて、チャンスはあなたが多数の列に直面することです。テキスト分析のような特徴抽出の一般的な慣行では、欠落は平均カウント= 0と言うことができるかもしれません。根本的な原因を知っているので、それは問題ありません。現実は、特に構造化されたデータソースに直面している場合、根本的な原因を知る時間がわからないか、単に根本的な原因を知る時間がありません。しかし、あなたのエンジンは、エンジンが耐えることができるナンであろうと他の場所の所有者であろうと、価値をプラグインするように力を入れてください。私はあなたのモデルがあなたが納得するのと同じくらい良いと主張するかもしれませんが、それは意味がありません。

興味深い質問の1つは、分割プロセス内の緊密なコンテキストによって判断されるために欠けていることを残している場合、第1または第2度の代理人は、コンテキスト自体がランダム選択であるため、実際にコンテキストの判断を論争させますか?ただし、これは「より良い」問題です。少なくともそれはそれほど傷つけません。確かに、欠落を保存する必要がないようにする必要があります。

実際的な問題として、多数の入力機能がある場合、おそらく結局、「良い」戦略を持つことはできません。純粋な帰属の観点から見ると、ベストプラクティスは単変量ではありません。 RFのコンテストには、モデリングする前にRFを使用してImputeを使用することを意味します。

したがって、誰かが私(または私たち)に「私たちはそれをすることができない」と言っていない限り、私たちは「セル」が不足している「セル」を前方に持ち込むことを可能にする必要があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top