Menu
CoddyTech

訓練用データとテスト用データ

CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 2/58。

モデルは学習した行を記憶してしまうことがあるため、それらを使ってテストしても何の証明にもなりません。代わりに一部の行を隠します。テストセットは新しいデータの代わりとなります。

番号順に並んだ12行をシャッフルして分配します。青いセルが9つ、10 2 8 1 7 9 3 0 5で、trainとラベル付けされ、オレンジ色のセルが3つ、6 11 4で、testとラベル付けされています

この一連の学習で最初のモデルは、112本のアヤメを調べ、そのうち38本の名前を当てました。次の行でデータを振り分けました。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
print(X_train.shape, X_test.shape)

これは (112, 4) (38, 4) を出力します。4つの部分は常にこの順序で並び、random_state=0 によってシャッフルが繰り返し同じになります。

訓練セットで学習します。テストセットは最後に一度だけ開きます。

challenge icon

チャレンジ

簡単

森の夜間カメラが、キツネかアナグマのいずれかである動物を200匹撮影し、そのデータをcamera.csvに記録しました。分割すれば公平なテストになるでしょうか?スターターコードではXとyを作成し、test_sizeを読み込みます。

  1. そのtest_sizeとrandom_state=0を使って分割します。
  2. 以下のようにサイズを出力します。
  3. 各部分に含まれるキツネの割合を、整数のパーセントで出力します。

別の森で0.25の場合:

Train: 90 snapshots
Test: 30 snapshots
Foxes: 52% of train, 47% of test

自分で試してみよう

import pandas as pd

# 夜間カメラのスナップショット1枚につき1行
camera = pd.read_csv("camera.csv")
X = camera[["minutes_after_sunset", "length_cm", "speed_kmh"]]
y = camera["animal"]
test_size = float(input())

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

教師あり学習のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