import numpy as np import matplotlib.pyplot as plt from lightgbm import LGBMRegressor # === Données non linéaires === np.random.seed(0) X = np.linspace(0, 10, 200).reshape(-1, 1) y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0]) # sinusoïde + bruit # === Entraînement du modèle === model = LGBMRegressor( n_estimators=300, # nombre d’arbres learning_rate=0.05, # taux d’apprentissage (plus petit = plus lisse) max_depth=5 # profondeur des arbres (plus grand = plus complexe) ) model.fit(X, y) # === Prédiction === X_test = np.linspace(0, 10, 500).reshape(-1, 1) y_pred = model.predict(X_test) # === Visualisation === plt.figure(figsize=(10, 5)) plt.scatter(X, y, color="lightgray", label="Données réelles (sin + bruit)", s=20) plt.plot(X_test, np.sin(X_test), color="green", linestyle="--", label="sin(x) réel") plt.plot(X_test, y_pred, color="red", label="Prédiction LGBM") plt.title("Approximation non linéaire avec LGBMRegressor") plt.xlabel("x") plt.ylabel("y") plt.legend() plt.grid(True) plt.show()