PythonでのKNNの可視化方法


PythonでKNNアルゴリズムの結果を視覚化するには、いくつかのライブラリと手法があります。以下に、シンプルで簡単な方法と多くのコード例を提供します。

  1. Matplotlibを使用した散布図のプロット: KNNの結果を視覚化するためには、まずデータポイントを散布図としてプロットします。Matplotlibライブラリを使用して、以下のようにコードを書くことができます。
import matplotlib.pyplot as plt
# データポイントの座標を取得
x = [1, 2, 3, 4, 5]
y = [1, 3, 2, 4, 5]
# データポイントをプロット
plt.scatter(x, y)
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.show()
  1. Scikit-learnを使用したKNNの可視化: Scikit-learnライブラリは、機械学習のための強力なツールキットです。KNNの結果を視覚化するためには、Scikit-learnのneighborsモジュールを使用します。以下にコード例を示します。
from sklearn.datasets import make_classification
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
# ダミーデータの生成
X, y = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, random_state=42)
# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# KNNモデルの作成
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# データポイントのプロット
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap='bwr')
plt.xlabel('特徴量1')
plt.ylabel('特徴量2')
# 決定境界のプロット
step = 0.02
x_min, x_max = X_train[:, 0].min() - 0.5, X_train[:, 0].max() + 0.5
y_min, y_max = X_train[:, 1].min() - 0.5, X_train[:, 1].max() + 0.5
xx, yy = np.meshgrid(np.arange(x_min, x_max, step), np.arange(y_min, y_max, step))
Z = knn.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.4, cmap='bwr')
plt.show()

上記のコード例では、Scikit-learnのmake_classification関数を使用してダミーデータを生成し、KNeighborsClassifierモデルを作成しています。トレーニングデータポイントを散布図としてプロットし、決定境界を図示しています。