手动计算SVM的决策函数

2023-12-13

我正在尝试使用Python库SKLearn手动计算SVC分类器的decision_function(而不是使用内置方法)。

我已经尝试了几种方法,但是,当我don't扩展我的数据。

z是一个测试数据(已缩放),我认为其他变量本身就说明了问题(另外,如果从代码中看不出来,我正在使用 rbf 内核)。

以下是我尝试过的方法:

1 循环方法:

dec_func = 0
for j in range(np.shape(sup_vecs)[0]):

    norm2 = np.linalg.norm(sup_vecs[j, :] - z)**2 
    dec_func = dec_func + dual_coefs[0, j] * np.exp(-gamma*norm2)

dec_func += intercept

2 向量化方法

diff = sup_vecs - z
norm2 = np.sum(np.sqrt(diff*diff), 1)**2
dec_func = dual_coefs.dot(np.exp(-gamma_params*norm2)) + intercept

然而,这些都不会返回与decision_function。我认为这可能与重新调整我的价值观有关,或者更可能是我一直忽视的一些愚蠢的事情!

任何帮助,将不胜感激。


经过一番挖掘和摸索之后,我已经弄清楚了。

正如我上面提到的z是经过缩放的测试数据。为了缩放它我必须提取.mean_ and .std_来自 preprocessing.StandardScaler() 对象的属性(当然是在我的训练数据上调用 .fit() 之后)。

当时我正在使用这个缩放的z作为我的手动计算和内置函数的输入。然而,内置函数是管道的一部分,该管道已经将 StandardScaler 作为管道中的第一个“管道”,因此z被缩放了两次! 因此,当我从管道中删除缩放时,手动答案“匹配”内置函数的答案。

顺便说一句,我在引号中说“匹配”,因为我发现我总是必须翻转手动计算的符号以匹配内置版本。目前我不知道为什么会这样。

总而言之,我误解了管道的工作原理。

对于那些感兴趣的人,这是我的手动方法的最终版本:

diff = sup_vecs - z_scaled
# Looping Method
dec_func_loop = 0
for j in range(np.shape(sup_vecs)[0]):
    norm2 = np.linalg.norm(diff[j,:]) 
    dec_func_loop = dec_func_loop + dual_coefs[j] * np.exp(-gamma*(norm2**2))

dec_func_loop = -1 * (dec_func_loop - intercept)

# Vectorized method
norm2 = np.array([np.linalg.norm(diff[n, :]) for n in range(np.shape(sup_vecs)[0])])
dec_func_vec = -1 * (dual_coefs.dot(np.exp(-gamma*(norm2**2))) - intercept)

Addendum

对于那些有兴趣为多类 SVC 实现手动方法的人,以下链接会有所帮助:https://stackoverflow.com/a/27752709/1182556

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

