Python+AI提示詞用貝葉斯樣條回歸擬合BSF方法分析櫻花花期數據模型構建跡圖、森林圖可視化

原文鏈接:https://tecdat.cn/?p=41308

在數據科學的領域中,我們常常會遇到需要處理復雜關系的數據。在眾多的數據分析方法中,樣條擬合是一種非常有效的處理數據非線性關系的手段。本專題合集圍繞如何使用PyMC軟件,對櫻花花期數據進行樣條擬合分析展開了一系列深入的探討點擊文末“閱讀原文”獲取完整代碼、數據、文檔)。

本專題合集涵蓋了從數據的獲取、清洗,到模型的構建、擬合,再到模型結果的分析和新數據預測等多個關鍵環節。數據方面,我們使用了記錄每年櫻花樹開花天數(“一年中的天數”即doy)和年份(year)的櫻花花期數據。在數據處理時,為了方便,我們剔除了缺失開花天數數據的年份(但一般來說,這并不是處理缺失數據的好方法)。

在模型構建部分,我們構建了一個基于正態分布的模型來描述櫻花花期天數的變化。模型中,開花天數D被建模為均值為μ、標準差為σ的正態分布,而均值μ又是由截距a和由基函數B與模型參數w的乘積組成的線性模型。

在模型擬合完成后,我們對模型的后驗抽樣結果進行了詳細分析,包括參數估計、模型預測等方面。最后,我們還探討了如何使用該模型對新數據進行預測,盡管樣條擬合方法在處理超出原始數據范圍的數據時存在一定的局限性。

本文代碼數據已分享在交流社群,閱讀原文進群和500+行業人士共同交流和成長。希望本專題合集的內容能夠為數據科學領域的從業者和愛好者提供有價值的參考,幫助大家更好地理解和應用樣條擬合方法,解決實際數據分析中的問題。

數據準備

  1. AI提示詞:使用Python語言,通過pandas庫讀取存儲櫻花花期數據的CSV文件,若文件不存在則從指定位置讀取,然后對數據進行缺失值處理并查看數據基本描述信息

