Skip to main content

Prediksi Data Baru

Prediksi Data Baru dengan KNN​

Setelah model Machine Learning berhasil dilatih dan dievaluasi, model tersebut dapat digunakan untuk melakukan prediksi terhadap data baru.

Data baru adalah data yang belum pernah digunakan oleh model selama proses training.

Secara sederhana:

Data Training
↓
Train
↓
Model KNN
↓
Data Baru
↓
Predict
↓
Hasil Prediksi

Pada materi ini, kita akan menggunakan model K-Nearest Neighbors (KNN) yang sebelumnya telah dilatih menggunakan Iris Dataset.


Konsep Dasar Prediksi​

Pada tahap sebelumnya, model KNN telah belajar berdasarkan data:

X_train + y_train
↓
KNN Model

Setelah model terlatih, kita dapat memberikan data baru:

Data Baru
↓
KNN Model
↓
Prediksi

Model kemudian menentukan kelas dari data tersebut berdasarkan pola yang telah dipelajari.


Memahami Struktur Iris Dataset​

Sebelum memberikan data baru kepada model, kita harus memahami struktur features yang digunakan saat training.

Iris Dataset memiliki 4 features:

  1. Sepal Length — panjang sepal
  2. Sepal Width — lebar sepal
  3. Petal Length — panjang petal
  4. Petal Width — lebar petal

Setiap data yang diberikan kepada model harus memiliki struktur yang sama.

Secara sederhana:

[Sepal Length, Sepal Width, Petal Length, Petal Width]

Karena model dilatih menggunakan empat features, data baru juga harus menyediakan empat nilai features.


Menyiapkan Data Baru​

Kita dapat membuat data sampel secara manual.

Contohnya:

sample = [
[3, 5, 4, 2],
[2, 3, 5, 4]
]

Pada contoh tersebut terdapat dua data bunga baru.

Strukturnya:

Data 1 → [3, 5, 4, 2]
Data 2 → [2, 3, 5, 4]

Masing-masing data memiliki empat nilai yang sesuai dengan empat features Iris Dataset.


Mengapa Struktur Data Harus Sesuai?​

Model Machine Learning mengharapkan input dengan struktur yang sama seperti data yang digunakan ketika model dilatih.

Jika model dilatih menggunakan:

4 features

maka data baru juga harus memiliki:

4 features

Contoh yang benar:

sample = [
[3, 5, 4, 2],
[2, 3, 5, 4]
]

Sedangkan data dengan jumlah features yang berbeda tidak sesuai dengan struktur model.

Prinsipnya:

Training Features
↓
4 Features
↓
Model
↑
4 Features
↑
Data Baru

Melakukan Prediksi dengan predict()​

Setelah data baru disiapkan, kita dapat menggunakan method:

predict()

pada model KNN.

Contohnya:

predictions = knn.predict(sample)

Model akan menghasilkan prediksi berupa label numerik.

Misalnya:

[1, 2]

Angka tersebut merupakan label kelas dari Iris Dataset.


Memahami Label Iris​

Iris Dataset menggunakan angka untuk merepresentasikan spesies bunga:

LabelSpesies
0Iris setosa
1Iris versicolor
2Iris virginica

Jadi ketika model menghasilkan:

[1, 2]

artinya:

1 → Iris versicolor
2 → Iris virginica

Mengubah Label Menjadi Nama Spesies​

Label numerik memang mudah digunakan oleh komputer, tetapi kurang informatif bagi manusia.

Kita dapat menggunakan:

iris.target_names

untuk mendapatkan nama spesies.

Contohnya:

predicted_species = [
iris.target_names[p]
for p in predictions
]

Kode tersebut menggunakan list comprehension untuk mengubah setiap label numerik menjadi nama spesies.


Memahami List Comprehension​

Perhatikan:

iris.target_names[p]

Jika:

p = 0

maka hasilnya:

setosa

Jika:

p = 1

maka:

versicolor

Jika:

p = 2

maka:

virginica

Kemudian list comprehension melakukan proses tersebut untuk setiap hasil prediksi.


Menampilkan Hasil Prediksi​

Setelah dikonversi menjadi nama spesies:

print("Hasil Prediksi:", predicted_species)

Contoh hasil:

Hasil Prediksi: ['versicolor', 'virginica']

Artinya model memprediksi:

Data 1 → Iris versicolor
Data 2 → Iris virginica

Implementasi Lengkap​

Dengan asumsi model knn sudah dilatih menggunakan Iris Dataset:

# Data baru
sample = [
[3, 5, 4, 2],
[2, 3, 5, 4]
]

# Melakukan prediksi
predictions = knn.predict(sample)

# Mengubah label numerik menjadi nama spesies
predicted_species = [
iris.target_names[p]
for p in predictions
]

# Menampilkan hasil
print("Hasil Prediksi:", predicted_species)

Alur Prediksi Data Baru​

Prosesnya dapat digambarkan:

Data Baru
│
├── [3, 5, 4, 2]
└── [2, 3, 5, 4]
↓
knn.predict()
↓
Label Numerik
↓
[1, 2]
↓
iris.target_names
↓
['versicolor', 'virginica']

predict() Berbeda dengan fit()​

Penting untuk membedakan kedua method tersebut.

fit()​

Digunakan untuk melatih model:

knn.fit(X_train, y_train)

Alurnya:

Training Data
↓
fit()
↓
Model Belajar

predict()​

Digunakan untuk membuat prediksi:

