導入
機械学習では、データをいつも決まった形に整えて渡します。「特徴量 X」と「ラベル y」です。この形に慣れることが、最初の関門です。
説明
- 特徴量 X:予測の手がかりにする入力。2次元(行=サンプル、列=項目)で用意します。
- ラベル y:予測したい正解。1次元(サンプルごとに1つ)です。
import numpy as np
# 3人ぶんのデータ。各人「身長, 体重」の2項目
X = np.array([
[160, 55],
[172, 68],
[158, 50],
])
# それぞれの正解ラベル(例: 0=A, 1=B のグループ)
y = np.array([0, 1, 0])
print("X の形:", X.shape) # (サンプル数, 特徴量数)
print("y の形:", y.shape) # (サンプル数,)
print("1人目の特徴量:", X[0])
X.shape が (3, 2) なのは「3サンプル × 2項目」という意味です。y.shape は (3,)。行数(サンプル数)は X と y で必ず一致します。ここがズレると学習できません。
たとえ項目が1つでも、X は2次元にします(第1レッスンで [[1],[2],...] と二重カッコにしていたのはこのためです)。
import numpy as np
hours = np.array([1, 2, 3]) # 1次元だと…
X = hours.reshape(-1, 1) # (3,) → (3, 1) の2次元に直す
print(X.shape)
print(X)
reshape(-1, 1) は「列を1つにして、行数は自動で合わせる」変形です。1項目のデータを X の形に整える定番テクニックです。
やってみよう
X に4人目 [180, 80] を足し、y にも正解を1つ足して、shape が両方とも増えることを確かめましょう(行数を一致させるのを忘れずに)。
演習
np.array([10, 20, 30, 40]) を、reshape を使って (4, 1) の2次元配列に直して表示してください。
ヒント1を見る
a.reshape(-1, 1) または a.reshape(4, 1)。