Pythonのscikit-learnを使ったL1正規化の実装方法をわかりやすく解説
一定の範囲の値を標準化された範囲の値へ変換する処理は「正規化(ノーマライゼーション)」と呼ばれます。変換後の値は -1〜+1 や 0〜1 の間に収まるように調整され、減算や除算といった基本的な演算によって実現できます。
正規化が必要な理由
機械学習アルゴリズムに入力するデータは、一貫性があり、構造化されていることが理想的です。すべての特徴量が同じスケールに揃っていれば、モデルはより効果的に値を予測できます。しかし現実世界のデータは非構造的であることが多く、多くの場合、スケールもバラバラです。
そこで活躍するのが正規化です。正規化は、データ準備(前処理)の中でも最も重要なプロセスの一つであり、入力データセットの各列の値を共通のスケールに揃える役割を果たします。また、正規化の過程では値の範囲が歪まないよう配慮されます。
注意: 機械学習アルゴリズムに入力されるすべてのデータセットを正規化する必要があるわけではありません。正規化が必要になるのは、データセット内の特徴量同士のスケールが大きく異なる場合のみです。
正規化の主な種類
- Min-Max正規化(最小値・最大値によるスケーリング)
- Zスコア正規化(標準化)
- 単位ベクトル正規化
L1正規化とは
ここでは、L1正規化の仕組みを見ていきましょう。L1正規化は「最小絶対偏差(Least Absolute Deviations)」とも呼ばれ、各行における絶対値の合計が必ず1になるようにデータを変換します。
それでは、Pythonのscikit-learnを使ってL1正規化を実装する方法を確認してみましょう。
サンプルコード
import numpy as np
from sklearn import preprocessing
input_data = np.array(
[[34.78, 31.9, -65.5],[-16.5, 2.45, -83.5],[0.5, -87.98, 45.62],[5.9, 2.38, -55.82]]
)
data_normalized_l1 = preprocessing.normalize(input_data, norm='l1')
print("\nL1 normalized data is \n", data_normalized_l1)出力結果
L1 normalized data is [[ 0.26312604 0.24133757 -0.49553639] [-0.16105417 0.0239141 -0.81503172] [ 0.00372856 -0.65607755 0.34019389] [ 0.09204368 0.03712949 -0.87082683]]
コードの解説
- 必要なパッケージ(Numpyとscikit-learnのpreprocessingモジュール)をインポートします。
- Numpyライブラリを使用して入力データを生成します。
- preprocessingクラスに含まれる「normalize」関数を使ってデータを正規化します。
- 引数 norm='l1' を指定することで、正規化の種類としてL1を選択しています。
- この方法により、配列内のすべてのデータが正規化され、各行の絶対値の合計が1になります。
- 最後に、正規化されたデータをコンソールに出力して表示します。
-
Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?
機械学習とデータ可視化の関係機械学習とは、データからモデルを構築し、まだ見たことのないデータに対しても汎化できるようにすることを目的とした技術です。機械学習モデルに入力するデータは、システムが正しく理解できる形である必要があります。それによって、モデルはデータを適切に解釈し、精度の高い結果を生成できるようになります。Seabornとは何かSeabornは、データの可視化を支援するPythonライブラリです。あらかじめカスタマイズされた美しいテーマと高水準インターフェースを備えており、このインターフェースを活用することで、扱うデータの種類や、フィルタを適用した際の挙動を柔軟にカスタマイズ・制御す
-
Pythonでscikit-learnライブラリを使って画像の解像度を取得する方法
はじめに:データ前処理とはデータ前処理とは、さまざまなリソース(または単一のリソース)から収集したすべてのデータを、共通のフォーマットや統一されたデータセットにまとめる作業のことです。現実世界のデータは決して完璧ではないため、欠損セル、エラー、外れ値、列間の不整合などが含まれている可能性があります。また、画像が正しく配置されていなかったり、不鮮明だったり、ファイルサイズが過大だったりすることもあります。前処理の目的は、こうした不整合やエラーを取り除き、データを分析可能な状態に整えることにあります。画像の解像度を取得するには、組み込み関数「shape」を使用します。画像を読み込むと、そのピクセル