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

K近邻算法(knn)

核心概念


1. 算法定义  
每个样本由其最接近的K个邻近样本代表(K通常≤20)。
对新数据分类时,提取训练集中特征最相似的K个样本,统计其类别频率,将最高频类别作为预测结果。

2. 算法步骤  
① 计算新数据与所有训练样本的距离;  
② 按距离递增排序;  
③ 选取距离最小的K个点;  
④ 统计K个点的类别频率;  
⑤ 返回频率最高的类别作为预测分类。

距离度量方法


1. 欧氏距离 
多维空间中的绝对距离。  
公式(n维):  
$$ d = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} $$

2. 曼哈顿距离  
坐标轴上的绝对轴距总和。  
公式(二维):  
$$ d = |x_1 - x_2| + |y_1 - y_2| $$

实战案例:鸢尾花分类(基于sklearn)


1. 数据集 
特征:花萼长度/宽度、花瓣长度/宽度(4个特征)。  
标签:3种鸢尾花类别(`setosa`, `versicolor`, `virginica`)。

2. 实现步骤 
1. 加载数据
iris = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)

2. 创建KNN模型(K=5,欧氏距离)
knn = KNeighborsClassifier(n_neighbors=5, metric="euclidean")
knn.fit(X_train, y_train)

3. 评估与预测
train_score = knn.score(X_train, y_train)  # 训练集准确率
test_score = knn.score(X_test, y_test)     # 测试集准确率
y_pred = knn.predict(X_test)               # 预测标签
```

http://www.xdnf.cn/news/18389.html

相关文章:

  • 基于 RxJava 构建强大的 Android 文件下载管理器
  • Android SystemServer 中 Service 的创建和启动方式
  • AI与大数据驱动下的食堂采购系统源码:供应链管理平台的未来发展
  • Git#cherry-pick
  • QT示例 基于Subdiv2D的Voronoi图实现鼠标点击屏幕碎裂掉落特效
  • Day22 顺序表与链表的实现及应用(含字典功能与操作对比)
  • 服务器无公网ip如何对外提供服务?本地网络只有内网IP,如何能被外网访问?
  • Vue.prototype 的作用
  • JUC之CompletableFuture【中】
  • Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
  • FPGA 在情绪识别领域的护理应用(一)
  • 论文阅读系列(一)Qwen-Image Technical Report
  • 中和农信如何打通农业科技普惠“最后一百米”
  • 企业架构是什么?解读
  • 通过分布式系统的视角看Kafka
  • python黑盒包装
  • Matplotlib数据可视化实战:Matplotlib图表注释与美化入门
  • 抓取手机游戏相关数据
  • LWIP流程全解
  • java实现url 生成二维码, 包括可叠加 logo、改变颜色、设置背景颜色、背景图等功能,完整代码示例
  • 【运维进阶】Ansible 角色管理
  • 记一次 .NET 某自动化智能制造软件 卡死分析
  • 流程进阶——解读 49页 2023 IBM流程管理与变革赋能【附全文阅读】
  • Redis缓存加速测试数据交互:从前缀键清理到前沿性能革命
  • 微服务-07.微服务拆分-微服务项目结构说明
  • 236. 二叉树的最近公共祖先
  • 从密度到聚类:DBSCAN算法的第一性原理解析
  • 100202Title和Input组件_编辑器-react-仿低代码平台项目
  • git 创用操作
  • 【集合框架LinkedList底层添加元素机制】