Jupyter notebook调试:设置断点运行

写了一段小代码,主要是用来测试一段序列的k均值聚类效果;

中间想到debug一下,但是想到自己似乎从来没有正式地接触过jupyter notebook中地debug,平时也只是多开几个cell,然后在其他cell中复制粘贴部分代码,一步一步运行,然后进行print()大法查看变量和数据结构。

import numpy as np
from sklearn.cluster import KMeans
window_size = 3
features = [] #每一个窗口的012显状态的频率
obs_labels = [] #每一个窗口中心位置的显状态标签n_states=3 # 隐状态数
n_observations=3 # 显状态数seq = "MEGDAVEAIVEESETFIKGKERKTYQRRREGGQEEDACHLPQNQTDGGEVVQDVNSSVQMVMMEQLDPTLLQMKTEVMEGTVAPEAEAAVDDTQIITLQVVNMEEQPINIGELQLVQVPVPVTVPVATTSVEELQGAYENEVSKEGLAESEPMICHTLPLPEGFQVVKVGANGEVETLEQGELPPQEDPSWQKDPDYQPPAKKTKKTKKSKLRYTEEGKDVDVSVYDFEEEQQEGLLSEVNAEKVVGNMKPPKPTKIKKKGVKKTFQCELCSYTCPRRSNLDRHMKSHTDERPHKCHLCGRAFRTVTLLRNHLNTHTGTRPHKCPDCDMAFVTSGELVRHRRYKHTHEKPFKCSMCDYASVEVSKLKRHIRSHTGERPFQCSLCSYASRDTYKLKRHMRTHSGEKPYECYICHARFTQSGTMKMHILQKHTENVAKFHCPHCDTVIARKSDLGVHLRKQHSYIEQGKKCRYCDAVFHERYALIQHQKSHKNEKRFKCDQCDYACRQERHMIMHKRTHTGEKPYACSHCDKTFRQKQLLDMHFKRYHDPNFVPAAFVCSKCGKTFTRRNTMARHADNCAGPDGVEGENGGETKKSKRGRKRKMRSKKEDSSDSENAEPDLDDNEDEEEPAVEIEPEPEPQPVTPAPPPAKKRRGRPPGRTNQPKQNQPTAIIQVEDQNTGAIENIIVEVKKEPDAEPAEGEEEEAQPAATDAPNGDLTPEMILSMMDR"
seq_encoded = [ [0 if i in ["K","R","H"] else (1 if i in ["D","E"] else 2) ] for i in seq ]
for i in range(len(seq_encoded) - window_size + 1):window = seq_encoded[i:i+window_size]feature = np.zeros(n_observations)for obs in window:feature[obs[0]] += 1 # 计算0、1、2显状态频数feature /= window_size  # 归一化features.append(feature)obs_labels.append(seq_encoded[i+window_size//2]) # 记录中心位置的显状态标签features,obs_labels = np.array(features),np.array(obs_labels)# 使用K-means聚类
kmeans = KMeans(n_clusters=n_observations,random_state=2025)
cluster_labels = kmeans.fit_predict(features) #fit+predict# 统计每个簇对应的观测分布
emission_counts = np.ones((n_states,n_observations)) # 拉普拉斯平滑for cluster_id in range(n_states):cluster_mask = (cluster_labels == cluster_id) # 获取当前簇的掩码,如果是当前簇的样本则为Truecluster_obs = obs_labels[cluster_mask] #取出对应cluster id的观测标签for obs in cluster_obs:emission_counts[cluster_id,obs] += 1 # 对于每一个cluster_id是隐状态,obs是显状态,进行计数
# 归一化
emission_counts /= emission_counts.sum(axis=1, keepdims=True) # 按行归一化
# 输出每个簇的观测分布
for i in range(n_states):print(f"Cluster {i} emission distribution: {emission_counts[i]}")

就拿最基本的断点操作来举例,比如说我只想运行代码到第22行,然后简单查看一下features,obs_labels的变量值。

如果是以前刚入门的我,可能就是直接另外开一个cell,然后把这前面22行代码直接复制粘贴,然后单独运行,运行之后再一步一步print,太low了。

一,现在来介绍一个调试的库pdb:

jupyter的调试是通过python自带的pdb库来实现的。

首先是你的每个cell的code前面,加两句

import pdb
pdb.set_trace() # 调试用,断点调试

然后我们手头上的代码直接运行:

ctrl+enter

运行之后可以看到弹出的调试命令行框:

一些最基本的调试命令参数:

