Cet algorithme d’apprentissage automatique est facile et simple à comprendre. Vous pouvez résoudre les problèmes de régression et de classification avec les méthodes d’apprentissage machine. Pour comprendre le concept de voisin le plus proche, vous devez d’abord savoir comment fonctionne une technique d’apprentissage machine supervisée. Dans l’apprentissage supervisé, vous fournissez au modèle des données étiquetées. La machine analyse alors les données étiquetées et génère un résultat approprié.
Par exemple, lorsque les enfants sont jeunes, ils ont besoin d’être supervisés pour comprendre la différence entre les différentes couleurs, les animaux, les alphabets, etc. Vous étiquetez tous les éléments pour eux afin qu’ils puissent les identifier rapidement. C’est ainsi que fonctionne l’apprentissage machine supervisé. Cet apprentissage aide à résoudre les problèmes de classification. Dans ce type de problème, vous prévoyez la valeur des données d’entrée, puis l’algorithme arrange les valeurs dans différentes classes en fonction du poids des fonctions et de leurs caractéristiques d’entrée.

Voisins les plus proches

Pour résoudre la régression et la classification, vous pouvez utiliser cet algorithme pour la méthode d’apprentissage machine supervisé. KNN n’inclut aucune phase d’apprentissage. Ils ne calculent pas la méthode prédictive comme la régression linéaire ou logistique. Cet algorithme trouve les similitudes entre les variables. Il mesure la proximité ou la distance entre les variables en fonction des données fournies. En d’autres termes, cet algorithme pense que plus les choses sont proches les unes des autres, plus elles sont similaires.


Comment fonctionne l’algorithme KNN

Vous devez suivre la méthode suivante pour implémenter correctement l’algorithme K-Nearest Neighbor (pour Python) :

Chargez l’entrée ou les données sur la machine à partir de l’ensemble de données

Modifier la valeur de K à partir des variables

Calculez la distance des variables par rapport à chaque exemple de données.

Ajoutez maintenant la distance sous une forme ordonnée

Triez maintenant la collection ordonnée par ordre croissant en fonction de leur distance.

Choisissez le K de la collection

Trouvez maintenant les étiquettes de cette valeur K

S’il s’agit d’une régression, vous devez rendre la moyenne de l’étiquette “K”.

S’il s’agit d’une classification, vous devez retourner le mode de l’étiquette “K”.


Mise en œuvre du codage sur

à partir de collections importCounter
mathématiques d’importation defknn(données, requête, k, distance_fn, choix_fn) :
distances_et_indices_du_voisin = []
3. Pour chaque exemple dans les données pour l’index, par exemple inenumerate(données) :
3.1 Calculer la distance entre l’exemple de requête et le exemple tiré des données. distance =distance_fn(exemple[:-1], interrogation)
3.2 Ajouter la distance et l’index de l’exemple à une collection commandée neighbor_distances_and_indices.append((distance, index))
4. Trier la collection ordonnée de distances et d’indices de du plus petit au plus grand (en ordre croissant) selon les distances distances_et_indices_voisins_triés =sorted(distances_et_indices_voisins)
5. Choisissez les premières entrées K de la collection triée k_distances_et_indices_les_plus_proches = distances_et_indices_voisins_triés[:k]
6. Obtenir les étiquettes des entrées K sélectionnées k_nearest_labels = [données[i][1] pour la distance, i dans k_nearest_distances_and_indices]
7. Si la régression (choice_fn = moyenne), renvoie la moyenne des K étiquettes
8. Si classification (choice_fn = mode), retourner le mode des K étiquettes return k_nearest_distances_and_indices , choice_fn(k_nearest_labels) defmean(labels) :
returnsum(labels) /len(labels) defmode(étiquettes) :
returnCounter(labels).most_common(1)[0][0] defeuclidean_distance(point1, point2) :
somme_distance_carrée =0
pour i inrange(len(point1)) :
sum_squared_distance += math.pow(point1[i] – point2[i], 2)
return math.sqrt(sum_squared_distance) defmain() :
”’
# Données de régression
#
# Colonne 0 : hauteur (pouces)
# Colonne 1 : poids (livres)
”’
reg_data = [
[65.75, 112.99],
[71.52, 136.49],
[69.40, 153.03],
[68.22, 142.34],
[67.79, 144.30],
[68.70, 123.30],
[69.80, 141.49],
[70.01, 136.46],
[67.90, 112.37],
[66.49, 127.45],
] Question : Compte tenu des données dont nous disposons, quelle est la meilleure estimation du poids d’une personne si elle mesure 60 pouces ? reg_query = [60] reg_k_nearest_neighbors, reg_prediction =knn( reg_data, reg_query, k=3, distance_fn=euclidean_distance, choice_fn=mean ) ”’
# Données de classification
#
# Colonne 0 : âge
# Colonne 1 : aime l’ananas
”’
clf_data = [
[22, 1],
[23, 1],
[21, 1],
[18, 1],
[19, 1],
[25, 0],
[27, 0],
[29, 0],
[31, 0],
[45, 0],
] Question : Compte tenu des données dont nous disposons, le M&M non spécifié s’inscrit-il dans l’ensemble du M&M rouge ou vert ? clf_query = [33] clf_k_nearest_neighbors, clf_prediction =knn( clf_data, clf_query, k=3, distance_fn=distance_euclidienne, choix_fn=mode ) if name == ‘main‘ :
main()

