🎯 学习目标

  • 理解KNN的工作原理
  • 学会选择合适的K值
  • 掌握距离度量方法
  • 了解KNN的优缺点

📐 KNN原理

物以类聚

找到距离最近的K个邻居,通过投票决定类别

1
计算距离
2
找K个邻居
3
投票决策

💻 sklearn实现

from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler # 标准化 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # KNN分类器 knn = KNeighborsClassifier( n_neighbors=5, # K值 weights='uniform', # 权重: 'uniform' 或 'distance' metric='minkowski', # 距离度量 p=2 # p=2为欧氏距离 ) # 训练(实际是存储数据) knn.fit(X_train_scaled, y_train) # 预测 y_pred = knn.predict(X_test_scaled) y_proba = knn.predict_proba(X_test_scaled)

📊 K值选择

K太小

容易过拟合,对噪声敏感

不推荐

K适中

平衡偏差和方差

推荐

K太大

容易欠拟合,决策边界太平滑

不推荐
💡

通常选择奇数K避免平票,常用K=3,5,7。可通过交叉验证选择最优K值。

📝 本节小结

  • • KNN是惰性学习,不需要训练
  • • 预测时计算量大,适合小数据集
  • • K值选择很关键
  • • 数据必须标准化