Menu
CoddyTech

Validasi K-Fold

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 37 dari 58.

Bab ini membuat skor kamu tepercaya. Di akhir bab ini, kamu akan menyetel model dengan grafik seperti ini:

Batang akurasi rata-rata pada 5 fold untuk k dari 1 hingga 41. Batang naik dari 0.85 pada k = 1 hingga nilai terbaik yang disorot sebesar 0.91 pada k = 15, lalu turun

Satu pemisahan data uji bisa saja beruntung. Validasi silang K-fold membagi baris menjadi beberapa fold, dalam contoh ini 5, lalu menguji setiap fold secara bergiliran sambil melatih model dengan data lainnya:

Lima baris yang masing-masing terdiri atas lima sel. Dalam setiap pemisahan, satu sel yang berbeda setiap kali menjadi fold pengujian; empat sel lainnya digunakan untuk pelatihan. Skor pohon Iris di sampingnya: 0.967, 0.967, 0.900, 0.967, 1.000

Satu pemanggilan menjalankan kelimanya, di sini untuk sebuah pohon pada bunga iris:

from sklearn.model_selection import cross_val_score

tree = DecisionTreeClassifier(random_state=0)
scores = cross_val_score(tree, X, y, cv=5)
print(np.round(scores, 3))
print(f"{scores.mean():.3f} {scores.std():.3f}")

Ini mencetak:

[0.967 0.967 0.9   0.967 1.   ]
0.960 0.033

Laporkan mean sebagai skor, dan std sebagai ukuran seberapa besar nilainya berfluktuasi.

challenge icon

Tantangan

Sedang

Sebuah pabrik kombucha memprediksi batch yang rusak berdasarkan 5 pembacaan laboratorium. Seberapa stabil modelnya? Program membaca jumlah fold, kode awal membuat data dan model.

  1. Lakukan validasi silang pada model dengan jumlah fold tersebut.
  2. Cetak akurasi setiap fold, lalu mean dan std, semuanya hingga 3 angka desimal.
  3. Cetak nomor fold yang paling lemah, dihitung mulai dari 1.

Untuk batch lain dan 4:

Fold 1: 0.917
Fold 2: 0.933
Fold 3: 0.883
Fold 4: 0.917
Mean 0.912, std 0.018
Weakest fold: 3

Coba sendiri

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

n_folds = int(input())

# Jangan ubah baris di bawah ini: 240 batch kombucha, masing-masing memiliki 5 hasil pengukuran lab; label 1 berarti rusak
X, y = make_classification(n_samples=240, n_features=5, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.9, random_state=2)
model = LogisticRegression(max_iter=1000)

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online