机器学习中的决策阈值
什么是决策阈值?
sklearn不允许我们直接设置决策阈值,但它允许我们访问用于进行预测的决策分数(决策函数o/p)。我们可以从决策函数输出中选择最佳得分并将其设置为决策阈值,并且将小于该决策阈值的所有那些决策得分值视为负类(0),并且将大于该决策阈值的所有那些决策得分值视为正类(1)。
对各种决策阈值使用精度-召回曲线,我们可以选择最佳的决策阈值,使它提供高精度(不影响召回很多)或高召回(不影响精度很多)的基础上,根据我们的项目是面向精度还是面向召回的。
这样做的主要目的是得到一个高精度ML模型,或高召回ML模型。
用于构建高精度ML模型的Python代码
# Import required modules.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import classification_report, recall_score, precision_score, accuracy_score# Get the data.
data_set = datasets.load_breast_cancer()# Get the data into an array form.
x = data_set.data # Input feature x.
y = data_set.target # Input target variable y.# Get the names of the features.
feature_list = data_set.feature_names# Convert the data into pandas data frame.
data_frame = pd.DataFrame(x, columns = feature_list)# To insert an output column in data_frame.
data_frame.insert(30, 'Outcome', y) # Run this line only once for every new training.# Data Frame.
data_frame.head(7)

训练模型
# Train Test Split.
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 42)# Create Classifier Object.
clf = SVC()
clf.fit(x_train, y_train)# Use decision_function method.
decision_function = clf.decision_function(x_test)
获得实际评分
# Actual obtained results without any manual setting of Decision Threshold.
predict_actual = clf.predict(x_test) # Predict using classifier.
accuracy_actual = clf.score(x_test, y_test)
classification_report_actual = classification_report(y_test, predict_actual)
print(predict_actual, accuracy_actual, classification_report_actual, sep ='\n')

在上面的分类报告中,我们可以看到我们的模型精度值(1)是0.92,召回值(1)是1.00。由于本文中我们的目标是在预测(1)时构建一个高精度ML模型而不影响召回率,因此我们需要从下面的精确度-召回曲线中手动选择最佳的决策阈值值,以便我们可以提高该模型的精度。
# Plot Precision-Recall curve using sklearn.
from sklearn.metrics import precision_recall_curve
precision, recall, threshold = precision_recall_curve(y_test, decision_function)# Plot the output.
plt.plot(threshold, precision[:-1], c ='r', label ='PRECISION')
plt.plot(threshold, recall[:-1], c ='b', label ='RECALL')
plt.grid()
plt.legend()
plt.title('Precision-Recall Curve')

