Comment écrire l'algorithme KNN en Python ?

WBOY
Libérer: 2023-09-19 13:18:29
original
1245 Les gens l'ont consulté

Comment écrire lalgorithme KNN en Python ?

Comment écrire l'algorithme KNN en Python ?

KNN (K-Nearest Neighbours, algorithme K plus proche voisin) est un algorithme de classification simple et couramment utilisé. L’idée est de classer les échantillons de test selon les K voisins les plus proches en mesurant la distance entre les différents échantillons. Cet article expliquera comment écrire et implémenter l'algorithme KNN à l'aide de Python et fournira des exemples de code spécifiques.

Tout d’abord, nous devons préparer quelques données. Supposons que nous ayons un ensemble de données bidimensionnelles et que chaque échantillon possède deux caractéristiques. Nous avons divisé l'ensemble de données en deux catégories et les avons tracées sur un plan bidimensionnel. Le code est le suivant :

import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据
np.random.seed(0)
X1 = np.random.randn(100, 2) + np.array([0, 2])
X2 = np.random.randn(100, 2) + np.array([2, 0])
X = np.vstack((X1, X2))
y = np.hstack((np.zeros(100), np.ones(100)))

# 绘制数据集
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()
Copier après la connexion

Ensuite, nous devons écrire le code d'implémentation de l'algorithme KNN. Tout d’abord, nous définissons une fonction pour calculer la distance euclidienne entre deux échantillons. Le code est le suivant :

def euclidean_distance(x1, x2):
    return np.sqrt(np.sum((x1 - x2)**2))
Copier après la connexion

Ensuite, nous écrivons une fonction pour prédire la catégorie d'un échantillon test. Cette fonction calcule d'abord la distance entre l'échantillon de test et tous les échantillons d'apprentissage, puis sélectionne les K échantillons les plus proches, vote en fonction des catégories de ces K voisins, et renvoie enfin la catégorie avec le plus de votes comme résultat de prédiction. Le code est le suivant :

def knn_predict(X_train, y_train, x_test, k):
    distances = [euclidean_distance(x_test, x) for x in X_train]
    k_indices = np.argsort(distances)[:k]
    k_nearest_labels = [y_train[i] for i in k_indices]
    return np.argmax(np.bincount(k_nearest_labels))
Copier après la connexion

Enfin, nous divisons l'ensemble de données en un ensemble d'entraînement et un ensemble de test, et utilisons l'algorithme KNN pour la prédiction. Le code est le suivant :

from sklearn.model_selection import train_test_split

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 对每个测试样本进行预测
predictions = [knn_predict(X_train, y_train, x_test, k=3) for x_test in X_test]

# 计算准确率
accuracy = np.mean(predictions == y_test)
print("Accuracy:", accuracy)
Copier après la connexion

Grâce à l'exemple de code ci-dessus, nous avons terminé l'écriture de l'algorithme KNN. On peut voir que l'utilisation de Python pour implémenter l'algorithme KNN est relativement simple et nécessite une petite quantité de code. Dans les applications pratiques, nous pouvons ajuster la valeur K en fonction de problèmes spécifiques pour obtenir le meilleur effet de classification.

Pour résumer, cet article présente comment utiliser Python pour écrire l'algorithme KNN, y compris la préparation des données, le calcul de la distance euclidienne, la mise en œuvre de l'algorithme et le calcul de la précision. J'espère que cet article pourra aider les lecteurs à comprendre et à appliquer l'algorithme KNN.

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:php.cn
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