ブロードキャスト
CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 13/60。
すべての特徴量が0付近にあると、モデルはよりよく学習します。そこで、各列の平均値をその列から引くと、NumPyが平均値をすべての行にコピーします。
コードでは、3人の身長と体重について次のようになります。
data = np.array([[170, 60],
[180, 80],
[160, 70]])
print(data - data.mean(axis=0))これは次のように出力されます:
[[ 0. -10.]
[ 10. 10.]
[-10. 0.]]このコピーはブロードキャストです。表は中心化され、各値は列の平均からどれだけ離れているかを示しています。
平均値の形状は(2,)です。(3, 2)の表の各列に1つの値があります。長さがそれ以外の場合はエラーで停止します。
チャレンジ
簡単フィットネスアプリでは、トレーニング前に各テーブルの中心化を行います。スターターコードは2つのテーブル、users(3つの特徴量)とworkouts(2つ)に対してcenterを呼び出し、結果を出力します。現在、centerはテーブルを変更せずに返します。
centerを完成させ、列数にかかわらず、各列の平均をその列から引くようにしてください。その下の行は変更しないでください。
ユーザーが2人、ワークアウトが2つの場合、出力は次のようになります。
Centered users:
[[-6. 7. -5.]
[ 6. -7. 5.]]
Column means after centering: [0. 0. 0.]
Centered workouts:
[[-10. -90.]
[ 10. 90.]]
Column means after centering: [0. 0.]自分で試してみよう
import numpy as np
def center(table):
# 各列の平均値を引いたtableを返す
# 以下にコードを書いてください
return table
# ユーザーごとに1行:年齢、安静時心拍数、1日あたりの運動時間(分)
users = np.array([[25, 62, 30],
[31, 70, 45],
[40, 58, 20],
[29, 66, 25]])
# ワークアウトごとに1行:運動時間(分)、消費カロリー
workouts = np.array([[30, 240],
[45, 410],
[20, 150],
[60, 520],
[35, 300]])
# 以下の行は変更しないでください
print("Centered users:")
print(center(users))
print("Column means after centering:", np.round(center(users).mean(axis=0), 2))
print("Centered workouts:")
print(center(workouts))
print("Column means after centering:", np.round(center(workouts).mean(axis=0), 2))
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
データとプロットのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