0
1

機械学習等で使われる、統計の標準化の例

Posted at

統計における標準化の概要

標準化は、データセット内の値を比較可能な形に変換するための統計的手法です。具体的には、元のデータのスケール(範囲)を変更し、平均を0、標準偏差を1に変換する操作を指します。これにより、異なるスケールや単位を持つデータを同じ基準で比較できるようになります。

なぜ標準化が重要か?

比較しやすくなる:

異なるスケールを持つ変数間での比較を容易にします。例えば、収入(ドル単位)と年齢(年単位)のように、異なるスケールのデータを比較する際に、標準化を行うことで同じ基準で分析が可能になります。

機械学習における重要性:

多くの機械学習アルゴリズム(例: k近傍法、サポートベクターマシン、ニューラルネットワークなど)は、変数間の距離に基づいて動作します。標準化を行わないと、スケールの大きい変数が過度に影響を与えてしまうため、標準化は非常に重要です。
データの分布を揃える:

標準化により、異なる分布を持つ変数のデータを揃えることができます。これにより、統計モデルや機械学習モデルの学習が安定しやすくなります。

Pythonのコード全文

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler

# データの生成
np.random.seed(42)
data1 = np.random.normal(50, 10, 1000)  # 平均50、標準偏差10の正規分布
data2 = np.random.normal(30, 5, 1000)   # 平均30、標準偏差5の正規分布

# 標準化の実行
scaler = StandardScaler()
data1_standardized = scaler.fit_transform(data1.reshape(-1, 1)).flatten()
data2_standardized = scaler.fit_transform(data2.reshape(-1, 1)).flatten()

# 元のデータのヒストグラム
plt.figure(figsize=(14, 6))

plt.subplot(1, 2, 1)
plt.hist(data1, bins=30, alpha=0.6, color='blue', label='Original Data 1')
plt.hist(data2, bins=30, alpha=0.6, color='green', label='Original Data 2')
plt.title('Original Data')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()

# 標準化後のデータのヒストグラム
plt.subplot(1, 2, 2)
plt.hist(data1_standardized, bins=30, alpha=0.6, color='blue', label='Standardized Data 1')
plt.hist(data2_standardized, bins=30, alpha=0.6, color='green', label='Standardized Data 2')
plt.title('Standardized Data')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()

plt.tight_layout()
plt.show()

コード実行の結果

データ.jpg

ステップ・バイ・ステップでのコードの説明

1. ライブラリのインポート

numpy と matplotlib.pyplot は、データの生成と可視化に使用される主要なライブラリです。
sklearn.preprocessing.StandardScaler は、データの標準化(平均を0、標準偏差を1に変換)を行うために使用されます。

2. データの生成

乱数生成のシードを設定することで、再現性を確保します。
2つの正規分布(平均50、標準偏差10および平均30、標準偏差5)に基づいて、それぞれ1000個のデータポイントを生成します。

3. データの標準化

StandardScaler を使ってデータを標準化します。これにより、データの平均が0、標準偏差が1になります。
標準化のため、データを1列の2次元配列に変換し、標準化後に再び1次元に戻します。

4. ヒストグラムの描画

グラフのサイズを設定し、2つのサブプロットを作成します。
左側のサブプロット: 元のデータをヒストグラムで表示します。
右側のサブプロット: 標準化後のデータをヒストグラムで表示します。
透明度、色、ラベルなどを設定して、ヒストグラムをわかりやすく表示します。

5. グラフのレイアウト調整と表示

tight_layout 関数で、グラフが重ならないようにレイアウトを自動調整します。
最後に、グラフを表示して結果を確認します。

まとめ

このコードでは、2つの異なる正規分布から生成されたデータを標準化し、元のデータと標準化後のデータをヒストグラムで視覚的に比較します。標準化によって、データの中心が0になり、スケールが統一されることを確認できます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1