Introduction
Ce laboratoire montre comment effectuer une régression linéaire avec parcimonie en utilisant l'ensemble de données sur le diabète de scikit-learn. Nous allons ajuster seulement deux caractéristiques de l'ensemble de données et tracer les résultats pour illustrer le concept de parcimonie.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites du carnet Jupyter.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous résoudrons rapidement le problème pour vous.
Charger l'ensemble de données sur le diabète
Tout d'abord, nous chargeons l'ensemble de données sur le diabète de scikit-learn et le divisons en ensembles d'entraînement et de test.
from sklearn import datasets
import numpy as np
X, y = datasets.load_diabetes(return_X_y=True)
indices = (0, 1)
X_train = X[:-20, indices]
X_test = X[-20:, indices]
y_train = y[:-20]
y_test = y[-20:]
Ajuster un modèle de régression linéaire
Ensuite, nous ajustons un modèle de régression linéaire à l'ensemble d'entraînement.
from sklearn import linear_model
ols = linear_model.LinearRegression()
_ = ols.fit(X_train, y_train)
Tracer les résultats
Enfin, nous traçons les résultats à partir de trois vues différentes pour illustrer le concept de parcimonie.
import matplotlib.pyplot as plt
## unused but required import for doing 3d projections with matplotlib < 3.2
import mpl_toolkits.mplot3d ## noqa: F401
def plot_figs(fig_num, elev, azim, X_train, clf):
fig = plt.figure(fig_num, figsize=(4, 3))
plt.clf()
ax = fig.add_subplot(111, projection="3d", elev=elev, azim=azim)
ax.scatter(X_train[:, 0], X_train[:, 1], y_train, c="k", marker="+")
ax.plot_surface(
np.array([[-0.1, -0.1], [0.15, 0.15]]),
np.array([[-0.1, 0.15], [-0.1, 0.15]]),
clf.predict(
np.array([[-0.1, -0.1, 0.15, 0.15], [-0.1, 0.15, -0.1, 0.15]]).T
).reshape((2, 2)),
alpha=0.5,
)
ax.set_xlabel("X_1")
ax.set_ylabel("X_2")
ax.set_zlabel("Y")
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])
## Generate the three different figures from different views
elev = 43.5
azim = -110
plot_figs(1, elev, azim, X_train, ols)
elev = -0.5
azim = 0
plot_figs(2, elev, azim, X_train, ols)
elev = -0.5
azim = 90
plot_figs(3, elev, azim, X_train, ols)
plt.show()
Résumé
Ce laboratoire a montré comment effectuer une régression linéaire avec parcimonie en utilisant l'ensemble de données sur le diabète de scikit-learn. Nous avons ajusté seulement deux caractéristiques de l'ensemble de données et tracé les résultats pour illustrer le concept de parcimonie.