当前位置: 首页 > news >正文

机器学习算法-- K 近邻算法(KNN)

我用一个 「预测电影类型」 的例子来讲解 K 近邻算法(KNN),保证你轻松理解原理和实现步骤!

🎬 例子背景

假设你是电影平台的程序员,现在有一批电影数据,包含两个特征:

  1. 打斗镜头次数(动作片通常更多)

  2. 亲吻镜头次数(爱情片通常更多)

已知这些电影的类别(标签),比如《战狼》是动作片,《泰坦尼克号》是爱情片。现在有一部新电影(打斗 80 次,亲吻 10 次),如何用 KNN 判断它的类型?


📚 KNN 原理解析

1. 核心思想

“近朱者赤,近墨者黑” —— 新电影的类别由它最相似的 K 个邻居的类别投票决定。

2. 关键步骤
  1. 计算距离:新电影和所有已知电影的距离(比如欧氏距离)。

  2. 找邻居:选出距离最近的 K 个电影(比如 K=3)。

  3. 投票决定:这 K 个电影中,哪种类型多,新电影就属于哪类。

3. 距离公式(欧氏距离)

比如新电影 A (80,10) 和已知电影 B (100,5) 的距离:
距离 = √[(80-100)² + (10-5)²] = √(400 + 25) ≈ 20.6


🛠️ 代码实现(Python)

用 scikit-learn 库快速实现:

from sklearn.neighbors import KNeighborsClassifier
import numpy as np# 1. 准备数据(打斗次数,亲吻次数)
X = np.array([[100, 5], [90, 8], [5, 90], [2, 100]])  # 特征
y = np.array(["动作片", "动作片", "爱情片", "爱情片"])    # 标签# 2. 创建KNN模型(K=3)
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X, y)  # 训练模型# 3. 预测新电影
new_movie = np.array([[80, 10]])
prediction = knn.predict(new_movie)print(f"预测结果:{prediction[0]}")  # 输出:动作片
 

代码解释

  • X 是特征数据,y 是对应的标签。

  • n_neighbors=3 表示选择最近的 3 个邻居投票。

  • 新电影 [80, 10] 的 3 个邻居大概率是动作片,所以预测为动作片。


🌟 关键细节

  1. 如何选 K 值?

    • K 太小(如 K=1):容易受噪声影响(比如邻居恰好是标错的数据)。

    • K 太大:可能忽略局部特征(比如周围全是爱情片,但新电影其实是动作片)。

    • 经验法则:从 K=5 开始尝试,用交叉验证调整。

  2. 特征缩放很重要!

    • 如果“打斗次数”范围是 0-100,而“亲吻次数”是 0-1,距离计算会被打斗次数主导。

    • 解决方法:用 StandardScaler 标准化特征。

  3. 适合场景

    • 小数据集、简单分类(比如手写数字识别)。

    • 不适合大数据集(计算距离慢)或高维数据(维度灾难)。


🤔 举个反例

如果新电影是 [50, 50](打斗和亲吻镜头一样多),KNN 可能难以判断——这时需要更复杂的模型(比如决策树或神经网络)。


总结:KNN 就是“跟着邻居走”,简单但强大!试着用它预测你身边的数据吧(比如根据身高体重判断性别)🎯

相关文章:

  • 关于空调温度控制仿真模型的详细技术文档,包含数学模型、Python实现和系统分析
  • 丰富案例库:解锁智能门锁行业唯创语音交互方案的应用优势
  • 小土堆pytorch--现有网络模型的使用及修改
  • 在PyTorch中,有了y = x + y,为什么还需要y += x,有什么好处呢?
  • cursor使用mcp
  • 基于Matlab实现各种光谱数据预处理
  • 数据库相关问题
  • 工控安全审计与网络流量监控系统的协同防御
  • 字节跳动推出开源多模态模型 BAGEL 从图像生成到世界建模
  • Solana账户创建与Rust实践全攻略
  • 什么是Windows内存压缩? win10/11系统启用和禁用内存压缩的教程
  • 图标变白,开始菜单栏无法打开程序(以jupyter为例)
  • 让jupyter notebook显示目录
  • Lua中的`self`参数:揭秘隐藏的“对象上下文”
  • Word 目录自动换行后错位与页码对齐问题解决教程
  • Spring Security Token 认证原理
  • AG32 DMAC实现内部MCU与FPGA通信【知识库】
  • 智慧康养护理:科技重塑老龄化社会的健康守护体系
  • idea 控制台 彩色打印日志
  • Redis学习打卡-Day8-Redis实践
  • 网站建设与管理专业教学计划/如何进行网络推广
  • 餐饮公司做网站的好处/巨量引擎广告投放平台登录入口
  • 做好网站怎么做app/百度 人工客服
  • 秦皇岛做网站公司排名/深圳seo教程
  • 网站用户告知书/上海十大公关公司排名
  • 怎么搭建app/南京关键词优化软件