knn.predict(sample)

Alurnya:

Data Baru
↓
predict()
↓
Prediksi

Cara mudah mengingatnya:

fit()
→ belajar

predict()
→ memprediksi

Data Baru vs Test Data​

Keduanya sama-sama dapat diberikan kepada predict(), tetapi tujuan penggunaannya berbeda.

Test Data​

Test data digunakan untuk mengevaluasi model.

X_test
↓
predict()
↓
y_predict
↓
dibandingkan dengan y_test

Karena y_test sudah diketahui, kita dapat menghitung accuracy.


Data Baru​

Data baru digunakan ketika kita ingin menggunakan model untuk membuat prediksi terhadap data yang belum diketahui labelnya.

Data Baru
↓
predict()
↓
Prediksi

Jika label sebenarnya belum diketahui, kita belum dapat langsung menghitung accuracy untuk data tersebut.


Bagaimana Mengetahui Prediksi Benar?​

Misalnya model menghasilkan:

Prediksi:
versicolor

Kita belum dapat mengatakan prediksi tersebut benar hanya berdasarkan output model.

Untuk mengetahui kebenarannya, kita membutuhkan label sebenarnya.

Misalnya:

Prediksi : versicolor
Label sebenarnya: versicolor

Maka prediksi tersebut benar.

Namun jika:

Prediksi : versicolor
Label sebenarnya: virginica

maka prediksi tersebut salah.


Evaluasi Data Baru​

Untuk mengevaluasi prediksi data baru secara langsung, kita membutuhkan data yang sudah memiliki label sebenarnya.

Secara sederhana:

Data Baru
↓
Model
↓
Prediction
↓
Compare dengan
Label Sebenarnya
↓
Evaluation

Inilah alasan mengapa dataset yang memiliki label sangat penting dalam Supervised Learning.


Hubungan dengan Accuracy​

Pada tahap evaluasi sebelumnya kita menggunakan:

metrics.accuracy_score(
y_test,
y_predict
)

Karena kita memiliki:

y_test
↓
Label sebenarnya

dan:

y_predict
↓
Prediksi model

Keduanya dapat dibandingkan.

Untuk data baru, jika label sebenarnya belum diketahui, kita hanya memiliki:

Data Baru
↓
Prediction

Sehingga accuracy belum dapat dihitung.


Contoh Workflow Lengkap​

Jika seluruh proses dari training hingga prediksi digabungkan:

Iris Dataset
↓
X dan y
↓
Train/Test Split
↓
X_train + y_train
↓
KNN.fit()
↓
Model Terlatih
↓
X_test
↓
predict()
↓
y_predict
↓
accuracy_score()
↓
Evaluasi Model

Setelah model dianggap cukup baik:

Model Terlatih
↓
Data Baru
↓
predict()
↓
Hasil Prediksi

Akurasi Model​

Pada demonstrasi sebelumnya, model dapat menghasilkan accuracy sekitar 96% berdasarkan data testing.

Nilai tersebut menunjukkan bahwa model mampu melakukan klasifikasi dengan cukup baik pada data uji yang digunakan.

Namun, accuracy pada test set tidak berarti setiap prediksi data baru pasti benar.

Data baru tetap dapat menghasilkan prediksi yang salah.


Mengapa Model Bisa Salah?​

Machine Learning tidak selalu menghasilkan prediksi yang benar.

Model mempelajari pola dari data training.

Jika terdapat data baru yang memiliki karakteristik berbeda atau berada di area yang sulit dibedakan, model dapat menghasilkan prediksi yang salah.

Secara sederhana:

Data Training
↓
Belajar Pola
↓
Model
↓
Data Baru
↓
Prediksi

Kualitas prediksi sangat dipengaruhi oleh kualitas data dan kemampuan model dalam melakukan generalisasi.


Ringkasan​

Pada materi ini kita mempelajari cara menggunakan model KNN untuk memprediksi data baru.

Konsep utama:

  • Model yang sudah dilatih dapat digunakan untuk melakukan prediksi.
  • Data baru harus memiliki jumlah dan struktur features yang sesuai dengan data training.
  • Iris Dataset memiliki empat features.
  • knn.predict() digunakan untuk menghasilkan prediksi.
  • Hasil prediksi Iris berupa label numerik 0, 1, atau 2.
  • iris.target_names dapat digunakan untuk mengubah label numerik menjadi nama spesies.
  • List comprehension dapat digunakan untuk melakukan konversi tersebut.
  • Data baru yang belum memiliki label sebenarnya belum dapat dievaluasi menggunakan accuracy.
  • Untuk mengetahui apakah prediksi benar, kita membutuhkan label sebenarnya.

Kesimpulan​

Setelah model Machine Learning selesai dilatih dan memiliki performa yang cukup baik, model dapat digunakan untuk melakukan prediksi terhadap data baru.

Prosesnya:

Model Terlatih
↓
Data Baru
↓
predict()
↓
Label Prediksi
↓
Konversi Label
↓
Nama Kelas

Pada Iris Dataset:

0 → setosa
1 → versicolor
2 → virginica

Sehingga model tidak hanya dapat digunakan untuk menguji X_test, tetapi juga dapat digunakan untuk memprediksi data baru yang memiliki struktur features yang sesuai.

Inilah tahap penting dalam Machine Learning: model yang telah belajar dari data dapat digunakan untuk menghasilkan prediksi pada data yang belum diketahui jawabannya.