当前位置: 首页 > 面试题库 >

sklearn.svm.svc的函数predict_proba()在内部如何工作?

归泽宇
2023-03-14
问题内容

我正在使用来自scikit-learn的sklearn.svm.svc进行二进制分类。我正在使用其predict_proba()函数来获取概率估计值。谁能告诉我predict_proba()是如何内部计算概率的?


问题答案:

Scikit-
learn在内部使用LibSVM,而这又使用了Platt缩放(如LibSVM作者在本说明中所述)来校准SVM以产生除类预测之外的概率。

普拉特缩放需要首先像往常一样训练SVM,然后优化参数向量 AB ,使得

P(y|X) = 1 / (1 + exp(A * f(X) + B))

f(X)样品到超平面的有符号距离在哪里(scikit-
learndecision_function方法)。您可能会在此定义中认识到逻辑乙状结肠,这与逻辑回归和神经网络用于将决策函数转换为概率估计的功能相同。

请注意:B参数“截距”或“偏差”或您喜欢调用的任何参数,都可能导致基于该模型的概率估计进行的预测与您从SVM决策函数获得的预测不一致f。例如,假设f(X) = 10,则对的预测为X正;但是如果B = -9.9A = 1,那么P(y|X) = .475。我凭空想出这些数字,但是您已经注意到,这实际上可能会发生。

实际上,Platt缩放可在交叉熵损失函数下,在SVM输出的顶部训练概率模型。为了防止此模型过度拟合,它使用内部五重交叉验证,这意味着使用SVM训练SVMprobability=True可能比原始的非概率SVM昂贵得多。



 类似资料:
  • 问题内容: 我想知道如何访问另一个函数中的一个函数。我看到了这样的代码: 那么,还有另一种方法来调用该 函数吗?我的第二个问题是,为什么在最后一行中我不打电话? 很好的解释深表感谢。 问题答案: 不,您不能直接调用它,因为它是的局部变量。 您需要使用,因为调用时返回了函数对象。要执行此功能对象,您需要 在这里您可以直接调用它,因为您可以访问它,因为它是由函数返回的。返回的对象实际上称为 闭包, 因

  • 问题内容: 我正在阅读有关Java中并发性的Oracle官方文档,但我想知道返回的返回值之间可能有什么区别? 并使用例如 。我假设我用一个。我知道,一般而言,同步集合对于我来说只是一个装饰器,因此很明显a 的内部结构有所不同。您是否有关于这些实施细节的信息? 编辑:我意识到源代码是公开可用的: ConcurrentHashMap.java 问题答案: 我会阅读ConcurrentHashMap的源

  • 问题内容: 我正在使用Eclipse服务器功能进行热代码部署。使用tomcat作为Web服务器。但是我不确定它是如何工作的。我有自己的理解,它必须如何在内部工作。 我的理解:- 当开发人员更改代码(例如,类Employee)时,Eclipse将在正确的位置(必须是特定的Web /应用服务器,将其称为热部署目录(HDD))放置/发布修改后的已编译类。 。现在将显示Web服务器特定的类加载器。它在HD

  • 问题内容: 该功能在内部如何工作?考虑到内核确实具有访问用户内存空间的特权,它是否使用任何缓冲区还是完成了任何内存映射? 问题答案: 的实现高度依赖于体系结构。 在x86和x86-64上,它只是直接从用户空间地址进行读取并写入内核空间地址,同时如果已配置,则暂时禁用SMAP(超级用户模式访问阻止)。它的棘手部分是将代码放置在特殊区域中,以便页面错误处理程序可以识别其中何时发生错误。发生的内存保护错

  • 我在看H.J.Lu的补丁:更新x86 rdrand intrinsics。我不知道我是否应该使用rdrand\u64、rdrand64\u步骤,或者是否有其他功能。似乎没有为他们编写测试用例。 似乎也缺乏手册页(来自Ubuntu 14,GCC 4.8.4): 如何使用RDRAND内部函数来生成一个32字节的块? 一个相关的问题是RDRAND和RDSEED内部函数GCC和Intel C。但它没有告诉

  • 问题内容: “现代” 守护程序如何在 内部 安排作业?有些人经常通过来安排一次跑步。因此,在写出crontab之后,会执行以下操作: 解析crontab以了解所有将来的事件,并hibernate间隔时间? 每分钟轮询一次汇总的crontab数据库,以确定当前时间是否与计划模式匹配? 其他? 谢谢, 问题答案: 在这个问题上听到了几声。不错的RTFC,其中包含一些离散事件模拟论文和Wikipedia