sklearn笔记:neighbors.NearestNeighbors

news2025/1/19 23:00:47

1 最近邻

class sklearn.neighbors.NearestNeighbors(
    *, 
    n_neighbors=5, 
    radius=1.0, 
    algorithm='auto', 
    leaf_size=30, 
    metric='minkowski', 
    p=2, 
    metric_params=None, 
    n_jobs=None)
  • 邻居搜索算法的选择通过关键字 'algorithm' 控制,它必须是 ['auto', 'ball_tree', 'kd_tree', 'brute'] 中的一个。当传递默认值 'auto' 时,算法尝试从训练数据中确定最佳方法。

2 主要参数

n_neighbors查询多少个邻居
radius用于 radius_neighbors 查询的参数空间范围
algorithm

({‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, 默认为 ‘auto’): 用于计算最近邻居的算法:

  • ‘ball_tree’ 将使用 BallTree。
  • ‘kd_tree’ 将使用 KDTree。
  • ‘brute’ 将使用暴力搜索。
  • ‘auto’ 将尝试基于传递给 fit 方法的值决定最合适的算法。
leaf_size

传递给 BallTree 或 KDTree 的叶子大小

这可以影响树的构建和查询速度,以及存储树所需的内存

metric用于距离计算的度量。默认为 "minkowski",当 p = 2 时,结果为标准欧几里得距离

3 主要方法

3.1 kneighbors

  • 寻找一个点的 K 个最近邻居。它返回每个点的邻居的索引和到邻居的距离

参数:

X查询点或点集
n_neighbors(int)每个样本所需的邻居数量
return_distance(bool)是否返回距离

返回值:

neigh_dist

(n_queries, n_neighbors)的ndarry

到点的距离的数组,仅当 return_distance=True 时存在

neigh_ind

(n_queries, n_neighbors)

最近点的索引

举例:

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=2)
neigh.fit(samples)
neigh.kneighbors([[1., 1., 1.]],n_neighbors=1)
#(array([[0.5]]), array([[2]], dtype=int64))

3.1.1 kneighbors中的n_neighbors和NearestNeighbors的区别是什么?

  • NearestNeighbors中的是默认的全局设置
  • kneighbors中的是仅限于特定方法调用的局部设置,如果在方法调用中指定了 n_neighbors,它将优先于构造函数中指定的值

3.2 kneighbors_graph

kneighbors_graph(X=None, n_neighbors=None, mode='connectivity')

参数: 

X查询点或点集
n_neighbors每个样本的邻居数量
mode

({‘connectivity’, ‘distance’}, 默认为 ‘connectivity’)

返回矩阵的类型:

  • ‘connectivity’ 将返回带有 0 和 1 的连通性矩阵
  • 在 ‘distance’ 模式下,边是点之间的距离,距离的类型取决于在 NearestNeighbors 类中选择的度量参数

返回一个稀疏矩阵

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=2)
neigh.fit(samples)
neigh.kneighbors_graph([[1., 1., 1.]]).toarray()
#array([[0., 1., 1.]])
#和后两个相连,和第一个不连

3.3 radius_neighbors

radius_neighbors(X=None, radius=None, return_distance=True, sort_results=False)

找到一个点或多个点周围给定半径内的邻居

返回每个点从数据集中位于查询数组点周围大小为半径的球内的点的索引和距离。位于边界上的点也包括在结果中

参数:

X查询点或点集
radius返回邻居的限制距离
return_distance(bool,默认为True):是否返回距离
sort_results

(bool,默认为False)

如果为 True,距离和索引将在返回前按距离递增排序

返回

neigh_dist到每个点的距离的数组
neigh_ind索引数组
import numpy as np
samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(radius=1.2,n_neighbors=2)
neigh.fit(samples)
neigh.radius_neighbors([[1., 1., 1.]])
'''
(array([array([0.5])], dtype=object),
 array([array([2], dtype=int64)], dtype=object))
'''

虽然n_neighbors也是2,但是举例卡在1.2,所以返回的也只有一个

3.4 radius_neighbors_graph

和neighbors_graph类似,在radius限制下的neighbors_graph

4 最近邻算法的选择

4.1 样本数量和维度

4.2 数据结构

4.3 查询点的邻居数量 

4.4 查询点的数量

  • Ball 树和 KD 树需要一个构建阶段。当在许多查询中摊销时,这种构建的成本可以忽略不计。然而,如果只进行少量查询,构建可能占总成本的显著部分。如果查询点非常少,暴力搜索可能比基于树的方法更好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1215371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测

分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测 目录 分类预测 | Matlab实现PSO-LSTM-Attention粒子群算法优化长短期记忆神经网络融合注意力机制多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1…

块设备 I/O 请求送达到外部设备

对于 ext4 文件系统,最后调用的是 ext4_file_write_iter,它将 I/O 的调用分成两种情况: 第一是直接 I/O。最终我们调用的是 generic_file_direct_write,这里调用的是 mapping->a_ops->direct_IO,实际调用的是 e…

[nlp] 损失缩放(Loss Scaling)loss sacle

在深度学习中,由于浮点数的精度限制,当模型参数非常大时,会出现数值溢出的问题,这可能会导致模型训练不稳定。为了解决这个问题,损失缩放(Loss Scaling)技术被引入,它通过缩放损失值来解决这个问题。 在深度学习中,损失缩放技术通常是通过将梯度进行缩放来实现的。具…

太激动了!摄像头终于有画面了!

