>  기사  >  백엔드 개발  >  Python에서 KNN 알고리즘을 작성하는 방법은 무엇입니까?

Python에서 KNN 알고리즘을 작성하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-09-19 13:18:291238검색

Python에서 KNN 알고리즘을 작성하는 방법은 무엇입니까?

Python에서 KNN 알고리즘을 작성하는 방법은 무엇입니까?

KNN(K-Nearest Neighbors, K 최근접 이웃 알고리즘)은 간단하고 일반적으로 사용되는 분류 알고리즘입니다. 아이디어는 서로 다른 샘플 사이의 거리를 측정하여 테스트 샘플을 가장 가까운 K개의 이웃으로 분류하는 것입니다. 이 기사에서는 Python을 사용하여 KNN 알고리즘을 작성 및 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

먼저 데이터를 준비해야 합니다. 2차원 데이터 세트가 있고 각 샘플에 두 가지 특징이 있다고 가정합니다. 우리는 데이터 세트를 두 가지 범주로 나누고 이를 2차원 평면에 표시했습니다. 코드는 다음과 같습니다.

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

다음으로 KNN 알고리즘의 구현 코드를 작성해야 합니다. 먼저 두 샘플 사이의 유클리드 거리를 계산하는 함수를 정의합니다. 코드는 다음과 같습니다.

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

그런 다음 테스트 샘플의 카테고리를 예측하는 함수를 작성합니다. 이 함수는 먼저 테스트 샘플과 모든 훈련 샘플 사이의 거리를 계산한 다음 가장 가까운 K개의 샘플을 선택하고 이러한 K개의 이웃 카테고리를 기반으로 투표한 다음 마지막으로 가장 많은 표를 얻은 카테고리를 예측 결과로 반환합니다. 코드는 다음과 같습니다.

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

마지막으로 데이터 세트를 훈련 세트와 테스트 세트로 나누고 KNN 알고리즘을 사용하여 예측합니다. 코드는 다음과 같습니다.

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)

위의 코드 예시를 통해 KNN 알고리즘 작성을 완료했습니다. Python을 사용하여 KNN 알고리즘을 구현하는 것은 비교적 간단하고 코드 양이 적다는 것을 알 수 있습니다. 실제 적용에서는 최상의 분류 효과를 얻기 위해 특정 문제에 따라 K 값을 조정할 수 있습니다.

요약하자면, 이 글에서는 데이터 준비, 유클리드 거리 계산, 알고리즘 구현, 정확도 계산 등의 단계를 포함하여 Python을 사용하여 KNN 알고리즘을 작성하는 방법을 소개합니다. 이 글이 독자들이 KNN 알고리즘을 이해하고 적용하는 데 도움이 되기를 바랍니다.

위 내용은 Python에서 KNN 알고리즘을 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.