特徴量をスケーリングする理由
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 47/64。
どの顧客が新規顧客に最も似ていますか?多くのモデルはサンプル間の距離を測定します。各特徴量の差を二乗し、合計して、平方根を取ります。
年収52,000ドルの25歳と、年収53,000ドルの61歳を比較すると:
表全体については、axis=1で各行の二乗の合計を求め、.argmin()で最も近い行を見つけます。
a = np.array([25, 52000]) # 年齢、収入
X = np.array([[61, 53000], # 61歳の人
[26, 55000]]) # 収入が$55,000の26歳の人
dists = np.sqrt(((X - a) ** 2).sum(axis=1))
print(np.round(dists, 2))
print(dists.argmin())これは次のように出力されます:
[1000.65 3000. ]
061歳の人が最も近いです。ドルは数値が大きくなるため、$1,000は36年を上回ります。スケーリングされていない場合、最も大きな単位で決まります。
この章では、すべての機能を公平に取り上げます。
チャレンジ
中級ある店舗では、洗濯機を価格($)、エネルギー消費量(年間kWh)、水の使用量(1回の洗濯あたりのリットル数)で比較し、これらをfeaturesに格納しています。プログラムは2台の洗濯機の位置iとjを読み込みます。次を出力してください。
Squared gaps:各特徴量の差の二乗。Distance:小数第2位まで丸めた値。Dominant feature:差の二乗が最大の特徴量の名前。
別の2台の洗濯機の場合:
Squared gaps: [2500 6400 1]
Distance: 94.35
Dominant feature: energy自分で試してみよう
import numpy as np
features = ["price", "energy", "water"]
# 洗濯機1台につき1行:価格はドル、電力消費量は年間kWh、水の使用量は洗濯1回あたりのリットル数
machines = np.array([[499, 160, 48],
[349, 210, 55],
[899, 120, 42],
[529, 250, 50],
[279, 230, 60],
[749, 140, 45]])
i = int(input())
j = int(input())
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