Materi
Model dinilai dari tebakannya pada data yang belum pernah ia lihat. Karena itu data dibagi dua: data latih untuk fit, dan data uji yang disimpan sampai model selesai. Menilai model dengan data latihnya sendiri memberi skor yang terlalu bagus, karena model hanya perlu mengingat jawaban.
train_test_split(X, y) mengacak baris lalu mengembalikan empat bagian berurutan: X_train, X_test, y_train, y_test. Parameter test_size menentukan porsi uji; bila tidak diisi, porsinya 0,25. Karena pembagiannya acak, hasilnya berubah setiap kali dijalankan kecuali random_state diberi bilangan bulat. Glossary scikit-learn menyebut random_state bilangan bulat sebagai cara mendapatkan hasil yang sama di setiap pemanggilan.
Bila label tidak seimbang, misalnya hanya 10% pelanggan yang berhenti, pengacakan bisa membuat data uji hampir tanpa kelas kecil itu. stratify=y menjaga proporsi setiap kelas sama di data latih dan data uji.
import numpy as np
from sklearn.model_selection import train_test_split
X = np.arange(20).reshape(10, 2)
y = np.array([0, 1] * 5)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0
)
print(len(X_train), len(X_test)) # 7 3