为什么 scikit-learn 的最近邻似乎没有返回正确的余弦相似距离?

2024-02-27

我正在尝试使用 scikit 的最近邻实现从随机值矩阵中查找与给定列向量最接近的列向量。

该代码应该找到第 21 列的最近邻居,然后检查这些邻居与第 21 列的实际余弦相似度。

from sklearn.neighbors import NearestNeighbors
import sklearn.metrics.pairwise as smp
import numpy as np

test=np.random.randint(0,5,(50,50))
nbrs = NearestNeighbors(n_neighbors=5, algorithm='auto', metric=smp.cosine_similarity).fit(test)
distances, indices = nbrs.kneighbors(test)

x=21   

for idx,d in enumerate(indices[x]):

    sim2 = smp.cosine_similarity(test[:,x],test[:,d])


    print "sklearns cosine similarity would be ", sim2
    print 'sklearns reported distance is', distances[x][idx]
    print 'sklearns if that distance was cosine, the similarity would be: ' ,1- distances[x][idx]

输出看起来像

sklearns cosine similarity would be  [[ 0.66190748]]
sklearns reported distance is 0.616586738214
sklearns if that distance was cosine, the similarity would be:  0.383413261786

因此邻居的输出既不是余弦距离也不是余弦相似度。是什么赋予了?

另外,顺便说一句,我认为 sklearn 的最近邻实现不是一种近似最近邻方法,但与迭代矩阵并检查得到的结果相比,它似乎没有检测到数据集中的实际最佳邻居第 211 列与所有其他列的相似之处。我在这里误解了一些基本的东西吗?


好吧,问题是 NearestNeighbors 的 .fit() 方法默认假设行是样本,列是特征。在传递矩阵以适应之前,我必须先转置矩阵。

