Kita akan menggunakan `SVR` dari `sklearn.svm`.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
# 1. Generate Data Dummy yang Melengkung (Non-Linear)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
y = np.sin(X).ravel()
# Tambah sedikit noise acak
y[::5] += 3 * (0.5 - np.random.rand(8))
# 2. Scaling (PENTING UNTUK SVR!)
# SVR sangat sensitif terhadap skala data.
sc_X = StandardScaler()
sc_y = StandardScaler()
X_scaled = sc_X.fit_transform(X)
y_scaled = sc_y.fit_transform(y.reshape(-1, 1)).ravel()
# 3. Buat Model SVR dengan Kernel RBF
# C=1.0 : Regularisasi
# epsilon=0.1 : Lebar tube
svr_rbf = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=0.1)
svr_lin = SVR(kernel='linear', C=100, gamma='auto')
# 4. Training
svr_rbf.fit(X_scaled, y_scaled)
svr_lin.fit(X_scaled, y_scaled)
# 5. Prediksi
y_pred_rbf = sc_y.inverse_transform(svr_rbf.predict(X_scaled).reshape(-1,1))
y_pred_lin = sc_y.inverse_transform(svr_lin.predict(X_scaled).reshape(-1,1))
print("Selesai Training. Model RBF akan mengikuti kurva sinus.")