本文へスキップ
BecomeCoder

Python AIコース · 第1章 機械学習とは · レッスン3

データの形 ― 特徴量Xとラベルy

ブラウザで完結

導入

機械学習では、データをいつも決まった形に整えて渡します。「特徴量 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)

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、scikit-learn で本物の機械学習モデルをその場で訓練できます。scikit-learn を使う回は初回の読み込みに時間がかかります(数十秒かかることがあります)。本文の例をそのまま試したり、数値を書き換えたりして、結果の変化を確かめましょう(グラフ内の文字は英字で書きます)。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。