Maison > Périphériques technologiques > IA > le corps du texte

Principes de base et exemples de classification des algorithmes KNN

王林
Libérer: 2024-01-23 11:24:20
avant
714 Les gens l'ont consulté

Principes de base et exemples de classification des algorithmes KNN

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)
Copier après la connexion

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()
Copier après la connexion

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!

Étiquettes associées:
source:163.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!