K-means
原理:K-means通過將資料點分配到距離最近的質心(centroid)來進行聚類。質心由聚類內資料點的平均位置決定。
優點:
簡單且計算效率高,適合大規模數據。
直觀易懂,結果易於解釋。
缺點:
需要事先指定K值,即聚類數量。
對初始質心敏感,不同初始點可能導致不同結果。
只適用於線性分割的資料,對異常值和非球形分布的資料效果較差。
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
# 載入 iris 資料集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 建立 KMeans 模型
kmeans = KMeans(n_clusters=3, random_state=42)
y_kmeans = kmeans.fit_predict(X)
# 使用 PCA 將資料降到2維
pca = PCA(2)
X_pca = pca.fit_transform(X)
# 繪製聚類結果
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_kmeans, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', marker='X')
plt.title("K-means Clustering of Iris Dataset")
plt.xlabel("PCA Feature 1")
plt.ylabel("PCA Feature 2")
plt.show()