from?pathlb iport?Path
import?padas?as?pd
trycherry\_blossom\_ata = pd.read_csv(Pth(".",?"data"cm.csv"), sep=";")

經過缺失值處理后,數據集中包含了827個年份的櫻花開花天數信息。從數據的可視化散點圖中可以看出,雖然每年的開花天數存在很大的變化,但隨著時間的推移,開花天數呈現出一定的非線性趨勢。

print(cherry\_blossom\_data.head(n=10))

模型構建

  1. AI提示詞:使用PyMC庫構建一個基于正態分布的模型,定義模型的參數,包括截距a、參數w、標準差sigma等,并確定它們的先驗分布

COORDS = {"splines": np.arange(B.shape\[1\])}
with?pm.Model

在這個模型中,我們使用了15個節點將年份數據分成了16個部分,并使用patsy庫創建了三次樣條基矩陣B。

B = dmatrix(

下面是樣條基的繪圖,顯示了樣條每一段的“域”。每條曲線的高度表示相應的模型協變量(每個樣條區域一個)對該區域模型推斷的影響程度。重疊區域表示節點,顯示了從一個區域到下一個區域的平滑過渡是如何形成的。

color = plt.cm.magma(np.linspace(0,?0.80,?len(spline\_df.spline\_i.unique())))


點擊標題查閱往期內容

Python用PyMC3實現貝葉斯線性回歸模型

左右滑動查看更多

01

圖片

02

圖片

03

圖片

04

模型擬合

  1. AI提示詞:使用PyMC庫對構建好的模型進行抽樣,獲取先驗預測值、后驗預測值,設置抽樣的相關參數如抽樣次數、調優次數、鏈的數量等

idata = pm.sample\_prior\_predictive()

通過模型擬合,我們可以得到模型參數的后驗分布,并對模型的收斂性進行檢查。

print("Sampling: \[D\]")

模型分析

  1. AI提示詞:使用arviz庫對模型后驗抽樣結果idata進行分析,計算模型參數a、w、sigma的摘要信息,包括均值、標準差、有效樣本大小等

從參數估計的結果來看,截距a和標準差σ的后驗分布比較窄,而參數w的后驗分布較寬。這可能是因為估計a和σ時使用了所有的數據點,而估計每個w值時只使用了部分數據。


  1. AI提示詞:使用arviz庫繪制模型參數a、w、sigma的跡圖,觀察參數的收斂情況和分布特征

az.plot\_trace(idata,?var\_names=\["a",?"w",?"sigma"\]);

跡圖顯示模型的鏈已經收斂,并且沒有明顯的趨勢,進一步表明模型已經很好地從后驗分布中抽樣。

另一種可視化擬合樣條值的方法是繪制它們與基矩陣的乘積。節點邊界再次顯示為垂直線,但現在樣條基與w的值相乘(表示為彩虹色曲線)。B和w的點積——線性模型中的實際計算——以黑色顯示。

pd.DataFrame(B?* wp.T)

模型預測

  1. AI提示詞:根據模型后驗抽樣結果idata,計算模型預測值的均值、最高密度區間(HDI)的下限和上限,并將預測值添加到原始數據中

post\_pred?=?az.summary(idata, var\_names=\["mu"\]).reset_index(drop=True)

通過可視化模型預測結果,我們可以看到模型在原始數據上的擬合效果。

for knot in knot_list:?
plt.gca().axvline(knot, color="grey", alpha=0.4)

新數據預測

  1. AI提示詞:使用PyMC庫重新定義模型,添加Data容器,將原始數據中的年份和開花天數作為Data變量,設置模型的坐標信息,構建樣條基矩陣等

year\_data?=?pm.Data("year", cherry\_blossom_data.year)w?=?pm.Normal("w", mu=0, sigma=3, dims="spline")

idata = pm.sample(nuts_sampler="nutpie",

現在我們可以替換數據并使用新數據更新設計矩陣:

cherry\_blossom\_data.sample(50,

使用set_data更新模型中的數據:

new_data={"year": year\_data\_new,

而剩下的就是從后驗預測分布中進行抽樣:

pm.sample\_posterior\_predictive(idata, var_names=\["mu"\])

繪制預測結果,以檢查是否一切正常:

cherry\_blossom\_data.plot.scatter("year","doy",

結論

通過本專題合集的研究,我們詳細地展示了如何使用PyMC軟件對櫻花花期數據進行樣條擬合分析。從數據的獲取和處理,到模型的構建、擬合、分析以及新數據預測,每個環節都進行了深入的探討。
在數據準備階段,我們對原始的櫻花花期數據進行了清洗,剔除了缺失值,為后續的分析奠定了基礎。模型構建時,基于正態分布建立了合理的模型結構,引入了樣條擬合的方法來捕捉數據中的非線性關系。通過精心設置模型參數的先驗分布,使得模型更加合理可靠。
在模型擬合過程中,利用PyMC強大的抽樣功能,獲取了模型參數的后驗分布。通過對后驗分布的分析,我們發現模型參數的估計結果符合預期,并且模型的收斂性良好,鏈已經充分混合,這表明我們的模型能夠較好地擬合數據。
在模型分析方面,通過對參數估計的詳細解讀,我們了解了每個參數在模型中的作用和影響。同時,通過繪制各種可視化圖形,如跡圖、森林圖等,直觀地展示了模型的性能和參數的分布情況。模型預測部分,我們不僅對原始數據進行了預測,還展示了如何使用模型對新數據進行預測,盡管樣條擬合方法存在不能外推到原始數據范圍之外的局限性,但在已知數據范圍內,模型能夠給出較為準確的預測結果。
本專題合集的研究成果對于理解和應用樣條擬合方法具有重要的參考價值,希望能夠為相關領域的研究和實踐提供有益的指導,幫助數據科學領域的從業者和愛好者更好地應用數據分析方法解決實際問題,同時也為進一步探索和改進數據分析方法提供了思路。

本文中分析的完整數據、代碼、文檔分享到會員群,掃描下面二維碼即可加群!?


資料獲取

在公眾號后臺回復“領資料”,可免費獲取數據分析、機器學習、深度學習等學習資料。

點擊文末“閱讀原文”

獲取完整代碼、數據、文檔。

本文選自《Python+AI提示詞用貝葉斯樣條回歸擬合BSF方法分析櫻花花期數據模型構建跡圖、森林圖可視化》。

點擊標題查閱往期內容

R語言用WinBUGS 軟件對學術能力測驗建立層次(分層)貝葉斯模型

R語言Gibbs抽樣的貝葉斯簡單線性回歸仿真分析

R語言和STAN,JAGS:用RSTAN,RJAG建立貝葉斯多元線性回歸預測選舉數據

R語言基于copula的貝葉斯分層混合模型的診斷準確性研究

R語言貝葉斯線性回歸和多元線性回歸構建工資預測模型

R語言貝葉斯推斷與MCMC:實現Metropolis-Hastings 采樣算法示例

R語言stan進行基于貝葉斯推斷的回歸模型

R語言中RStan貝葉斯層次模型分析示例

R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型

R語言使用Metropolis-Hastings采樣算法自適應貝葉斯估計與可視化

WinBUGS對多元隨機波動率模型:貝葉斯估計與模型比較

視頻:R語言中的Stan概率編程MCMC采樣的貝葉斯模型

R語言RStan貝葉斯示例:重復試驗模型和種群競爭模型Lotka Volterra

R語言MCMC:Metropolis-Hastings采樣用于回歸的貝葉斯估計

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899921.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF學習路線

WPF學習路線 學習準備學習技術棧學習路線 1-5(1-2周)6-8(3-5周) 學習準備 個人認為前端技術一般幾個關鍵字:元素資源 控制元素資源組合或者動態交互 數據交互呈現分析關鍵字得到的就是幾個方向 布局 樣式 組裝資源控件…

31天Python入門——第20天:魔法方法詳解

你好,我是安然無虞。 文章目錄 魔法方法1. __new__和__del__2. __repr__和__len__3. __enter__和__exit__4. 可迭代對象和迭代器5. 中括號[]數據操作6. __getattr__、__setattr__ 和 __delattr__7. 可調用的8. 運算符 魔法方法 魔法方法: Python中的魔法方法是一類…

棧 —— 數據結構基礎刷題路程

一、P1739 表達式括號匹配 - 洛谷 算法代碼&#xff1a; #include<bits/stdc.h> using namespace std; const int N300008; struct mystack {int a[N];int t-1;//壓棧void push(int data){a[t]data; } //取棧頂元素int top(){return a[t]; } //彈出棧頂元素void pop(){i…

瑞昱RTD2556QR顯示器驅動芯片

一、概述 RTD2556QR芯片是由Realtek公司精心研發的一款高性能顯示驅動芯片&#xff0c;專為滿足現代顯示設備對高分辨率、多功能接口及穩定性能的需求而設計。該芯片憑借其卓越的技術特性和廣泛的應用領域&#xff0c;在顯示驅動市場中占據重要地位。它集成了多種先進的功能模…

PyQt5和OpenCV車牌識別系統

有需要請加文章底部Q哦 可遠程調試 PyQt5和OpenCV車牌識別系統 一 介紹 此車牌識別系統基于PyQt5和OpenCV開發&#xff0c;藍牌&#xff0c;新能源(綠牌)&#xff0c;黃牌&#xff0c;白牌均可以準確識別&#xff0c;支持中文識別&#xff0c;可以導出識別結果(Excel格式)。此…

學有所記- 探索FastAPI在docker上的部署

目標&#xff1a; 學習怎樣在docker中安裝部署FastAPI&#xff0c;完成項目結構的搭建以及hello world的運行 背景&#xff1a; 公司內服務器資源有限&#xff0c;為了共享算力資源&#xff0c;同時又能隔離運行環境&#xff0c;因此采用了docker部署的方式&#xff0c;進行各…

HTTP keepalive 詳解

一、簡介 HTTP協議早期版本&#xff0c;比如1.0&#xff0c;默認是不使用持久連接的&#xff0c;也就是每個請求/響應之后都會關閉TCP連接。這樣的話&#xff0c;每次請求都需要重新建立連接&#xff0c;增加了延遲和資源消耗。Keep-Alive的作用是保持連接&#xff0c;讓多個請…

長短期記憶神經網絡(LSTM)基礎學習與實例:預測序列的未來

目錄 1. 前言 2. LSTM的基本原理 2.1 LSTM基本結構 2.2 LSTM的計算過程 3. LSTM實例&#xff1a;預測序列的未來 3.1 數據準備 3.2 模型構建 3.3 模型訓練 3.4 模型預測 3.5 完整程序預測序列的未來 4. 總結 1. 前言 在深度學習領域&#xff0c;循環神經網絡&…

基于機器學習的三國時期諸葛亮北伐失敗因素量化分析

一、研究背景與方法論 1.1 歷史問題的數據化挑戰 三國時期&#xff08;220-280年&#xff09;的戰爭史存在史料分散、數據缺失的特點。本研究通過構建包含軍事、經濟、地理、政治四大維度的結構化數據庫&#xff0c;收錄建安十二年&#xff08;207年&#xff09;至建興十二年…

藍橋杯省模擬賽 數位和

問題描述 只能被 1 和本身整除的數稱為質數。 請問在 1 &#xff08;含&#xff09;到 1000000 &#xff08;含&#xff09;中&#xff0c;有多少個質數的各個數位上的數字之和為 23 。 提示&#xff1a;599 就是這樣一個質數&#xff0c;各個數位上的數字之和為 59923 。 #…

Timer的底層實現原理?

Timer 是 Java 中用于定時任務調度的基礎工具類,其底層實現基于 單線程+任務隊列 的模型。以下是 Timer 的底層實現原理的詳細分析: 一、核心組件 TimerThread 繼承自 Thread,是 Timer 的工作線程,負責從隊列中提取任務并執行。通過 while (true) 循環持續檢查任務隊列。Ta…

Java 枚舉類 Key-Value 映射的幾種實現方式及最佳實踐

Java 枚舉類 Key-Value 映射的幾種實現方式及最佳實踐 前言 在 Java 開發中&#xff0c;枚舉(Enum)是一種特殊的類&#xff0c;它能夠定義一組固定的常量。在實際應用中&#xff0c;我們經常需要為枚舉常量添加額外的屬性&#xff0c;并實現 key-value 的映射關系。本文將詳細…

青少年編程與數學 02-015 大學數學知識點 01課題、概要

青少年編程與數學 02-015 大學數學知識點 01課題、概要 一、線性代數二、概率論與數理統計三、微積分四、優化理論五、離散數學六、數值分析七、信息論 《青少年編程與數學》課程要求&#xff0c;在高中畢業前&#xff0c;盡量完成大部分大學數學知識的學習。一般可以通過線上課…

智能打印預約系統:微信小程序+SSM框架實戰項目

微信小程序打印室預約系統&#xff0c;采用SSM&#xff08;SpringSpringMVCMyBatis&#xff09;經典框架組合。 一、系統核心功能詳解 1. 智能化管理后臺 ?用戶數據看板?打印店資源管理?預約動態監控?服務評價系統 2. 微信小程序端 ?智能定位服務?預約時段選擇?文件…

DataX 3.0 實戰案例

第五章 實戰案例 5.1. 案例一 5.1.1. 案例介紹 MySQL數據庫中有兩張表&#xff1a;用戶表(users)&#xff0c;訂單表(orders)。其中用戶表中存儲的是所有的用戶的信息&#xff0c;訂單表中存儲的是所有的訂單的信息。表結構如下&#xff1a; 用戶表 users: id&#xff1a;用…

設計模式學習(1)

面向對象設計原則 單一職責 每個類只有一個職責&#xff0c;并被完整的封裝在類中&#xff0c;該原則用來控制類的粒度。 例如Mapper&#xff0c;controller都只負責一個業務。 開閉原則 應該對擴展開放&#xff0c;而對修改封閉&#xff0c;例如定義接口或是抽象類作為抽…

在 Rocky Linux 9.2 上編譯安裝 Redis 6.2.6

文章目錄 在 Rocky Linux 9.2 上編譯安裝 Redis 6.2.6Redis 介紹官網Redis 的核心特性高性能支持多種數據結構多種持久化機制復制與高可用2.5 事務與 Lua 腳本消息隊列功能 Redis 適用場景Redis 與其他數據庫對比Redis 的優勢與劣勢Redis 優勢Redis 劣勢 部署過程系統環境信息環…

量子計算與經典計算的融合與未來

最近研學過程中發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊下方超鏈接跳轉到網站人工智能及編程語言學習教程。讀者們可以通過里面的文章詳細了解一下人工智能及其編程等教程和學習方法。下面進入文章正…

數據結構(4)——帶哨兵位循環雙向鏈表

目錄 前言 一、帶哨兵的循環雙向鏈表是什么 二、鏈表的實現 2.1規定結構體 2.2創建節點 2.3初始化 2.4打印 2.5檢驗是否為空 2.6銷毀鏈表 2.7尾插 2.8尾刪 2.9頭插 2.10頭刪 2.11尋找特定節點 2.12任意位置插入&#xff08;pos前&#xff09; 2.13刪除任意節點 …

Github 2025-03-30 php開源項目日報 Top10

根據Github Trendings的統計,今日(2025-03-30統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量PHP項目10TypeScript項目1Coolify: 開源自助云平臺 創建周期:1112 天開發語言:PHP, Blade協議類型:Apache License 2.0Star數量:10527 個Fo…