Régression par plus proches voisins

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

La régression par plus proches voisins est un algorithme d'apprentissage automatique qui prédit la valeur d'un nouveau point de données en trouvant les k plus proches points de données dans l'ensemble d'entraînement et en utilisant leur valeur moyenne pour prédire la nouvelle valeur. Dans ce laboratoire, nous utiliserons scikit-learn pour démontrer comment résoudre un problème de régression en utilisant un k-plus proche voisin et l'interpolation de la variable cible en utilisant à la fois le barycentre et des poids constants.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49260{{"Régression par plus proches voisins"}} end

Générer des données d'échantillonnage

Nous commençons par générer des données d'échantillonnage pour notre problème de régression. Nous créons un tableau de 40 points de données avec 1 caractéristique, puis nous créons un tableau cible en appliquant la fonction sinus aux données. Nous ajoutons également du bruit à chaque 5ème point de données.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors

np.random.seed(0)
X = np.sort(5 * np.random.rand(40, 1), axis=0)
T = np.linspace(0, 5, 500)[:, np.newaxis]
y = np.sin(X).ravel()

## Ajoutez du bruit aux cibles
y[::5] += 1 * (0.5 - np.random.rand(8))

Ajuster le modèle de régression

Nous ajustons ensuite notre modèle de régression aux données d'échantillonnage en utilisant 5 voisins et des poids uniformes et basés sur la distance. Nous utilisons une boucle for pour itérer sur chaque type de poids et créer un nuage de points des points de données et un tracé de ligne des valeurs prédites en utilisant la méthode predict du modèle ajusté.

n_neighbors = 5

for i, weights in enumerate(["uniform", "distance"]):
    knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)
    y_ = knn.fit(X, y).predict(T)

    plt.subplot(2, 1, i + 1)
    plt.scatter(X, y, color="darkorange", label="données")
    plt.plot(T, y_, color="navy", label="prédiction")
    plt.axis("tight")
    plt.legend()
    plt.title("KNeighborsRegressor (k = %i, poids = '%s')" % (n_neighbors, weights))

plt.tight_layout()
plt.show()

Sommaire

Dans ce laboratoire, nous avons démontré comment utiliser l'algorithme de régression par plus proches voisins pour prédire les valeurs de nouveaux points de données sur la base des k-plus proches voisins dans l'ensemble d'entraînement. Nous avons utilisé scikit-learn pour générer des données d'échantillonnage et ajuster notre modèle de régression en utilisant des poids uniformes et basés sur la distance. Nous avons ensuite tracé les points de données et les valeurs prédites pour visualiser la précision de notre modèle.