Artificial-intelligence-with-python-data-preparation
Pythonを使用したAI –データ準備
教師あり機械学習アルゴリズムだけでなく、教師あり機械学習アルゴリズムもすでに研究しています。 これらのアルゴリズムでは、トレーニングプロセスを開始するためにフォーマットされたデータが必要です。 MLアルゴリズムへの入力として提供できるように、特定の方法でデータを準備またはフォーマットする必要があります。
この章では、機械学習アルゴリズムのデータ準備に焦点を当てています。
データの前処理
私たちの日常生活では、大量のデータを扱いますが、このデータは生の形式です。 機械学習アルゴリズムの入力としてデータを提供するには、それを意味のあるデータに変換する必要があります。 そこで、データの前処理が重要になります。 言い換えれば、機械学習アルゴリズムにデータを提供する前に、データを前処理する必要があると言えます。
データの前処理手順
Pythonでデータを前処理するには、次の手順に従います-
ステップ1-有用なパッケージのインポート-Pythonを使用している場合、これはデータを特定の形式に変換する最初のステップ、つまり前処理になります。 それは次のように行うことができます-
ここでは、次の2つのパッケージを使用しました-
- NumPy -基本的にNumPyは、小さな多次元配列の速度をあまり犠牲にすることなく、任意のレコードの大きな多次元配列を効率的に操作するために設計された汎用配列処理パッケージです。
- Sklearn.preprocessing -このパッケージは、多くの一般的なユーティリティ関数とトランスクラスを提供し、生の特徴ベクトルを機械学習アルゴリズムにより適した表現に変更します。
ステップ2-サンプルデータの定義-パッケージをインポートした後、そのデータに前処理技術を適用できるようにサンプルデータを定義する必要があります。 私たちは今、次のサンプルデータを定義します-
- Step3-前処理技術の適用*-このステップでは、前処理技術のいずれかを適用する必要があります。
次のセクションでは、データの前処理手法について説明します。
データ前処理の手法
データの前処理のための技術は以下に説明されています-
二値化
これは、数値をブール値に変換する必要がある場合に使用される前処理手法です。 私たちは、次のようにしきい値として0.5を使用して、入力データを二値化するために組み込みの方法を使用することができます
これで、上記のコードを実行した後、次の出力が得られます。0.5(しきい値)を超えるすべての値は1に変換され、0.5未満のすべての値は0に変換されます。
二値化データ
print( "Mean ="、input_data.mean(axis = 0))print( "標準偏差="、input_data.std(axis = 0))
平均= [1.75 -1.275 2.2]標準偏差= [2.71431391 4.20022321 4.69414529]
data_scaled = preprocessing.scale(input_data)print( "Mean ="、data_scaled.mean(axis = 0))print( "標準偏差="、data_scaled.std(axis = 0))
平均= [1.11022302e-16 0.00000000e + 00 0.00000000e + 00]標準偏差= [1。 1. 1.]
data_scaler_minmax =前処理.MinMaxScaler(feature_range =(0,1))data_scaled_minmax = data_scaler_minmax.fit_transform(input_data)print( "\ nMin max scaled data:\ n"、data_scaled_minmax)
[ [ 0.48648649 0.58252427 0.99122807] [ 0. 1. 0.81578947] [ 0.27027027 0. 1. ] [ 1. 0. 99029126 0. ]]
#データの正規化data_normalized_l1 = preprocessing.normalize(input_data、norm = 'l1')print( "\ nL1正規化データ:\ n"、data_normalized_l1)
L1正規化データ:[[L2 Normalization *
- 最小二乗*とも呼ばれます。 この種の正規化は、各行で平方和が常に最大1になるように値を変更します。 次のPythonコードの助けを借りて、入力データに実装することができます-
上記のコード行は、次の出力を生成します-
sklearnインポート前処理からnpをnpとしてインポートする
#サンプルの入力ラベルinput_labels = ['red'、 'black'、 'red'、 'green'、 'black'、 'yellow'、 'white']
#ラベルエンコーダーを作成するencoder = preprocessing.LabelEncoder()encoder.fit(input_labels)
LabelEncoder()
#ラベルのセットをエンコードtest_labels = ['green'、 'red'、 'black'] encoded_values = encoder.transform(test_labels)print( "\ nLabels ="、test_labels)
ラベル= ['green'、 'red'、 'black']
print( "Encoded values ="、list(encoded_values))
エンコードされた値= [1、2、0]
#値のセットをデコードencoded_values = [3,0,4,1] decode_list = encoder.inverse_transform(encoded_values)print( "\ nEncoded values ="、encoded_values)
エンコードされた値= [3、0、4、1] print( "\ nDecoded labels ="、list(decoded_list))
デコードされたラベル= ['white'、 'black'、 'yellow'、 'green']