手动计算SVM的决策函数 的相关文章

  • 嵌套字典中的 Django 模板

    我正在使用 Django 模板 并且遇到了嵌套字典的一个问题 Dict result dict type 0 file name abc count 0 type 1 file name xyz count 50 我的 HTML 文件中的模
  • 将 transaction.commit_manually() 升级到 Django > 1.6

    我继承了为 Django 1 4 编写的应用程序的一些代码 我们需要更新代码库以使用 Django 1 7 并最终更新到 1 8 作为下一个长期支持版本 在一些地方它使用旧风格 transaction commit manually and
  • 在 Pandas 中,如何从基于另一个数据框的数据框中删除行?

    我有 2 个数据框 一个名为 USERS 另一个名为 EXCLUDE 他们都有一个名为 电子邮件 的字段 基本上 我想删除 USERS 中包含 EXCLUDE 中包含电子邮件的每一行 我该怎么做 您可以使用boolean indexing
  • 使用 Python 创建 MIDI

    本质上 我正在尝试从头开始创建 MIDI 并将它们放到网上 我对不同的语言持开放态度 但更喜欢使用Python 两种语言之一 如果这有什么区别的话 并且想知道我应该使用哪个库 提前致谢 看起来这就是您正在寻找的 适用于 Python 的简单
  • 从sklearn PCA获取特征值和向量

    如何获取 PCA 应用程序的特征值和特征向量 from sklearn decomposition import PCA clf PCA 0 98 whiten True converse 98 variance X train clf f
  • Python 是解释型的还是编译型的,或者两者兼而有之?

    据我了解 An 解释的语言是由解释器 将高级语言转换为机器代码然后执行的程序 实时运行和执行的高级语言 它一次处理一点程序 A compiled语言是一种高级语言 其代码首先由编译器 将高级语言转换为机器代码的程序 转换为机器代码 然后由执
  • 将二维数组放入 Pandas 系列中

    我有一个 2D Numpy 数组 我想将其放入 pandas 系列 而不是 DataFrame 中 gt gt gt import pandas as pd gt gt gt import numpy as np gt gt gt a np
  • Python tkinter.filedialog Askfolder 干扰 clr

    我主要在 Spyder 中工作 构建需要弹出文件夹或文件浏览窗口的脚本 下面的代码在spyder中完美运行 在 Pycharm 中 askopenfilename工作良好 同时askdirectory什么都不做 卡住了 但是 如果在调试模式
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • ValueError:不支持连续[重复]

    这个问题在这里已经有答案了 我正在使用 GridSearchCV 进行线性回归的交叉验证 不是分类器也不是逻辑回归 我还使用 StandardScaler 对 X 进行标准化 我的数据框有 17 个特征 X 和 5 个目标 y 观察 约11
  • Alembic:如何迁移模型中的自定义类型?

    My User模型是 class User UserMixin db Model tablename users noinspection PyShadowingBuiltins uuid Column uuid GUID default
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • 为什么我应该使用 WSGI?

    使用 mod python 一段时间了 我读了越来越多关于 WSGI 有多好的文章 但没有真正理解为什么 那么我为什么要切换到它呢 有什么好处 这很难吗 学习曲线值得吗 为了用 Python 开发复杂的 Web 应用程序 您可能会使用更全面
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • 使用 Python 将对象列表转为 JSON

    我在转换时遇到问题Object实例到 JSON ob Object list name scaping myObj base url u number page for ob in list name json string json du
  • 使用Multiprocessing和Pool时如何访问全局变量?

    我试图避免将变量冗余地传递到dataList e g 1 globalDict 2 globalDict 3 globalDict 并在全球范围内使用它们 global globalDict然而 在下面的代码中并不是这样做的解决方案 是否有
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这

