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