Démarrage rapide - Spline cubique croissante
Ce premier exemple montre comment utiliser une spline cubique avec contrainte de monotonie.
Le code complet
examples/quick_start.py
import numpy as np
from BsplineQuantRegpy import SplineCubicQuant
import matplotlib.pyplot as plt
# Generate data
x = np.linspace(0, 1, 100)
y = 3*x + 0.2*np.sin(10*np.pi*x) + 0.2*np.random.randn(100)
knots = np.quantile(x, np.linspace(0, 1, 11))
# Fit with monotonicity constraint
result = SplineCubicQuant(x, y, knots, tau=0.5, monot=1)
# Fit without monotonicity constraint (uncomment to test)
#result = SplineCubicQuant(x, y, knots, tau=0.5, monot=0)
# Evaluate
x_eval = np.linspace(0, 1, 200)
y_eval = result(x_eval)
plt.plot(x,y,"*r")
plt.plot(x_eval,y_eval,color='black')
plt.show()
Explication
Importation : On importe SplineCubicQuant pour la régression avec splines cubiques.
Génération des données : - 100 points sur l’intervalle [0, 1] - La fonction cible est \(3x + 0.2\sin(10\pi x)\) avec du bruit
Définition des nœuds : 11 nœuds placés aux quantiles de x
Ajustement : Appel à SplineCubicQuant avec monot=1 pour imposer une contrainte de croissance
Visualisation : Affichage des données et de la courbe ajustée
Résultat
L’exécution produit un graphique montrant les données en rouge et la spline ajustée en noir, respectant la contrainte de monotonie.
Pour essayer sans contrainte
Décommentez la ligne : .. code-block:: python
#result = SplineCubicQuant(x, y, knots, tau=0.5, monot=0)