在上面的图中,我们可以看到,如果我们想要高精度值,那么我们需要增加决策阈值的值 (X轴),但这将降低召回值(这是不利的)。因此,我们需要选择决策阈值,它可以提高准确率,但召回率不会下降太多。形成上述曲线的一个这样的值是大约0.6决策阈值。
# Implementing main logic.# Based on analysis of the Precision-Recall curve.
# Let Decision Threshold value be around 0.6... to get high Precision without affecting recall much.
# Desired results.# Decision Function output for x_test.
df = clf.decision_function(x_test)# Set the value of decision threshold.
decision_teshold = 0.5914643767268305# Desired prediction to increase precision value.
desired_predict =[]# Iterate through each value of decision function output
# and if decision score is > than Decision threshold then,
# append (1) to the empty list ( desired_prediction) else
# append (0).
for i in df:if i<decision_teshold:desired_predict.append(0)else:desired_predict.append(1)
新旧精度值的比较
# Comparison# Old Precision Value
print("old precision value:", precision_score(y_test, predict_actual))
# New precision Value
print("new precision value:", precision_score(y_test, desired_predict))
输出
old precision value: 0.922077922077922
new precision value: 0.9714285714285714
结论
- 精度值从0.92增加到0.97。
- 召回值因精度-召回权重而减少。
注: 上面的代码没有经过数据预处理(数据清理),这只是一个在实践中如何使用决策阈值的想法。
相关文章:
机器学习中的决策阈值
什么是决策阈值? sklearn不允许我们直接设置决策阈值,但它允许我们访问用于进行预测的决策分数(决策函数o/p)。我们可以从决策函数输出中选择最佳得分并将其设置为决策阈值,并且将小于该决策阈值的所有那些决策得分值…...
mongodb导出聚合查询的数据
❗️❗️❗️在正文之前先要讲一个坑,就是mongoexport这个命令工具不支持导出聚合查询的数据,比如通过某某字段来分组 我查了一天关于mongoexport怎么来导出聚合查询的结果集,最终还是gpt给了我答案 😭 既然mongoexport不支持&…...
U-Mail信创邮件系统解决方案
近年来,在国家政策的大力引导和自身数字化转型需求驱动下,国产化成为国内数字化发展道路上的关键词,企业不断加强自主创新能力,进行信创建设,实现软硬件系统国产化替代,已成为大势所趋。邮件系统作为企业管…...
GUI:贪吃蛇
以上是准备工作 Data import javax.swing.*; import java.net.URL;public class Data {public static URL headerURLData.class.getResource("static/header.png");public static ImageIcon header new ImageIcon(headerURL);public static URL upURLData.class.getR…...
leaflet:个性化配置,利用Leaflet-Geoman绘制多种图形(136)
第136个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中个性化配置,利用Leaflet-Geoman绘制多种图形。 灵活地配置Leaflet-Geoman的属性,可以产生各种美妙的绘图效果。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方…...
【Shell脚本8】Shell printf 命令
Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化…...
CSAPP第4章:RISC和CISC指令集
RISC和CISC指令集 IA32被称为复杂指令集计算机(CISC),与精简指令集计算机(RISC)相对。 从历史上看,先出现了CISC机器,计算机不断发展使指令集非常大。 RISC设计理念在80年代早期发展,使用更简单的指令集产生高效的代码。 许多加…...
【LeetCode】每日一题 2023_11_9 逃离火灾(bfs 练习)
文章目录 刷题前唠嗑题目:最长平衡子字符串题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动!!! 嗯?什么?今天是 hard?陷入沉思。。。先看看题吧 题目:最长平…...
flink1.18.0 自适应调度器 资源弹性缩放 flink帮你决定并行度
jobmanager.scheduler Elastic Scaling | Apache Flink 配置文件修改并重启flink后,webui上会显示调整并行度的按钮,他可以自己调整,你也可以通过webUI手动调整: 点击 之后: 调整完成后:...
如何设计vue项目的权限管理?
权限管理的重要性及必要性 数据安全:权限管理可以确保只有具有相应权限的用户能够访问和操作特定的数据。这可以保护敏感数据不被未授权的用户访问,从而提高数据的安全性。功能控制:权限管理可以根据用户的角色和权限设置,控制用户…...
HBase学习笔记(2)—— API使用
对HBase中常用的API操作进行简单的介绍 对应HBase学习笔记(1)—— 知识点总结-CSDN博客中介绍的HBase Shell常用操作 更多用法请参考官网:Apache HBase ™ Reference Guide 依赖导入 <dependencies><dependency><groupId>o…...
C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发004:游戏核心消息处理 - 玩家类的实现
文章目录 0 代码仓库1 需求2 AOI设计2.1 AOI算法简介2.2 AOI数据结构及实现2.2.1 玩家2.2.2 网格对象2.2.3 游戏世界矩形2.2.4 获取周围玩家的实现2.2.5 代码测试 2.3 GameRole结合AOI创建玩家2.3.1 创建游戏世界全局对象-GameRole继承AOIWorld的Player2.3.2 把玩家到游戏世界的…...
Python Selenium元素定位方法详解
引言 在Web自动化测试中,元素定位是一项非常重要的技术。Python Selenium提供了各种元素定位方法,可以帮助我们定位页面上的元素并与之交互。本文将详细介绍Python Selenium中常用的元素定位方法,并提供实例代码。 1. ID定位 ID是元素在HT…...
分布式事务,你了解多少?(上)
本文主要是讲述分布式事务的理论及常用的技术方案,主要源自各类学习和工作总结,如有不妥之处,还望指正。分布式事务的其他基础请自行查阅资料。 一、分布式事务产生的原因 分布式事务的产生,源自互联网、电商等的发展,…...
ClickHouse主键索引最佳实践
在本文中,我们将深入研究ClickHouse索引。我们将对此进行详细说明和讨论: ClickHouse的索引与传统的关系数据库有何不同ClickHouse是怎样构建和使用主键稀疏索引的ClickHouse索引的最佳实践 您可以选择在自己的机器上执行本文给出的所有Clickhouse SQL…...
Flink 基础 -- 应用开发(项目配置)
1、概述 本节中的指南将向您展示如何通过流行的构建工具(Maven, Gradle)配置项目,添加必要的依赖项(即连接器和格式,测试),并涵盖一些高级配置主题。 每个Flink应用程序都依赖于一组Flink库。至少,应用程序依赖于Flink api&…...
空间曲面@常见曲面方程
文章目录 曲面的基本问题特殊曲面球面方程球的标准形方程一般形方程例 柱面柱面方程不同维度下同方程的图形常见柱面方程 旋转曲面旋转曲面的方程旋转情况分类以yOz上的曲线绕 z z z轴旋转为例 旋转曲面的方程常见旋转曲面方程 锥面其他曲面 曲面的基本问题 根据曲面(点的几何…...
unity 接收和发送Udp消息
因为需要用到unity和其他的程序交互,其他程序可以提供Udp消息,因此找了合适的相互连接方法。这里直接上代码。 工具类: using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; u…...
机器学习股票大数据量化分析与预测系统 - python 计算机竞赛
文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 机器学习股票大数据量化分析与预测系统 该项目较为新颖&am…...
架构描述语言(ADL)
1.架构描述语言(ADL) 架构描述语言(Architecture Description Language, ADL)是一种为明确说明软件系统的概念架构和对这些概念架构建模提供功能的语言。 2.ADL基本构成要素 ADL即架构描述语言,其基本构成要素包括:…...
金融NLP实战:基于FinSight构建智能舆情监控系统
1. 项目概述:金融文本洞察的“显微镜”在金融这个信息密度极高的领域,每天产生的研报、公告、新闻、社交媒体讨论浩如烟海。对于分析师、投资者和风控人员来说,如何从这些非结构化的文本海洋中,快速、精准地提取出关键信息、洞察市…...
Copilot Next 工作流为何在生产环境突然降智?深度解析LLM上下文截断阈值、Token泄漏风险与4种加固方案
更多请点击: https://intelliparadigm.com 第一章:Copilot Next 工作流在生产环境突发降智现象概览 近期多个中大型团队反馈,Copilot Next 在接入 CI/CD 流水线后出现非预期的语义退化行为:代码补全准确率下降 37%(基…...
DeepSeek悄悄干了一件大事,但所有人的目光都在OpenAI身上
DeepSeek悄悄干了一件大事,但所有人的目光都在OpenAI身上AI观察社 2026年4月24日 今天的AI圈,所有人都在讨论GPT-5.5。 我也是。早上起来刷了一圈推特,满屏都是"GPT-5.5来了""最强模型""Agent时代…...
告别.so库:用Android.mk直接编译C/C++可执行文件,在Android设备上运行命令行工具
告别.so库:用Android.mk直接编译C/C可执行文件,在Android设备上运行命令行工具 当大多数Android开发者还在JNI和共享库的世界里打转时,一群极客已经发现了更原生的玩法——把Android设备当作完整的Linux环境来使用。想象一下,你可…...
等保 2.0 干货合集,网工升职加薪必备常识
等保 2.0 干货合集,网工升职加薪必备常识 想象一下,你负责维护的网络突然遭遇攻击,数据泄露、业务瘫痪,损失惨重,而这一切仅仅因为安全措施没到位。作为网络的“设计师”和“守护者”,网工的职责早已不限于…...
从踩坑到跑通:我的大疆MSDK+Android AI模型集成实战(图像转换、线程锁与JNI那些事)
从踩坑到跑通:大疆MSDK与Android AI模型集成的深度实践 作为一名长期从事移动端AI开发的工程师,我最近完成了一个极具挑战性的项目——将YOLOv8模型集成到大疆无人机MSDK生态中。整个过程充满了技术深坑和思维陷阱,但也让我积累了宝贵的实战经…...
如何高效修复损坏视频:专业级开源工具实用指南
如何高效修复损坏视频:专业级开源工具实用指南 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 当珍贵的视频文件突然无法播放时,那种焦虑感是…...
边缘AI抓取机器人:zeptoclaw项目解析与轻量级视觉抓取实践
1. 项目概述:从“zeptoclaw”看边缘AI抓取机器人的新范式 最近在机器人开源社区里,一个名为“bkataru/zeptoclaw”的项目引起了我的注意。乍一看这个标题,可能会觉得有点陌生,但拆解一下就能发现它的野心不小。“Zepto”是国际单位…...
Display Driver Uninstaller深度解析:如何让显卡驱动问题迎刃而解
Display Driver Uninstaller深度解析:如何让显卡驱动问题迎刃而解 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-u…...
高效LLM应用评估:Ragas框架深入解析与实战指南
高效LLM应用评估:Ragas框架深入解析与实战指南 【免费下载链接】ragas Supercharge Your LLM Application Evaluations 🚀 项目地址: https://gitcode.com/gh_mirrors/ra/ragas Ragas评估框架为LLM应用提供了一套专业、完整的评估解决方案&#x…...