Comprendre avec l’exemple


Comprenons maintenant les étapes ci-dessus en termes simples. Imaginez qu’il y ait des M&M verts et rouges sur une assiette. Ici, vous trouverez un autre M&M dont vous ne connaissez pas la classe. Pour trouver la classe, vous devez fixer une valeur de K. Disons dans cette condition K = 4. Maintenant, vous allez dessiner un cercle autour du M&M non identifié de telle sorte que le centre du cercle soit ce M&M lui-même, et que seuls les quatre autres M&M soient dans le cercle. Nous allons maintenant vérifier quelle classe de M&M le cercle a le plus de. Disons que s’il y avait quatre M&M rouges, nous considérerions le M&M non identifié comme une classe rouge.


Quand pouvez-vous utiliser l’algorithme KNN ?


Vous pouvez utiliser l’algorithme K-Nearest Neighbor pour résoudre le problème de régression ou de classification. De nombreuses industries utilisent ce système d’apprentissage machine supervisé pour les problèmes de classification. Voici trois facteurs importants pour l’évaluation de toute technique :

Quelle est la facilité avec laquelle vous pouvez interpréter le résultat ?

Comment pouvez-vous calculer le résultat ?

Quelle est la puissance prédictive ?
KNN est parfait pour tous les paramètres ci-dessus pour mesurer une technique. Cependant, la technique KNN a des applications fréquentes car elle est facile à interpréter et à calculer le temps de sortie.


Comment pouvez-vous choisir la valeur K ?


Pour trouver la meilleure valeur K, nous devons exécuter l’algorithme plusieurs fois et vérifier quel nombre réduit les erreurs tout en conservant la capacité de l’algorithme et de faire des prédictions. Voici quelques éléments à garder à l’esprit :

La première chose à ne pas faire est d’en sélectionner une comme valeur K. Lorsque vous en sélectionnez une comme valeur K, nous obtenons des prédictions instables. Par exemple, si nous devons trouver la classe d’un M&M qui est complètement entourée de M&M rouges mais qu’un seul M&M vert est proche du M&M non identifié. Dans cette condition, nous penserons que le point d’interrogation est vert, donc notre prédiction sera fausse.

Lorsque nous augmenterons la valeur K, nous verrons que la prédiction deviendra stable en raison de la majorité des électeurs. Cependant, si nous trouvons plus d’erreurs, nous nous éloignons trop de la valeur K.

Lorsqu’il y a un lien entre les prévisions, nous devons choisir un nombre impair.
Le choix de la valeur K dépend de l’ensemble de données que vous essayez d’utiliser. Cependant, vous devez savoir que plus nous ajoutons de voisins, plus les résultats seront précis.


Conclusion


Dans cet article, nous avons essayé de fournir un concept de base et facile à comprendre de l’algorithme du voisin le plus proche. Nous avons appris que KNN aide à prédire la classification avec l’ensemble de données donné. Il s’agit d’une méthode de calcul simple et rapide.