手动计算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 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • 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是一个测试数据 已缩放 我认为其他变量本身就说明了问题 另外