penggunaan algoritma K-Nearest Neighbors (KNN) dengan Python menggunakan dataset Iris dari sklearn.datasets
. Dataset ini berisi tiga jenis bunga iris dengan empat fitur: sepal length, sepal width, petal length, dan petal width.
berikut datasetnya :
berikut dataset yang sudah di clean
Cleaned_Iris_Dataset
sklearn
atau Scikit-Learn adalah pustaka (library) Machine Learning untuk bahasa pemrograman Python. Scikit-Learn menyediakan berbagai alat untuk pemodelan prediktif, termasuk algoritma klasifikasi, regresi, clustering, dan reduksi dimensi.
Scikit-Learn dibangun di atas pustaka lain seperti NumPy, SciPy, dan Matplotlib, menjadikannya alat yang kuat dan efisien untuk analisis data dan pembelajaran mesin.
🔹 Fitur Utama Scikit-Learn
- Klasifikasi (Classification) → Misalnya Support Vector Machines (SVM), Random Forest, k-Nearest Neighbors (k-NN), Naïve Bayes, dll.
- Regresi (Regression) → Misalnya Linear Regression, Ridge Regression, Lasso Regression, dll.
- Clustering → Misalnya k-Means, DBSCAN, Agglomerative Clustering.
- Reduksi Dimensi → Misalnya Principal Component Analysis (PCA), t-SNE.
- Preprocessing → Normalisasi, standarisasi, encoding data kategori (One-Hot Encoding).
- Model Selection & Evaluation → Cross-validation, Grid Search, dan berbagai metrik evaluasi.
- Pipeline & Feature Engineering → Memudahkan pengolahan data secara otomatis dengan pipeline.
🔹 Cara Menginstal Scikit-Learn
Jika belum terinstal, kamu bisa memasangnya dengan perintah berikut:
Data | Sepal Length | Sepal Width | Petal Length | Petal Width | Kelas | Jarak ke Sampel Uji |
---|---|---|---|---|---|---|
Sampel Uji | 5.0 | 3.4 | 1.5 | 0.2 | ? | – |
Data 1 | 5.1 | 3.5 | 1.4 | 0.2 | 0 | d=?d = ? |
Data 2 | 4.9 | 3.0 | 1.4 | 0.2 | 0 | d=?d = ? |
Data 3 | 4.7 | 3.2 | 1.3 | 0.2 | 0 | d=?d = ? |
Data 4 | 4.6 | 3.1 | 1.5 | 0.2 | 0 | d=?d = ? |
Hasil ?
• 0 Setosa
• 1 VersiColor
• 2 Virginia

Menentukan 3 Tetangga Terdekat (k = 3)
Hasil perhitungan jarak ke beberapa data:
Data | Jarak Euclidean | Kelas |
---|---|---|
Data 1 | 0.173 | 0 (setosa) |
Data 3 | 0.412 | 0 (setosa) |
Data 2 | 0.424 | 0 (setosa) |
Data 4 | 0.500 | 0 (setosa) |
Tetangga Terdekat:
- Data 1 (Jarak = 0.173, Kelas = 0)
- Data 3 (Jarak = 0.412, Kelas = 0)
- Data 2 (Jarak = 0.424, Kelas = 0)
Semua tetangga terdekat adalah kelas 0 (setosa).
Kesimpulan
- Menggunakan rumus Euclidean, kita menghitung jarak ke semua titik.
- Kita memilih k=3 tetangga terdekat.
- Kita melakukan voting mayoritas, dan hasilnya adalah setosa (kelas 0).
Sekarang kita coba dengan Python code :
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
# 1. Load dataset Iris
iris = load_iris()
X = iris.data # Fitur (sepal & petal measurements)
y = iris.target # Label (jenis iris)
# 2. Pisahkan data menjadi training (80%) dan testing (20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. Normalisasi data untuk meningkatkan akurasi KNN
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 4. Inisialisasi model KNN dengan k=5
knn = KNeighborsClassifier(n_neighbors=5)
# 5. Latih model dengan data training
knn.fit(X_train, y_train)
# 6. Lakukan prediksi pada data uji
y_pred = knn.predict(X_test)
# 7. Evaluasi model
print(“Akurasi Model:”, accuracy_score(y_test, y_pred))
print(“\nConfusion Matrix:\n”, confusion_matrix(y_test, y_pred))
print(“\nClassification Report:\n”, classification_report(y_test, y_pred))
# 8. Prediksi data baru
new_data = np.array([[5.1, 3.5, 1.4, 0.2]]) # Contoh data baru
new_data_scaled = scaler.transform(new_data) # Normalisasi data
prediction = knn.predict(new_data_scaled)
print(“\nPrediksi jenis iris untuk data baru:”, iris.target_names[prediction[0]])
Hasil :
Akurasi Model: 1.0
Confusion Matrix: [[10 0 0] [ 0 9 0] [ 0 0 11]]
Prediksi jenis iris untuk data baru: setosa
Penjelasan Kode
- Menggunakan dataset Iris yang memiliki 150 sampel dengan 3 kelas (setosa, versicolor, virginica).
- Data dibagi menjadi training (80%) dan testing (20%) agar model bisa diuji.
- Dilakukan normalisasi dengan
StandardScaler()
agar KNN bisa bekerja lebih optimal. - Model KNN dibuat dengan
KNeighborsClassifier(n_neighbors=5)
, yang berarti akan melihat 5 tetangga terdekat untuk klasifikasi. - Model dilatih (
fit
) dan diuji (predict
), lalu dihitung akurasinya denganaccuracy_score()
. - Confusion matrix dan classification report digunakan untuk melihat performa model secara mendetail.
- Prediksi data baru dilakukan dengan contoh nilai
sepal
danpetal
.
dari hasil ini menunjukan perhitungan dengan manual dan penggunaan KNN di pyhton menunjukan hasil yang sama, serta :
- Menggunakan metode K-Nearest Neighbors (KNN), kita menghitung jarak Euclidean dari sampel uji ke setiap titik dalam dataset.
- Dengan memilih k=3 tetangga terdekat, kita menentukan bahwa sampel uji termasuk dalam kelas “Setosa” berdasarkan mayoritas voting.
- Metode KNN sangat berguna untuk klasifikasi berbasis kemiripan data, terutama dalam aplikasi seperti pengenalan pola, sistem rekomendasi, dan analisis data lainnya.
- Hasil perhitungan manual yang kita lakukan sesuai dengan perhitungan menggunakan Python, membuktikan bahwa metode ini dapat diimplementasikan dengan baik secara matematis maupun dengan bantuan teknologi.
Kami juga memiliki pelatihan dan sertifikasi BNSP Data Analyst yang mencakup berbagai teknik machine learning, analisis data, dan penggunaan alat seperti Python, SQL, dan BI Tools. Dengan pelatihan ini, Anda dapat memahami lebih dalam cara kerja algoritma seperti KNN dan menggunakannya dalam proyek nyata. Jika Anda tertarik, silakan hubungi kami untuk informasi lebih lanjut! 🚀