ホームページ >バックエンド開発 >Python チュートリアル >Python で KNN アルゴリズムを記述するにはどうすればよいですか?

Python で KNN アルゴリズムを記述するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-09-19 13:18:291253ブラウズ

Python で KNN アルゴリズムを記述するにはどうすればよいですか?

KNN アルゴリズムを Python で記述するにはどうすればよいですか?

KNN (K 最近傍アルゴリズム、K 最近傍アルゴリズム) は、シンプルで一般的に使用される分類アルゴリズムです。このアイデアは、異なるサンプル間の距離を測定することによって、テスト サンプルを最も近い K 個の近傍に分類することです。この記事では、Python を使用して KNN アルゴリズムを作成および実装する方法を紹介し、具体的なコード例を示します。

まず、データを準備する必要があります。 2 次元のデータセットがあり、各サンプルに 2 つの特徴があるとします。データセットを 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 アルゴリズムの実装コードを記述する必要があります。まず、2 つのサンプル間のユークリッド距離を計算する関数を定義します。コードは次のとおりです。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。