欠損データの処理は簡単な作業ではありません。 方法は、単純な平均補完や観察結果の完全な削除から、MICE などのより高度な技術まで多岐にわたります。 問題解決における課題は、どのアプローチを使用するかを選択することです。 今日は、欠損データを埋めるためのシンプルかつ効率的な方法である KNN アルゴリズムについて説明します。 KNN は「K Nearest Neighbors」の略で、定義された数の最も近い近傍に基づいて予測を行う単純なアルゴリズムです。 分類するインスタンスからトレーニング セット内の他のすべてのインスタンスまでの距離を計算します。 タイトルが示すように、このアルゴリズムは分類目的ではなく、欠損値を埋めるために使用します。 この記事では、500 件を超えるエントリを含むシンプルでよく知られたデータセットである住宅価格データセットを使用します。 この投稿は次のように構成されています。
データセットの読み込みと探索 前述したように、まず住宅データセットをダウンロードします。 また、Numpy と Pandas の両方がインポートされていることを確認してください。 最初の数行は次のようになります。 デフォルトでは、データセットの欠損値は非常に少なく、単一の属性に 5 つしかありません。 それを変えましょう。 通常はこれを行うことはありませんが、欠損値がさらに必要です。 まず、1 からデータセットの長さまでの範囲の乱数の配列を 2 つ作成します。 最初の配列には 35 個の要素が含まれ、2 番目の配列には 20 個の要素 (任意に選択) が含まれます。
最初の配列は次のようになります。 ランダム化プロセスはランダムであるため、配列は異なります。 次に、特定のインデックスの既存の値をNANに置き換えます。 方法は次のとおりです。
さて、欠損値をもう一度確認してみましょう。今回はカウントが異なります。 これが、帰属から始まる私たちが行う準備作業のすべてです。 次のセクションでそれをやってみましょう。 KNN アトリビューション 全体の補間は 4 行のコードに要約されます。そのうちの 1 行はライブラリのインポートです。 sklearn.impute の KNNImputer が必要であり、よく知られている Scikit-Learn の方法でそのインスタンスを作成します。 このクラスには、1 つの必須パラメータ n_neighbors が必要です。 これは、偽装者にパラメータ K のサイズを伝えます。 まず、任意の数字 3 を選びます。このパラメータは後で最適化しますが、最初は 3 で十分です。 次に、マシン上で fit_transform メソッドを呼び出して、欠損データを補完します。 最後に、結果の配列を pandas.DataFrame オブジェクトに変換して、解釈しやすくします。 コードは次のとおりです:
とてもシンプルです。 欠損値を確認してみましょう: それでも、1 つの疑問が残ります。K の適切な値をどのように選択すればよいのでしょうか? アトリビューション最適化 この住宅データセットは、ターゲット変数が連続的 (MEDV) であるため、回帰アルゴリズムによる予測モデリングを目的としています。 これは、欠損値を補完するための K の異なる値を使用して多くの予測モデルをトレーニングし、どのモデルが最も優れたパフォーマンスを発揮するかを確認できることを意味します。 しかし、まずは輸入です。 Scikit-Learn が提供する機能の一部、つまりデータセットをトレーニング用とテスト用のサブセットに分割し、モデルをトレーニングして検証することが必要です。 トレーニングには「ランダム フォレスト」アルゴリズムを選択しました。 RMSE は次のことを検証するために使用されます:
最適化を実行するために必要な手順は次のとおりです。 Kの可能な範囲を反復します - 1から20までのすべての奇数が機能します
多いように聞こえますが、結局は 15 行程度のコードになります。 コードスニペットは次のとおりです。
これで、変更したデータセット(3 列に欠損値がある)を使用して optimize_k 関数を呼び出し、ターゲット変数(MEDV)を渡すことができます。
これで完了です。k_errors 配列は次のようになります。 視覚的に表現する: 指定された範囲内では、誤差が最小になるため、K = 15 が最適な値のようです。 このエラーの説明はこの記事の範囲を超えているため、ここでは取り上げません。 次のセクションでまとめてみましょう。 要約する 欠損データの補完を処理するコードを書くのは、直接使用できる既存のアルゴリズムが多数あるため簡単です。 しかし、その理由を理解することは困難です。つまり、どのプロパティを推論すべきで、どのプロパティを推論すべきでないのかを知ることは困難です。 たとえば、顧客がそのタイプのサービスを使用していないために一部の値が欠落している可能性があり、その場合は見積りを実行する必要はありません。 欠損データの処理が必要かどうかを最終的に判断するには、ドメインの専門知識も必要です。ドメインの専門家に相談し、その分野を調査することは良いアプローチです。 |
<<: 張亜琴:業界にとって、ディープラーニングの黄金時代は始まったばかりだ
>>: 感情セグメンテーションを理解する: 機械学習を活用してポジティブな気持ちを維持する方法
翻訳: ブガッティ企画:千山ほとんどの企業は、記録システムの IT 監査を毎年実施しています。しかし...
過去数年間、モノのインターネットに関する議論の多くは、接続されたデバイス自体、つまりそれが何であるか...
計算能力には限界があるため、人間が超人工知能を制御することはできません。 [[379749]]最近、...
冗談ですが、論文提出のトピックは、Adam で最適化された、完全な畳み込みエンコーダー/デコーダー ...
概要過去 6 か月間で、人工知能の分野は科学技術分野で最も頻繁に言及される用語の 1 つになりました...
1. 説明ブロックチェーンは、オープンなデータ操作、改ざん不可能、追跡可能性、国境を越えた分散化な...
北京時間9日午前1時(米国現地時間5月8日午前10時)、カリフォルニア州マウンテンビューで2018 ...
最近、マスク氏の伝記「イーロン・マスク:伝記」が国内外でベストセラーとなった。この本には、マスク氏の...
金融やその他の分野における自動化は避けられません。しかし、金融サービスの自動化は、高いレベルの注意、...
昨日Apple A17 Proが正式リリースされ、3nmプロセスを採用していますが、その性能はどのよ...
サイバーセキュリティは長期にわたる戦いです。 日々新たな脅威が出現し、最高情報セキュリティ責任者 (...
現在、顔認識システムがプライベートな写真で訓練されるのを防ぐツールがますます増えている。個人の写真を...
[51CTO.com クイック翻訳] 今日言及された事故のほとんどはAI自体と直接関係はありませんが...