K-Nearest Neighbors (KNN)
Last updated
Last updated
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 載入資料集
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.3, random_state=42)
# 建立模型並訓練
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# 預測與評估
y_pred = knn.predict(X_test)
print("準確率:", accuracy_score(y_test, y_pred))import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap
# 取前兩維進行可視化
X = iris.data[:, :2]
y = iris.target
knn2d = KNeighborsClassifier(n_neighbors=5)
knn2d.fit(X, y)
# 建立網格點進行預測
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),
np.arange(y_min, y_max, 0.1))
Z = knn2d.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(figsize=(8, 6))
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
plt.contourf(xx, yy, Z, cmap=cmap_light, alpha=0.6)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolor='k')
plt.title("KNN Decision Boundary (K=5)")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")
plt.show()