有了放弃的想法 摄像头APP在我这里好好的,到了老外那里就不能 用。反复试了几套源码,都没有画面。后来干脆把老外说通用的APK反编译后,新做了个APP,结果还是没画面。到了这个时候,我是真的有点沮丧,准备放弃…

局部指令和全局指令的注册和使用

全局指令 先写一个js文件 import store from /store const directivePlugin {install(Vue) {Vue.directive(checkBtn, {inserted(el, binding) {// el: 指令绑定的那个元素对象 dom// binding.value: 指令等于号后面绑定的表达式的值 v-if"xxx"// 拿到el 拿到v…

Git目录不对,即当前文件夹不对应git仓库

报错信息是: fatal: not a git repository (or any of the parent directories): .git 如: 是当前文件夹不对应git仓库,一般在git clone之后,需要进入下一级文件夹才对应仓库。 在文件夹看,本层中没有.git文件夹&…

AGV|RGV小车RFID传感读卡器CK-G06A开发与用户手册技术说明

AGV|RGV小车RFID传感读卡器CK-G06A是一款基于射频识别技术的低频 RFID 标签传感器,传感器工作频率为 125KHZ,同时支持对 EMID,FDX-B 两种格式标签的读取。传感器内部集成了射频部分通 信协议,用户只需通过 RS485 通信接口接收数据…

spring学习笔记-IOC,AOP,事务管理

目录 概述 什么是spring 侵入式的概念 spring的核心 spring的优势 注意 IOC控制反转 概述 核心 容器 DI,dependency injection依赖注入 概念 注入方式 循环依赖 spring如何解决循环依赖 spring生成Bean的方式 Bean属性注入(Bean属性赋值…

使用requests库下载文件的技术解析

目录 一、引言 二、使用requests库下载文件的基本流程 三、请求设置和响应处理 1、请求头部设置 2、跟随重定向 3、处理HTTP认证 4、响应状态码检查 5、响应头处理 6、响应体处理 四、异常处理 1、网络连接问题 2、HTTP请求错误 3、文件写入错误 总结 一、引言 …

CDP体系化建设1-CDP综述

前言 从CRM到DMP,再到CDP的横空出世,数据产品领域推陈出新的速度也挺快的。 而了解CDP的人可能会说,CDP和BI一样,糅杂了太多东西,都不知道如何概括。 在我看来,CDP也是一个看似简单,但是需要借助…

2024有哪些免费的mac苹果电脑内存清理工具?

在我们日常使用苹果电脑的过程中,随着时间的推移,可能会发现设备的速度变慢了,甚至出现卡顿的现象。其中一个常见的原因就是程序占用内存过多,导致系统无法高效地运行。那么,苹果电脑内存怎么清理呢?本文将…

媒体行业的3D建模:在影视中创造特效纹理

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 在本文中,我们将探讨 3D 建模在媒体行业中的作用,特别是它在影视特效创作…

做外贸站群效果怎么样?独立站站群是什么?

外贸站群管理系统的作用?海洋建站和站群的区别? 外贸站群,顾名思义,是指针对外贸业务而建立的多个网站或平台,因此建立有效的外贸站群对于企业来说是一种非常重要的策略。那么,做外贸站群效果怎么样呢&…

当当狸带屏智能显微镜M2来了!显微镜里的顶流

还记得当年上初中生物实验课的时候,第一次用显微镜观察到洋葱表皮细胞时候的感觉吗?那是一种独属于少年的、初次探索这个世界的巨大喜悦。 微观世界,总有我们肉眼无法察觉的奇妙,基本上所有的孩子都天生对微观世界有着极强的好奇心…

YOLO 施工安全帽目标检测模型

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 头盔自动检测基本上是一个物体检测问题,可以使用深度学习和基于计算机视觉的方法来…

TEMU要求提交RSL Report 铅镉RSL邻苯项目化学物质检测报告

TEMU要求提交RSL Report 铅镉RSL邻苯项目化学物质检测报告 如果您在亚马逊上销售商品,则必须遵守所有适用的欧盟和地方法律法规,以及适用于这些商品和商品信息的亚马逊政策。要在亚马逊上销售某些商品,( xxdu2016 )您需要向我们提供 REACH 符…

1亿美元投资!加拿大量子公司Photonic告别隐身状态

​(图片来源:网络) 至今加拿大量子公司Photonic总融资额已达1.4亿美元,将推动可扩展、容错的量子计算和网络平台的快速开发。 官宣完成1亿美元新一轮融资 Photonic总部位于加拿大不列颠哥伦比亚省温哥华市,是一家基…

母婴行业数字化发展趋势:内容多元化、服务定制化、人群全覆盖

母婴行业数字化发展趋势:内容多元化、服务定制化、人群全覆盖 引言:时代的高速发展,在经济压力、生活节奏、婚育观念等多重因素的影响下,我国人口出生率自2016年(人口出生数量统计1883万)到2022年&#xf…

中国芯片金字塔成形,商业化拐点将至

其作始也简,其将毕也钜。 传说埃及用时30年建成左赛尔金字塔,成为亘古不灭的世界奇迹。在今天,中国芯片产业走过8年“国产替代”历程,国产芯片的“金字塔”体系业已初具雏形,展现出蓬勃的发展潜力。 2023年是补全自主…

统信UOS_麒麟KYLINOS上使用SSH远程工具Termius

原文链接:统信UOS/麒麟KYLINOS上使用SSH远程工具Termius hello,大家好啊,今天给大家带来一篇在统信UOS/麒麟KYLINOS上使用SSH远程工具Termius的文章,Termius是一个功能强大的ssh工具,支持Linux x86平台、windows、maco…