Python
 Computer >> コンピューター >  >> プログラミング >> Python

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になります。
  • 最後に、正規化されたデータをコンソールに出力して表示します。
  1. Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?

    機械学習とデータ可視化の関係機械学習とは、データからモデルを構築し、まだ見たことのないデータに対しても汎化できるようにすることを目的とした技術です。機械学習モデルに入力するデータは、システムが正しく理解できる形である必要があります。それによって、モデルはデータを適切に解釈し、精度の高い結果を生成できるようになります。Seabornとは何かSeabornは、データの可視化を支援するPythonライブラリです。あらかじめカスタマイズされた美しいテーマと高水準インターフェースを備えており、このインターフェースを活用することで、扱うデータの種類や、フィルタを適用した際の挙動を柔軟にカスタマイズ・制御す

  2. Pythonでscikit-learnライブラリを使って画像の解像度を取得する方法

    はじめに:データ前処理とはデータ前処理とは、さまざまなリソース(または単一のリソース)から収集したすべてのデータを、共通のフォーマットや統一されたデータセットにまとめる作業のことです。現実世界のデータは決して完璧ではないため、欠損セル、エラー、外れ値、列間の不整合などが含まれている可能性があります。また、画像が正しく配置されていなかったり、不鮮明だったり、ファイルサイズが過大だったりすることもあります。前処理の目的は、こうした不整合やエラーを取り除き、データを分析可能な状態に整えることにあります。画像の解像度を取得するには、組み込み関数「shape」を使用します。画像を読み込むと、そのピクセル