编辑:另外,另一个问题是作为度量传递的可调用应该是距离可调用,而不是相似性可调用。否则你会得到 K 个最远的邻居:/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 scikit-learn 的最近邻似乎没有返回正确的余弦相似距离? 的相关文章

  • Python 函数前的星号[重复]

    这个问题在这里已经有答案了 我正在关注这个教程 http www pyimagesearch com 2015 04 20 sorting contours using python and opencv comment 405768 ht
  • 列出类的所有实例

    我编写了一个 Python 模块 其中有几个类继承自一个名为MasterBlock 我想在脚本中导入此模块 创建这些类的多个实例 然后获取该类的所有子级的所有现有实例的列表MasterBlock班级 我找到了一些解决方案vars Block
  • 装饰器错误:NoneType 对象不可调用

    我写了一个这样的函数装饰器 def tsfunc func def wrappedFunc print s called func name return func return wrappedFunc tsfunc def foo pas
  • socket.error:[Errno 10054]现有连接被远程主机强制关闭(python2.7)

    我的套接字有问题 它运行良好 但是当我关闭客户端 关闭客户端窗口时 服务器丢失了连接 服务器需要保持打开状态并等待其他连接 while True rlist wlist xlist select select server socket o
  • 如何解决 Python 'Pyzbar' 库的导入错误?

    我刚刚开始熟悉 Pyzbar 库 但是当使用decode方法我得到一个错误 这是代码 import cv2 import numpy as np import pyzbar code image cv2 imread C Users Ace
  • 在 Spark 中分发 scikit learn 分类器的推荐方法是什么?

    我已经使用 scikit learn 构建了一个分类器 现在我想使用 Spark 在大型数据集上运行 Predict proba 我目前使用以下方法对分类器进行腌制 import pickle pickle dump clf open cl
  • 使用基于 ConvLSTM2D 的 Keras 模型从较低分辨率图像估计高分辨率图像

    我正在尝试使用以下内容ConvLSTM2D从低分辨率图像序列估计高分辨率图像序列的架构 import numpy as np scipy ndimage matplotlib pyplot as plt from keras models
  • chrome_options.binary_location() TypeError: 'str' 对象不可调用

    我希望每个人都好 我是 python 新手 我尝试运行这段代码 但我不明白问题是什么以及如何解决这个问题 我的代码是 from selenium import webdriver from time import sleep url raw
  • 通过端点 API 将图像读入 protorpc 消息

    将用户的图片接收到我的 endpoints method我用吗messages BytesField as in image messages BytesField 1 stuff messages StringField 2 是的 这是正
  • 如何使用sklearn Pipeline和FeatureUnion选择多个(数字和文本)列进行文本分类?

    我开发了一个用于多标签分类的文本模型 这OneVsRest分类器 http scikit learn org stable modules generated sklearn multiclass OneVsRestClassifier h
  • Windows 中的信号处理

    在Windows中 我试图创建一个等待SIGINT信号的python进程 当它收到SIGINT时 我希望它只打印一条消息并等待SIGINT的另一次出现 所以我使用了信号处理程序 这是我的 signal receiver py 代码 impo
  • 使用sklearn进行多标签特征选择

    我希望使用 sklearn 对多标签数据集执行特征选择 我想要获得最终的功能集across标签 然后我将在另一个机器学习包中使用它 我打算使用我看到的方法here https stackoverflow com questions 1640
  • 随机森林修剪

    我有 sklearn 随机森林回归器 它非常重 有 1 6 GB 并且在预测值时工作很长时间 我想把它修剪一下 让它变得更轻 据我所知 决策树和森林没有实施修剪 我无法自己实现它 因为树代码是用 C 编写的 而我不知道 有谁知道解决方案吗
  • 如何将one-hot向量转换为多标签?

    我有一项多分类任务 并且我得到了像这样的单热类型预测 0 1 1 0 1 0 1 0 1 我希望将这个单热向量转换为标签 例如 1 2 1 0 2 我已经尝试过 tf argmax 但它不起作用 那么我该如何处理呢 使用列表理解 oheLi
  • 如何在“python setup.py test”中运行 py.test 和 linter

    我有一个项目setup py文件 我用pytest作为测试框架 我还在我的代码上运行各种 linter pep8 pylint pydocstyle pyflakes ETC 我用tox在多个 Python 版本中运行它们 并使用以下命令构
  • scikit-learn RandomForestClassifier 中的子样本大小

    如何控制用于训练森林中每棵树的子样本的大小 根据 scikit learn 的文档 随机森林是一种适合许多决策的元估计器 数据集的各个子样本上的树分类器并使用 平均以提高预测准确性并控制过度拟合 子样本大小始终与原始输入样本相同 大小 但如
  • 获取pandas数据框列中值的长度

    我试图获取下面提到的数据框中每个 zipCd 值的长度 当我运行下面的代码时 每条记录都得到 958 我期待得到更像 4 的东西 有人看出问题是什么吗 Code zipDfCopy zipCd str len Data print zipD
  • Python 上每个系数具有特定约束的多元线性回归

    我目前正在数据集上运行多元线性回归 起初 我没有意识到我需要限制自己的体重 事实上 我需要有特定的正权重和负权重 更准确地说 我正在做一个评分系统 这就是为什么我的一些变量应该对音符产生积极或消极的影响 然而 当运行我的模型时 结果不符合我
  • 如何用if条件编写ini文件

    我想编写一个带有 if else 条件的 ini 文件 我用 python 中的 ConfigParser 解析它 如何在ini文件中使用if和else语句 如果我明白你在问什么 您可能想要做的是这样的 在 INI 文件中设置条件值 sec
  • 如何使用 Python 创建新的文本文件

    我正在练习用 python 管理 txt 文件 我一直在阅读有关它的内容 发现如果我尝试打开一个尚不存在的文件 它将在执行程序的同一目录中创建该文件 问题来了 当我尝试打开它时 出现以下错误 IOError Errno 2 没有这样的文件或

随机推荐

  • 读取 iPhone 运营商的信号强度

    这可能吗 如果没有的话 我真的很惊讶这还没有通过 API 开放 Apple 不允许使用低级网络 wifi 蜂窝 API 有趣的是 在之前的一段时间内 应用程序商店中有些应用程序使用了私有 api 例如一些 WIFI 扫描仪 至少据我所知 现
  • Python 中的线程

    关于如何在 Python 中使用线程的一般教程或好的资源 何时使用线程 它们如何有效以及线程的一些一般背景 特定于 Python 当您希望同时运行两个事物 或者希望某些事物在后台运行而不减慢主进程时 应该使用线程 我的建议是仅在必要时才使用
  • 将每个列表值映射到其相应的百分位

    我想创建一个函数 它接受 排序的 列表作为其参数 并输出一个包含每个元素相应百分位数的列表 例如 fn 1 2 3 4 17 回报 0 0 0 25 0 50 0 75 1 00 任何人都可以请 帮我改正下面的代码吗 或者 是否提供了比我的
  • 仅使用移动窗口中的先前值的线性回归

    我有一个巨大的数据集 想要在 60 个窗口上执行滚动线性回归 但是 我希望线性回归只考虑 60 个先前的值 我的 Dataframe DF 包含以下列 Date Company Y X1 X2 01 01 2015 Mill 0 13 1
  • 在工具栏子元素顶部添加后退按钮

    我有以下布局文件 如何在下面的布局中的工具栏的 Imageview 子项顶部 或覆盖在 z index 上 添加后退按钮 箭头
  • AppEngine 延迟库中的 PermanentTaskFailure

    我正在使用 App Engine 和延迟库 但每隔一段时间我的任务就会失败并出现以下错误 Permanent failure attempting to execute task Traceback most recent call las
  • 如何将 Iplimage 放在图片框上?

    有没有办法在图片框中显示 IplImage 我不想保存图像并将其重新加载到图片框中 因为我需要我的程序速度快 我在 C 中使用 opencv 2 1 我正在使用 Visual Studio 2008 谢谢 这已经讨论过了here http
  • 使用递归查找列表中第二小的数字

    我知道有人就这个主题提出了问题 但没有一个答案对我有帮助 我不需要帮助实现代码 我只需要帮助对此递归过程进行排序 我最初想在每个级别递归地返回一个元组并进行比较以找到第二小的值 但这不起作用 因为我希望我的函数最终只返回 1 个值 第二个最
  • Java 中的 C# IEnumerable 相当于什么?具有协变能力的,而不是可迭代的

    这种协方差在 C 中是可能的 IEnumerable a a new List a IEnumerable b b new List b a b class A class B A 这在 Java 中是不可能的 Iterable 在这个问题
  • 如何更改 check_box 的默认值?在 Ruby on Rails 中

    如何更改 check box 的默认值 意见 医生 form html erb br pass 属性的数据类型为string 但仍然没有创造任何价值 pass数据库中的属性 因此 我将 pass 属性的数据类型更改为 boolean 现在它
  • 我应该如何修改对 HTTP 请求的响应并在从 Observable 返回之前轻松访问它?

    我正在升级到 Angular 到版本 5 我正在使用 angular http之前和现在我需要更新到 angular common http并使用HttpClient https angular io guide http 我已经在服务中
  • 如何在不使用 .htaccess 的情况下隐藏 PHP 文件扩展名

    我怎样才能隐藏 phpURL 地址中的扩展名 因此该地址 http www thesite com somefile php 看起来像 http www thesite com somefile without使用 htaccess文件 原
  • 将带有分隔符的列字符串拆分为 azure kusto 中的单独列

    我在天蓝色表中有一列 苹果 其中包含以下字符串 颜色 红色 尺寸 小 现在的情况 Apples Colour red Size small 期望的情况 Colour Size Red small 请帮忙 我会回答这个标题 因为我注意到很多人
  • 支持 XSD 1.1 的 Java 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有支持 XSD 1 1 的 java 库 我已经尝试找到它2天了 我发现的唯一实现是Xerces2
  • 获取资源编号值时没有包标识符

    I have read question with similar titles already 正如您所看到的 没有太多信息 我已检查 R 文件中没有 0x00000021c 资源 当我按下按钮并创建新的 Intent 并且想要将新的 A
  • 骆驼工作单元

    我试图理解骆驼中的工作单元概念 我有一个简单的问题希望这里有人可以提供帮助 例如 如果路由交换涉及多个路由 from aws sqs Q1 to direct processMe route1 from direct processMe t
  • 如何指定网页的语言,以便 Google Chrome 不提供翻译功能

    我有一个 Google Chrome 坚持认为是法语的页面 这是它的快照 http yootles com outbox overcleverchrome html http yootles com outbox overcleverchr
  • 发送带有纯文本后备的 HTML 新闻通讯

    我目前正在使用一个脚本 该脚本使用 file get contents 来获取 php 文件的内容 然后将其通过电子邮件发送给客户列表 我想更改脚本以允许纯文本回退 以降低被标记为垃圾邮件的风险 这是我目前的脚本 function send
  • Create-React-App 中的启动屏幕

    我正在使用 create react app 来设计 PWA 应用程序提供的默认启动屏幕是一个图标 位于屏幕中间 以及该图标下方的应用程序名称 图标和名称必须在清单文件中提供 问题 有没有什么方法可以自定义启动画面而不是使用默认的启动画面
  • 为什么 scikit-learn 的最近邻似乎没有返回正确的余弦相似距离?

    我正在尝试使用 scikit 的最近邻实现从随机值矩阵中查找与给定列向量最接近的列向量 该代码应该找到第 21 列的最近邻居 然后检查这些邻居与第 21 列的实际余弦相似度 from sklearn neighbors import Nea