为什么 KNN 使用自定义指标会很慢?

2024-02-15

我使用的数据集包含大约 200k 对象。每个对象都有 4 个特征。我通过 K 最近邻 (KNN) 和欧几里德度量对它们进行分类。过程大约在 20 秒内完成。

最近我有一个使用自定义指标的理由。也许会取得更好的结果。我已经实现了自定义指标,并且 KNN 已经工作了一个多小时。我没有等到它完成。

我认为这个问题的原因是我的指标。我将我的代码替换为return 1。 KNN仍然工作了1个多小时。我认为原因是球树算法,但 KNN 与它和欧几里得度量在大约 20 秒内工作。

现在我不知道出了什么问题。我使用 Python 3 和 sklearn 0.17.1。Here https://github.com/scikit-learn/scikit-learn/blob/0.17.X/sklearn/neighbors/base.py#L256无法使用自定义指标完成流程。我也尝试过算法brute但它有同样的效果。 scikit-learn 的升级和降级没有影响。在 Python 2 上通过自定义指标实现分类也没有积极效果。我在 Cython 上实现了这个指标(仅返回 1),它具有相同的效果。

def custom_metric(x: np.ndarray, y: np.ndarray) -> float:
    return 1

clf = KNeighborsClassifier(n_jobs=1, metric=custom_metric)
clf.fit(X, Y)

我可以使用自定义指标来促进 KNN 分类过程吗?

抱歉,如果我的英语不清楚。


Sklearn 进行了优化,并使用 cython 和多个进程来尽可能快地运行。编写纯 python 代码(尤其是多次调用时)是导致代码变慢的原因。我建议您使用 cython 编写自定义指标。 您可以在此处遵循教程:https://blog.sicara.com/https-medium-com-redaboumahdi-speed-sklearn-algorithms-custom-metrics-using-cython-de92e5a325c https://blog.sicara.com/https-medium-com-redaboumahdi-speed-sklearn-algorithms-custom-metrics-using-cython-de92e5a325c

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

