L'algorithme KNN est un algorithme de classification simple et facile à utiliser, adapté aux ensembles de données à petite échelle et aux espaces de fonctionnalités de faible dimension. Il fonctionne bien dans des domaines tels que la classification d'images et la classification de textes, et est populaire en raison de sa simplicité de mise en œuvre et de sa facilité de compréhension.
L'idée de base de l'algorithme KNN est de trouver les K voisins les plus proches en comparant les caractéristiques de l'échantillon à classer avec les caractéristiques de l'échantillon d'apprentissage, et de déterminer la catégorie de l'échantillon à classer en fonction de les catégories de ces K voisins. L'algorithme KNN utilise un ensemble de formation avec des catégories étiquetées et un ensemble de tests à classer. Le processus de classification de l'algorithme KNN comprend les étapes suivantes : d'abord, calculer la distance entre l'échantillon à classer et tous les échantillons d'apprentissage, puis sélectionner les K voisins les plus proches puis voter selon les catégories des K voisins ; La catégorie de l'échantillon classé ; enfin, la catégorie de l'échantillon à classer est déterminée comme la catégorie ayant obtenu le plus de votes dans les résultats du vote. Grâce à ces étapes, l'algorithme KNN peut classer avec précision les échantillons à classer.
1. Calculer la distance
Pour les échantillons de test non classés, il est nécessaire de calculer la distance entre eux et tous les échantillons de l'ensemble d'entraînement sont utilisés.
2. Sélectionnez K voisins
En fonction de la distance calculée, sélectionnez les échantillons de l'ensemble d'apprentissage K les plus proches de l'échantillon à classer. Ces échantillons sont les K voisins de l'échantillon à classer.
3. Déterminez la catégorie
Déterminez la catégorie de l'échantillon à classer en fonction des catégories de K voisins. La « méthode de vote majoritaire » est généralement utilisée pour déterminer la catégorie de l'échantillon à classer, c'est-à-dire que la catégorie qui apparaît le plus parmi les K voisins est sélectionnée comme catégorie de l'échantillon à classer.
L'algorithme KNN est relativement simple, mais certains problèmes nécessitent une attention particulière. Tout d'abord, le choix de la valeur K a un grand impact sur les performances de l'algorithme, et il est généralement nécessaire de déterminer la valeur K optimale par validation croisée et d'autres méthodes. Deuxièmement, l'algorithme KNN est sensible à la taille et à la dimension de l'ensemble de données, et il y aura des problèmes d'efficacité lors du traitement d'ensembles de données à grande échelle et de grande dimension. De plus, l'algorithme KNN présente également le problème du « déséquilibre des catégories », c'est-à-dire que le nombre d'échantillons dans certaines catégories est faible, ce qui peut entraîner un mauvais effet de classification de l'algorithme sur ces catégories.
Ce qui suit est un exemple de classification utilisant Python pour implémenter l'algorithme KNN. Le code est le suivant :
import numpy as np from collections import Counter class KNN: def __init__(self, k): self.k = k def fit(self, X, y): self.X_train = X self.y_train = y def predict(self, X_test): predictions = [] for x_test in X_test: distances = [] for x_train in self.X_train: distance = np.sqrt(np.sum((x_test - x_train)**2)) distances.append(distance) idx = np.argsort(distances)[:self.k] k_nearest_labels = [self.y_train[i] for i in idx] most_common = Counter(k_nearest_labels).most_common(1) predictions.append(most_common[0][0]) return np.array(predictions)
Le paramètre k passé dans le constructeur de cette classe KNN indique combien de voisins sont sélectionnés pour la classification. La méthode d'ajustement est utilisée pour entraîner le modèle, en acceptant un ensemble d'entraînement X et leurs étiquettes correspondantes y. La méthode prédire est utilisée pour classer l'ensemble de test, accepte un ensemble de test X_test et renvoie l'étiquette prédite.
Dans la méthode de prédiction, pour chaque échantillon de test, calculez d'abord sa distance par rapport à tous les échantillons de l'ensemble d'apprentissage et sélectionnez les k échantillons les plus proches. Ensuite, les étiquettes les plus fréquentes parmi ces k échantillons sont comptées et utilisées comme étiquettes de classification des échantillons de test.
Ce qui suit est un exemple d'utilisation de cette classe KNN pour la classification. L'ensemble de données est un point défini sur un plan bidimensionnel, où les points rouges représentent la catégorie 1 et les points bleus représentent la catégorie 2 :
import matplotlib.pyplot as plt # 生成数据集 X = np.random.rand(200, 2) * 5 - 2.5 y = np.zeros(200) y[np.sum(X**2, axis=1) > 2] = 1 # 分割训练集和测试集 train_idx = np.random.choice(200, 150, replace=False) test_idx = np.array(list(set(range(200)) - set(train_idx))) X_train, y_train = X[train_idx], y[train_idx] X_test, y_test = X[test_idx], y[test_idx] # 训练模型并进行预测 knn = KNN(k=5) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) # 计算准确率并绘制分类结果 accuracy = np.mean(y_pred == y_test) print("Accuracy:", accuracy) plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred) plt.show()
Après en exécutant ce code, vous pouvez voir l'image du résultat de la classification. Parmi eux, la couleur représente la catégorie prédite, le rouge représente la catégorie 1 et le bleu représente la catégorie 2. Sur la base des résultats de la classification, la précision du modèle peut être calculée.
Cet exemple montre l'application de l'algorithme KNN sur un plan bidimensionnel, déterminant les voisins en calculant les distances, et en les classant selon leurs catégories. Dans des applications pratiques, l'algorithme KNN peut être utilisé dans la classification d'images, la classification de textes et d'autres domaines. Il s'agit d'un algorithme de classification simple et efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!