Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis algoritma KNN dalam Python?

Bagaimana untuk menulis algoritma KNN dalam Python?

WBOY
WBOYasal
2023-09-19 13:18:291238semak imbas

Bagaimana untuk menulis algoritma KNN dalam Python?

Bagaimana cara menulis algoritma KNN dalam Python?

KNN (K-Nearest Neighbors, K nearest neighbor algorithm) ialah algoritma pengelasan yang mudah dan biasa digunakan. Ideanya adalah untuk mengelaskan sampel ujian ke dalam jiran K terdekat dengan mengukur jarak antara sampel yang berbeza. Artikel ini akan memperkenalkan cara menulis dan melaksanakan algoritma KNN menggunakan Python dan memberikan contoh kod khusus.

Pertama, kita perlu menyediakan beberapa data. Katakan kita mempunyai set data dua dimensi, dan setiap sampel mempunyai dua ciri. Kami membahagikan set data kepada dua kategori dan memplotkannya pada satah dua dimensi. Kodnya adalah seperti berikut:

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()

Seterusnya, kita perlu menulis kod pelaksanaan algoritma KNN. Pertama, kita mentakrifkan fungsi untuk mengira Jarak Euclidean antara dua sampel. Kodnya adalah seperti berikut:

def euclidean_distance(x1, x2):
    return np.sqrt(np.sum((x1 - x2)**2))

Kemudian, kami menulis fungsi untuk meramalkan kategori sampel ujian. Fungsi ini mula-mula mengira jarak antara sampel ujian dan semua sampel latihan, kemudian memilih sampel K terdekat, mengundi berdasarkan kategori jiran K ini, dan akhirnya mengembalikan kategori dengan undian terbanyak sebagai hasil ramalan. Kodnya adalah seperti berikut:

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))

Akhir sekali, kami membahagikan set data kepada set latihan dan set ujian, dan menggunakan algoritma KNN untuk ramalan. Kodnya adalah seperti berikut:

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)

Melalui contoh kod di atas, kami telah menyelesaikan penulisan algoritma KNN. Ia boleh dilihat bahawa menggunakan Python untuk melaksanakan algoritma KNN adalah agak mudah dan mempunyai jumlah kod yang kecil. Dalam aplikasi praktikal, kita boleh melaraskan nilai K mengikut masalah tertentu untuk mencapai kesan pengelasan terbaik.

Untuk meringkaskan, artikel ini memperkenalkan cara menggunakan Python untuk menulis algoritma KNN, termasuk penyediaan data, pengiraan jarak Euclidean, pelaksanaan algoritma dan pengiraan ketepatan. Saya harap artikel ini dapat membantu pembaca memahami dan menggunakan algoritma KNN.

Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma KNN dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn