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
英文地址,請注明出處:http://en.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…