完整命令简写命令描述
argsa打印当前函数的参数
breakb设置断点
clearcl清除断点
condition设置条件断点
continuec或者cont继续运行,知道遇到断点或者脚本结束
disable禁用断点
enable启用断点
helph查看pdb帮助
ignore忽略断点
jumpj跳转到指定行数运行
listl列出脚本清单
nextn执行下条语句,遇到函数不进入其内部
pp打印变量值,也可以用print
quitq退出 pdb
returnr一直运行到函数返回
tbreak设置临时断点,断点只中断一次
steps执行下一条语句,遇到函数进入其内部
wherew查看所在的位置
!在pdb中执行语句

比如说我想在这里的第26行设置一个断点:

我们输入:

b 26

在输入b 26之后:对比前面

比如说我现在想看一下features变量的值,我直接在输入框中输入features,或者print(features),同样我可以看一下shape:

查看另外一个变量:

看shape,是一维array:

如果输出调试信息太多了,可以clear cell的output;

调试完毕之后可以直接q退出。

二,jupyter本身也开发了相应的可视化debug工具

debugger

参考:https://zhuanlan.zhihu.com/p/120215615

参考:https://blog.csdn.net/weixin_41529093/article/details/117535034

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85858.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[12-2] BKP备份寄存器RTC实时时钟 江协科技学习笔记(14个知识点)

1 2 3 4 5 6 7 8 RTC是“Real-Time Clock”的缩写,中文意思是“实时时钟”。这是一种在电子设备中使用的时钟,它能够提供准确的时间信息,即使在设备断电的情况下也能继续运行,因为它通常由一个小型电池供电。RTC广泛应用于计算机…

优化给AI的“提问技巧”(提示工程),让大型语言模型(比如GPT)更好地扮演“心理治疗助手”的角色

优化给AI的“提问技巧”(提示工程),让大型语言模型(比如GPT)更好地扮演“心理治疗助手”的角色 尤其是在“问题解决疗法”(PST)中帮助 caregivers(家庭护理者)缓解焦虑、疲劳等心理症状。以下是核心内容的通俗解读: 一、研究背景:AI当心理医生靠谱吗? 现状:全球…

Java的lambda表达式应用

Lambda表达式是Java 8引入的一项强大特性,它允许以更加简洁的方式表示匿名函数。Lambda表达式不仅让代码更加简洁、清晰,而且为函数式编程提供了有力支持,从而提升了Java语言的表达能力。 本文主要讲解lambda应用stream处理集合的应用。 1、…

云原生/容器相关概念记录

文章目录 网络与虚拟化技术云平台与架构容器与编排容器网络方案性能优化与工具硬件与协议 网络与虚拟化技术 P4可编程网关 P4: Programming Protocol-independent Packet Processors一种基于P4语言的可编程网络设备,支持自定义数据包处理逻辑。P4可编程技术详解&am…

[C++] traits机制

文章目录 C之type_traitsis_floating_point<T> ..的使用std::enable_if<T>::type的使用std::remove_cv 如何自定义traits C之type_traits is_floating_point …的使用 一般在定义打印模板函数的时候&#xff0c;当我们用printf进行终端日志打印&#xff0c;需要根…

OpenCV 视频处理与保存

一、知识点 1、VideoCapture类 (1)、用于从视频文件、摄像机或图像序列中捕获视频帧。 (2)、构造函数 VideoCapture(const String & filename, int apiPreference CAP_ANY) a、filename可以是视频文件的名称(例如"video.avi")&#xff0c;可以是图…

【Leetcode】字符串之二进制求和、字符串相乘

文章目录 算法原理二进制求和题目链接题目描述解题思路代码 字符串相乘题目链接题目描述解题思路代码 算法原理 这两道题都是属于算法里一种经典题型&#xff1a;高精度加/减/乘/除法&#xff0c;需要我们模拟加/减/乘/除 列竖式运算。 二进制求和 题目链接 题目链接 题目描…

MongoDB:索引

目录 1、索引数据结构&#xff1a;B-树 2、索引类型 2.1 单字段索引 2.2 复合索引&#xff08;最重要&#xff01;&#xff09; 2.3 多键索引&#xff08;数组字段&#xff09; 2.4 地理空间索引 2.5 全文索引 2.6 哈希索引&#xff08;分片专用&#xff09; 2.7 TTL …

【大模型】Transformer架构完全解读:从“盲人摸象“到“通晓万物“的AI进化论

