import numpy as np
from sklearn.neighbors import KNeighborsRegressor
from sklearn.preprocessing import StandardScaler
# 1. Data (Tinggi Badan -> Berat Badan)
X_train = np.array([[160], [165], [170], [180]])
y_train = np.array([50, 55, 65, 80])
# 2. Scaling (PENTING!)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# 3. Target Baru (168 cm)
X_new = np.array([[168]])
X_new_scaled = scaler.transform(X_new) # Jangan lupa scale target juga!
# 4. Buat Model KNN (K=2)
knn = KNeighborsRegressor(n_neighbors=2)
knn.fit(X_train_scaled, y_train)
# 5. Prediksi
prediksi = knn.predict(X_new_scaled)
print(f"Prediksi Berat untuk Tinggi 168cm: {prediksi[0]:.2f} kg")
# Tips:
# - K terlalu kecil (K=1) = Overfitting (Gampang kena noise)
# - K terlalu besar (K=100) = Underfitting (Rata-rata populasi, garis datar)