随机推荐

  • networkx 的运行时错误:运行神经气体脚本时迭代期间字典发生变化

    我正在尝试使用较旧的脚本运行神经气体网络 该脚本不适用于 networkx 2 因此我修改了一些内容 但是我收到错误 字典在迭代期间更改了大小 并且我不知道如何解决此问题 因为 networkx 不是我的专长 有什么帮助吗 现在导致问题的代
  • 在 Mac OS Big Sur 版本 11.0.1 上安装 circos 时缺少 GD

    我发现在 MacOS 上安装 circos 非常非常困难 而且我在 Google 上找到的所有答案都非常生疏 并且不适用于 Mac OS Big Sur 版本 11 0 1 这是我所缺少的 base user user MacBook Pr
  • WHERE 子句最好在 IN 和 JOIN 之前或之后执行

    我读了这篇文章 SELECT 语句的逻辑处理顺序 在文章末尾已经写了 ON 和 JOIN 子句 请考虑在 WHERE 之前 假设我们有一个包含 1000 万条记录的主表和一个包含 5000 万条记录的明细表 引用主表 FK 我们有一个查询
  • Flutter iOS 文件共享 - 无法打开共享文件

    我正在为 iOS 构建一个 flutter 应用程序 我创建了一种文件类型 我的应用程序和另一个应用程序可以来回共享 我正在使用颤振接收共享意图库来实现这一点 为了测试它 我对 info plist 文件进行了所有必要的更改以处理我的自定义
  • 带有 ASP.NET Web 服务的 jQuery AutoComplete (jQuery UI 1.8rc3)

    目前 当从 ashx 处理程序返回 XML 时 我可以使用此版本的自动完成控件 xml 看起来像这样
  • 添加超链接到文本块 WPF

    我在数据库中有一些文本 如下所示 Lorem ipsum dolor sat amet consectetur adipiscing elit 杜伊斯 Tellus nisl venenatis et pharetra ac tempor
  • 如何使用alignof强制堆分配对齐?

    我想强制特定的堆分配返回 64 字节对齐的地址 因为这是缓存行边界 我以为我可以这样做 int p new alignas 64 int 但我的编译器似乎都没有给出p64 的倍数的地址 这是我检查的方法 include
  • 为什么 os.normpath 不折叠前导双斜杠?

    在Unix下 os path normpath将多个斜线折叠成单个斜线除非恰好出现两个斜杠 表明路径的开头 为何例外 为了说明这一点 我得到以下转换 double slash stays gt double slash stays doub
  • 为什么模拟不能与 AsyncTask 一起使用?

    我正在使用 ApplicationTestCase 测试 Android 应用程序 我想模拟我的 AsyncTasks 之一 简化示例以显示问题 public class Foo extends AsyncTask
  • 数据框中单行中的重复值

    df lt data frame label c a b c val c x b c val1 c z b d label val val1 1 a x z 2 b b b 3 c c d 我想找出每一行中的重复值 对于第一行 没有重复的
  • 我的 Java 代码中出现错误,但我看不出它出了什么问题。帮助?

    我收到的错误是在 while 循环中的 fillPayroll 方法中 其中显示 payroll add employee 该错误表明我无法在数组类型 Person 上调用 add 但 Employee 类继承自 Person 所以我认为这
  • 通过python代码附加JSON文件

    我正在尝试创建一个函数 将数据附加到 json 文件中 并遵循已存在的相同缩进 我创建了 json 文件 如下所示 TableA ID 10001 Name Chandan Age 29 ID 10002 Name Rajesh Age 2
  • 谷歌地图 API v3 投影?

    我想知道谷歌地图使用什么投影是 EPSG 4326 还是 P900913 另外 如果您使用绘图工具 会生成什么投影坐标 EPSG3857是官方指定 交互式网络地图使用 球面墨卡托 系统 该系统使用墨卡托投影球体而不是 WGS84 椭球体 更
  • 全屏应用程序 WM6 C#

    谁能指导我如何使用 C 创建适用于 Windows Mobile 6 的全屏应用程序 我正在尝试实现与 Tom Tom 等应用程序类似的显示 其中隐藏了所有操作系统元素 例如开始 任务栏 并且我的应用程序完全填满了屏幕 我正在使用 VS 2
  • 连接到 BLE 设备

    所以我制作了这个应用程序 我可以在其中找到所有具有名称的 BLE 设备 但是我怎样才能使特定字段之一可单击并自动连接到设备 以便我可以开始从中写入 读取呢 Adapter public class ListAdapter BTLE Devi
  • 如何在Spritekit中创建风效果

    我在玩 愤怒的小鸟 到了这个阶段 风 吹 你 有点推你 有点有趣 但我真的无法弄清楚可以完成此操作的逻辑或代码 我知道你可能会使用发射器来创建像 看 一样的风 但我真的很想了解如何完成精灵的 推动 谢谢 你是对的 发射器只能用来产生风在吹的
  • 阅读:hover 伪类与 javascript

    我做了一个函数来覆盖 hover页面上的某些元素 它在正常和正常之间消失 hover 影响 因为我必须创建一个 hover我的 CSS 文件中的类 我觉得这有点不干净 我怎样才能读到 hover伪类内容 Using getComputedS
  • 使用 Cypher 2.0 将 Lucene 查询传递到 Neo4j REST API

    如果我有一个 Lucene 查询 例如 title foo bar AND body baz OR title bat有没有直接的方法可以将其传递到 Cypher 查询中 它看起来像这样用来工作START和旧的node auto index
  • 我可以像数组一样使用 stdClass 吗?

    是否可以使 stdClass 对象像通用索引数组一样工作 IE 数组 数组 0 gt 120 1 gt 382 2 gt 552 3 gt 595 4 gt 616 会被构造成像 a array array 120 array 382 et
  • 手动计算SVM的决策函数

    我正在尝试使用Python库SKLearn手动计算SVC分类器的decision function 而不是使用内置方法 我已经尝试了几种方法 但是 当我don t扩展我的数据 z是一个测试数据 已缩放 我认为其他变量本身就说明了问题 另外