データの前処理とは、データセットを機械学習やその他のタスクに使用する前に、データセットに対して特定のアクションやステップを実行する行為です。データの前処理には、品質を向上させるため、または主な目的 (この場合はモデルのトレーニング) に適していることを確認するために、データのクリーニング、フォーマット、または変換が含まれます。クリーンで高品質なデータセットは、機械学習モデルのパフォーマンスを向上させます。
低品質のデータに関する一般的な問題には次のようなものがあります。
この記事では、モデルのトレーニングで使用するデータセットを準備するための一般的なデータ前処理手法をいくつか紹介します。 Python の基本的な知識と、Python ライブラリとフレームワークの使用方法が必要です。
要件:
このガイドを最大限に活用するには、次のことが必要です
Github 上のこれらの Jupyter ノートブックで各コードの出力をチェックアウトすることもできます。
Python をまだインストールしていない場合は、Python Web サイトからダウンロードし、指示に従ってインストールできます。
Python がインストールされたら、必要なライブラリをインストールします
pip install numpy scipy pandas scikit-learn
Jupyter Notebook をインストールします。
pip install notebook
インストール後、次のコマンドで Jupyter Notebook を起動します
jupyter notebook
これにより、デフォルトの Web ブラウザで Jupyter Notebook が起動します。そうでない場合は、ブラウザに手動で貼り付けることができるリンクがあるかターミナルを確認してください。
[ファイル] メニューから新しいノートブックを開き、必要なライブラリをインポートしてセルを実行します
import numpy as np import pandas as pd import scipy import sklearn
メルボルン住宅データセット サイトに移動し、データセットをダウンロードします。次のコードを使用して、データセットをノートブックに読み込みます。コンピューター上のファイル パスをコピーして、read_csv 関数に貼り付けることができます。以下に示すように、csv ファイルをノートブックと同じフォルダーに配置し、ファイルをインポートすることもできます。
data = pd.read_csv(r"melb_data.csv") # View the first 5 columns of the dataset data.head()
データをトレーニング セットと検証セットに分割します
from sklearn.model_selection import train_test_split # Set the target y = data['Price'] # Firstly drop categorical data types melb_features = data.drop(['Price'], axis=1) #drop the target column X = melb_features.select_dtypes(exclude=['object']) # Divide data into training and validation sets X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)
データ漏洩を防ぐために、データをトレーニング セットと検証セットに分割する必要があります。結果として、トレーニング特徴セットに対して実行する前処理手法は、検証特徴セットに対して実行するものと同じになります。
これでデータセットを処理する準備ができました!
欠損値の処理
データセット内の欠損値は、ドレスを縫うために使用されるはずの布地の穴のようなものです。それはドレスを作る前から台無しにしてしまいます。
データセット内の欠損値を処理するには 3 つの方法があります。
pip install numpy scipy pandas scikit-learn
この方法の問題は、モデルのトレーニングに使用する貴重な情報が失われる可能性があることです。削除された行または列のほとんどの値が欠落していない限り、空のセルを含む行または列を削除する必要はありません。
pip install notebook
jupyter notebook
重複の削除
重複したセルはデータが繰り返されていることを意味し、モデルの精度に影響します。それらに対処する唯一の方法は、それらをドロップすることです。
import numpy as np import pandas as pd import scipy import sklearn
外れ値への対処
外れ値は、データセット内の他の値と大きく異なる値です。他のデータ値と比較して、異常に高いか低い場合があります。これらは入力エラーによって発生する可能性もあれば、本当に外れ値である可能性もあります。
外れ値に対処することが重要です。そうしないと、不正確なデータ分析やモデルが作成されてしまいます。外れ値を検出する方法の 1 つは、Z スコアを計算することです。
その仕組みは、Z スコアを使用して、データ ポイントが平均値から 3 ポイント以上離れているかどうかを確認することです。この計算はすべてのデータ ポイントに対して実行されます。データ ポイントの Z スコアが 3 以上の値である場合、そのデータ ポイントは外れ値です。
data = pd.read_csv(r"melb_data.csv") # View the first 5 columns of the dataset data.head()
正規化
特徴を正規化して、正規分布として記述できるようにします。
正規分布 (ガウス分布としても知られる) は、平均値の上下にほぼ等しい距離または分布がある統計的分布です。正規分布データのデータ ポイントのグラフは、釣鐘曲線を形成します。
データを正規化するポイントは、使用したい機械学習アルゴリズムがデータが正規分布していると仮定しているかどうかです。例としては、ガウス単純ベイズ モデルがあります。
from sklearn.model_selection import train_test_split # Set the target y = data['Price'] # Firstly drop categorical data types melb_features = data.drop(['Price'], axis=1) #drop the target column X = melb_features.select_dtypes(exclude=['object']) # Divide data into training and validation sets X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)
標準化
標準化では、データセットの特徴が平均 0、標準偏差 1 になるように変換されます。このプロセスでは、データ全体で同様の範囲になるように各特徴がスケーリングされます。これにより、各機能がモデルのトレーニングに均等に寄与することが保証されます。
次の場合に標準化を使用します。
機能を標準化するには、sklearn ライブラリの StandardScaler() を使用します。
pip install numpy scipy pandas scikit-learn
データの前処理は単なる準備段階ではありません。これは、正確な機械学習モデルを構築するプロセスの一部です。作業しているデータセットのニーズに合わせて調整することもできます。
ほとんどのアクティビティと同様、練習すれば完璧になります。データの前処理を続けると、モデルだけでなくスキルも向上します。
これについてのあなたのご意見をぜひ読みたいです?
以上がML モデルのデータ前処理手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。