&#x1f916; Transformer架构完全解读&#xff1a;从"盲人摸象"到"通晓万物"的AI进化论 —— 一位大模型探索者的技术日记 ☕ 第一章&#xff1a;为什么说Transformer是AI界的"蒸汽机革命"&#xff1f; 1.1 从RNN到Transformer&#xff1a;…

JavaEE:使用JMeter进行接口并发测试

一、下载与安装&#xff1a; 1.下载apache-jmeter-5.6.3.zip&#xff1a; https://jmeter.apache.org/download_jmeter.cgi 2.解压到D:\Program Files\apache-jmeter-5.6.3目录 3.添加JDK环境配置到D:\Program Files\apache-jmeter-5.6.3\bin\jmeter.bat文件开头&#xff1…

【笔记】MSYS2 的 MinGW64 环境中正确安装 Python 相关环境管理工具 (Poetry、Virtualenv、Pipenv 和 UV)

MSYS2 环境配置与 Python 项目依赖管理笔记_msys更新python-CSDN博客 【技术笔记】MSYS2 指定 Python 版本安装方案_pacman -u 安装指定版本-CSDN博客 更多关于 MSYS2 开发环境的配置&#xff0c;请查看往期笔记。 简介 本笔记将记录我们在 MSYS2 的 MinGW64 环境中安装 Pytho…

ubuntu添加域名解析服务器地址

在 Ubuntu 中配置域名解析主要有两种方式&#xff1a;静态修改 /etc/hosts 文件 和 动态修改 DNS 解析服务器配置。以下是详细操作指南&#xff1a; 建议优选:二、永久方案&#xff1a;修改 DNS 解析服务&#xff08;推荐&#xff09;中的方法1 一、临时方案&#xff1a;修改…

通过 AIOps 、生成式 AI 和机器学习实现更智能的可观测性

支持 AIOps 的理由 人工智能运维&#xff08;AIOps&#xff09;是将人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;和分析技术应用于提升 IT 运维团队日常工作的过程。简单来说&#xff0c;AIOps 是软件系统通过 AI 和 ML 以及相关分析技术来简化和…

【DataWhale组队学习】AI办公实践与应用

AI办公-PPT制作 1. 使用大模型制作PPT的常见流程 使用大模型生成PPT的文稿将文稿的内容喂给可以直接生成PPT的大模型&#xff0c;生成PPT 2. 使用大模型生成PPT文稿 我们可以先使用上一章提过的那些大模型去生成一个PPT的文稿。那根据上一章的内容&#xff0c;我们想要去让…

人机融合智能 | 人智交互中的机器行为设计与管理

以人工智能为代表的科学技术正在深入地塑造和改变着人类的社会、文化和经济等,在“无所不在的算法与智能”的时代,了解智能机器的行为对于设计智能行为并使其造福于人类,对于智能机器的设计者、开发者和使用者,都具有重要意义。机器行为研究从学科交叉的视角,将智能机器行为置于…

langChainv0.3学习笔记(高级篇)

目录 工具创建工具从函数创建工具tool 装饰器结构化工具 从可运行对象创建工具子类化 BaseTool如何创建异步工具处理工具错误返回工具执行的artifact 使用内置工具和工具包自定义默认工具如何使用内置工具包 使用聊天模型调用工具定义工具模式Python 函数LangChain 工具Pydanti…

UiAutomator2 与 Appium 对比分析:安卓自动化测试框架的选择指南

目录 一、基础介绍UiAutomator2Appium 二、功能对比三、架构差异UiAutomator2 架构简图&#xff1a;Appium 架构简图&#xff1a; 四、使用场景分析五、优缺点总结UiAutomator2 优点&#xff1a;UiAutomator2 缺点&#xff1a;Appium 优点&#xff1a;Appium 缺点&#xff1a; …

缺失的第一个正整数

继续每日一题 今天给大家带来一道将数组视为哈希表的算法 题目描述&#xff1a; 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 题目示例&#xff1a; 由于题目要求…

单例模式-Python示例

单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是设计模式中一种创建型模式&#xff0c;广泛应用于软件开发中。一以下以故事化的方式&#xff0c;结合详细的技术讲解&#xff0c;介绍单例模式的背景、定义、适用场景&#xff0c;并提供python的示例代码。 故事…

啥是 SaaS

https://www.youtube.com/watch?vnpcL7oRZQlI这个视频讲了什么东西&#xff0c; 什么 idea?好的&#xff0c;这个视频内容非常棒&#xff0c;信息量很足。下面为你详细总结视频讲了什么&#xff0c;以及核心的 Idea 是什么。 视频核心 Idea 这个视频讲的是一位名叫 Leandro…