訓練用データとテスト用データ
CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 2/58。
モデルは学習した行を記憶してしまうことがあるため、それらを使ってテストしても何の証明にもなりません。代わりに一部の行を隠します。テストセットは新しいデータの代わりとなります。
この一連の学習で最初のモデルは、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 によってシャッフルが繰り返し同じになります。
訓練セットで学習します。テストセットは最後に一度だけ開きます。
チャレンジ
簡単森の夜間カメラが、キツネかアナグマのいずれかである動物を200匹撮影し、そのデータをcamera.csvに記録しました。分割すれば公平なテストになるでしょうか?スターターコードではXとyを作成し、test_sizeを読み込みます。
- その
test_sizeとrandom_state=0を使って分割します。 - 以下のようにサイズを出力します。
- 各部分に含まれるキツネの割合を、整数のパーセントで出力します。
別の森で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())
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師あり学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