为什么 KNN 使用自定义指标会很慢? 的相关文章

  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 将 2D NumPy 数组按元素相乘并求和

    我想知道是否有一种更快的方法 专用 NumPy 函数来执行 2D NumPy 数组的元素乘法 然后对所有元素求和 我目前使用np sum np multiply A B 其中 A B 是相同维度的 NumPy 数组m x n 您可以使用np
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐

  • MVC3 - 编译的 Razor 视图找不到 _ViewStart

    我在单独的类库中使用编译的 Razor 视图作为 MVC3 的一种插件系统 我遵循 Chris Van De Steed 的指南here http www chrisvandesteeg nl 2010 11 22 embedding pr
  • 如何使用 bin/www 为node.js heroku 部署编写Procfile?

    我正在尝试部署 Heroku 应用程序 我相信 procfile 可能是我的应用程序未部署的原因 我尝试了多种解决方案 包括 网络 节点 bin www 网络 npm 启动 我的应用程序无法运行可能还有另一个原因 但我想确保我的 Procf
  • 访问类中的值类似于 boost::any

    我正在做一个简单的boost any 类似用于教育目的的课程 但我不知道如何访问存储的值 我可以完美地设置该值 但是当我尝试访问 holder 类中的任何成员时 编译器只是抱怨在它派生的类中找不到该成员 我无法将成员声明为virtual因为
  • 使用 Unirest C# 将 http 响应正文转换为 JSON 格式

    我正在使用 mashape api https market mashape com montanaflynn dictionary https market mashape com montanaflynn dictionary 这是我的
  • Clojure 中函数的类型提示

    我正在尝试解决 Clojure 中的反射警告 该警告似乎是由于对作为普通 Java 对象的函数返回值缺乏类型推断而导致的 演示该问题的简单示例代码 set warn on reflection true defn foo Integer x
  • Ruby 如何处理字节/二进制?

    我正在尝试通过套接字发送一系列二进制字节 以满足我公司使用的特定标准 我公司中没有人以前使用过 Ruby 来实现这一点 但在其他语言中 他们一次发送一个字节的数据 通常使用某种 打包 方法 无论如何 我找不到动态创建二进制文件 或者根本无法
  • Flexslider 手动控件不起作用

    我已经使用 Flexslider 创建了一个滑块 并且尝试使用 manualControls 创建导航菜单 但链接不起作用 以下是 flexslider 和滑块 导航本身的代码 柔性滑块 滑块和
  • os.system 中的变量

    我在用os systemPython 中的方法在 Linux 中打开文件 但我不知道如何在 os system 命令内传递变量 a import os a 4 os system gedit a test txt 如何在命令中将变量作为整数
  • C++ 中的整数字节交换

    我正在为我的 C 课程做家庭作业 我正在研究的问题如下 编写一个函数 它接受一个无符号短整型 2 个字节 并交换字节 例如 如果交换后 x 258 00000001 00000010 则 x 将为 513 00000010 00000001
  • AngularJS 应用程序:从 JSON 加载数据一次并在多个控制器中使用它

    我正在开发一个使用 AngularJS 作为框架的移动应用程序 目前我有一个与此类似的结构 app config routeProvider function routeProvider routeProvider when templat
  • 我无法在 TextView 中显示计时器

    我创建了一个带有倒计时器的列表视图 下面是代码 public class TicketAdapter extends ArrayAdapter
  • 如何避免详细日志记录的影响?

    如何缓冲详细的日志记录语句 即logging debug 直到Python进程结束 这需要自定义记录器吗 我当前的设置使用类似于的配置文件Scott s https stackoverflow com questions 4441842 p
  • Hibernate 中 SchemaUpdate 和 SchemaExport 的区别

    Hibernate 中的 SchemaUpdate 和 SchemaExport 有什么区别 架构更新 http docs jboss org hibernate orm 3 3 api org hibernate tool hbm2ddl
  • 正则表达式匹配后面没有某个字符串的字符串

    我有一个字符串块 如下所示 1 While EngineSpeed b4tgup 2 While AcceleratorPedal desddd lt 2 3 While AcceleratorPeda desddd lt 2 4 Whil
  • Mac El Capitan 中忽略 /etc/hosts (10.11.5)

    我正在尝试将现有网址重定向到我的子网上的远程计算机 为此 我将以下内容放入 etc hosts 192 168 1 249 holub com 并刷新 DNS 缓存 sudo dscacheutil flushcache sudo Kill
  • 如何防止模糊过渡时图像闪烁?

    如何防止滤镜过渡结束时出现闪光 模糊效果 我使用的是铬 下面的片段显示了问题 window on load function event setTimeout function sec addClass active 1000 sec ma
  • 还可以调试GWT吗?

    只有我一个人这样吗 或者甚至可以再运行 调试 GWT 应用程序吗 全新安装 Google Plugin for Eclipse Juno 使用 GWT GAE 创建新的 Web 应用程序 运行 调试 失败 这是在 Mac 上运行的 带有 C
  • 以弹簧形式绑定一组

    我正在尝试将弹簧表单与命令对象中的集合绑定 在我的指挥课上实例我将集合定义为 private Set
  • 如何以ls格式显示文件和文件夹大小

    ls l 将显示所有文件和文件夹的详细信息 但文件夹大小不正确 始终显示 4 0k 那么如何将文件 文件夹显示为ls l除了具有正确大小的文件夹之外的格式 谢谢 ls l 格式 drwxr xr x 9 jerry jerry XXX 0K
  • 为什么 KNN 使用自定义指标会很慢?

    我使用的数据集包含大约 200k 对象 每个对象都有 4 个特征 我通过 K 最近邻 KNN 和欧几里德度量对它们进行分类 过程大约在 20 秒内完成 最近我有一个使用自定义指标的理由 也许会取得更好的结果 我已经实现了自定义指标 并且 K