從0開始學習R語言--Day64--決策樹回歸

對于沒有特征或者說需要尋找另類關系的數據集,我們通常會用聚合或KNN近鄰的方法來分類,但這樣的分類或許在結果上是好的,但是解釋性并不好,有時候我們甚至能看到好的結果反直覺;而決策樹回歸做出的結果,由于其樹的結構,我們能看到每一步的決策,也就能推測出樹這么做的原因,還能進一步地調整樹的深度,使得結果更好。

以下是一個例子:

#?加載必要的包
library(rpart)??????#?決策樹
library(rpart.plot)?#?可視化樹#?1.?生成模擬數據集(非線性關系)
set.seed(123)
n?<-?200
x?<-?runif(n,?0,?10)??????????#?特征x:0到10的隨機數
y?<-?sin(x)?+?rnorm(n,?0,?0.3)?#?目標y:sin(x)加噪聲
data?<-?data.frame(x,?y)#?2.?劃分訓練集和測試集
train_idx?<-?sample(1:n,?0.7?*?n)
train_data?<-?data[train_idx,?]
test_data?<-?data[-train_idx,?]#?3.?訓練決策樹回歸模型
tree_model?<-?rpart(y?~?x,?data?=?train_data,?method?=?"anova",??#?回歸任務control?=?rpart.control(maxdepth?=?3))?#?限制樹深度#?4.?可視化樹結構
rpart.plot(tree_model,?main?=?"決策樹回歸")#?5.?預測并計算誤差
predictions?<-?predict(tree_model,?test_data)
mse?<-?mean((predictions?-?test_data$y)^2)
cat("測試集均方誤差(MSE):",?round(mse,?3),?"\n")#?6.?繪制真實值與預測值對比
plot(test_data$x,?test_data$y,?col?=?"blue",?pch?=?19,?main?=?"真實值?vs?預測值",?xlab?=?"x",?ylab?=?"y")
points(test_data$x,?predictions,?col?=?"red",?pch?=?4)
legend("topright",?legend?=?c("真實值",?"預測值"),?col?=?c("blue",?"red"),?pch?=?c(19,?4))

輸出:

可以看到圖中的決策樹對于每一步的分支,都能看到分離之后兩邊的方差變化;而分布圖則表明決策樹對于波動較大的數據分布很難捕捉到趨勢,很容易出現欠擬合的現象,但是由于其可以根據結果反推進一步調參,反而能加深其結果的解釋性。

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

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

相關文章

B+樹高效實現與優化技巧

B樹的定義 一顆M階B樹T,滿足以下條件 每個結點至多擁有M課子樹 根結點至少擁有兩顆子樹 除了根結點以外,其余每個分支結點至少擁有M/2課子樹 所有的葉結點都在同一層上 有k棵子樹的分支結點則存在k-1個關鍵字,關鍵字按照遞增順序進行排序 關鍵字數量滿足 ceil( M/2 ) - 1 &…

Android 基礎入門學習目錄(持續更新)

四大組件 Activity&#xff1a; Service&#xff1a; BroadcastReceiver&#xff1a; ContentProvider&#xff1a; UI 與交互開發 常見的UI布局和UI控件 樣式與主題 Fragment Intent 數據存儲 自定義View和自定義Group 自定義View 自定義ViewGroup 事件分發 Key…

Linux移動大量文件命令

背景 使用 mv 命令報“/bin/mv: 參數列表過長”&#xff0c;也是第一遇到&#xff0c;查了一下&#xff0c;最后用rsync命令解決了。還好每臺服務器&#xff0c;都必裝rsync了&#xff0c;記錄如下。 命令 nohup rsync -av --remove-source-files --progress /public/tmp/video…

SQL中的HAVING用法

HAVING 是 SQL 中專門對 “分組之后的聚合結果” 再做篩選的子句。 它一般跟在 GROUP BY 后面&#xff0c;不能單獨使用&#xff0c;作用類似于分組版的 WHERE。? 1. 語法位置 SELECT 列1, 聚合函數(列2) AS 別名 FROM 表 GROUP BY 列1 HAVING 聚合條件; -- 這里寫對聚合…

【Halcon 】Halcon 實戰:如何為 XLD 模板添加極性信息以提升匹配精度?

Halcon 實戰&#xff1a;如何為 XLD 模板添加極性信息以提升匹配精度&#xff1f; 在使用 Halcon 進行模板匹配時&#xff0c;我們通常有兩種方式創建模板&#xff1a; 基于圖像灰度&#xff08;CreateScaledShapeModel&#xff09;基于輪廓 XLD&#xff08;CreateScaledShapeM…

grafana/lock-stack 日志 Pipeline 配置

前言 本文使用的是 grafana/loki-stack chart 抓取的 k8s 日志。其他 chart 配置都差不多。 日志問題 docker 容器運行時 pod 內原始日志 [cpu-4] Hello, 第 9788 次報時&#xff0c;時間&#xff1a;2025-08-01T06:35:420000 {"HOSTNAME":"cpu-4",&qu…

appium2.0+之PointerActions詳解

以下內容在 夜神模擬器 上進行。 一、應用場景 一些針對手勢的操作&#xff0c;比如滑動、長按、拖動等。可以將這些基本手勢組合成一個相對復雜的手勢。 二、使用步驟創建觸摸輸入設備&#xff08;模擬手指操作&#xff09; touch_input PointerInput(interaction.POINTER_TO…

Java HTTPS 請求失敗排查與證書導入全過程

文章目錄Java HTTPS 請求失敗排查與證書導入全過程問題背景問題初步分析排查過程查看目標地址證書導入證書驗證證書是否導入成功重啟應用進一步驗證&#xff1a;是否真的是證書問題&#xff1f;1. 瀏覽器訪問2. 抓包工具驗證&#xff08;如 Charles、Wireshark&#xff09;補充…

android APT技術

1&#xff0c;背景 對于注解的使用&#xff0c;想必大家都不陌生&#xff0c;它出現在我們的源碼中&#xff0c;以及大部分框架中&#xff0c;比如ButterKnife、Arouter、Retrofit&#xff0c;但它們是有區別的&#xff0c;其中前2個是編譯時注解&#xff0c;最后一個是運行時注…

MySQL 和 PostgreSQL綜合比對分析匯總

面對大數據項目或其它類型項目中&#xff0c;面對關系型數據庫選擇一直是很總要的一點&#xff0c;本文針對MySQL 和 PostgreSQL進行綜合比對分析匯總&#xff0c;內容僅供參考。MySQL 和 PostgreSQL 是兩款主流的開源關系型數據庫&#xff08;RDBMS&#xff09;&#xff0c;但…

Linux---make和makefile

一、基本概念1.是什么make是一條命令&#xff0c;makefile是一個文件2.對應在vs中按一下f5就能運行代碼&#xff0c;在Linux中make就相當于f5&#xff0c;使用makefile來封裝從而實現我&#xff0c; 想要的功能3.使用①創建makefile文件②編輯makefile解釋&#xff1a;test.exe…

【DAB收音機】DAB收音機協議及其他資料匯總

目錄[ETSI DAB標準協議文檔](https://www.etsi.org/standards)Other DAB資料DAB收音機相關的專利DAB收音機相關的期刊及學位論文DAB開源項目代碼倉庫qt-dab工具welle.io工具dablin工具【eti廣播工具】?? 項目對比與選型建議Other 收音機資料Other資料ETSI DAB標準協議文檔 官…

RabbitMQ的特點和消息可靠性保障

掌握RabbitMQ的核心知識&#xff0c;需從其特點和消息可靠性保障&#xff08;尤其是消息丟失解決方案&#xff09;兩方面入手&#xff0c;以下是詳細說明&#xff1a; 一、RabbitMQ的核心特點 RabbitMQ是基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;協議…

項目升級啦

公司要新做一個醫療行業的業務&#xff0c;經過業務端和產品端的評估該業務與公司已有的產品線關聯不大&#xff0c;用戶后續也不想在老系統那臺老爺車上繼續使用&#xff0c;話說老系統到現在差不多10年了&#xff0c;中間經歷過的前后端開發者形形色色&#xff0c;維護者換了…

Android中頁面生命周期變化

一、Activity切換的生命周期變化&#xff08;A啟動B&#xff09;1. 標準流程&#xff08;B完全覆蓋A&#xff09;完整生命周期路徑&#xff1a;Activity A&#xff1a;onPause()&#xff1a;失去焦點&#xff0c;仍部分可見onStop()&#xff1a;完全不可見&#xff08;當B完全覆…

自動駕駛控制算法——PID算法

自動駕駛控制算法——PID算法 文章目錄自動駕駛控制算法——PID算法一、PID 是什么&#xff1f;二、PID 原理2.1 **比例環節&#xff08;P&#xff09;**2.2 **積分環節&#xff08;I&#xff09;**2.3 **微分環節&#xff08;D&#xff09;**2.4 特點總結2.5 案例分析 —— 小…

Spring Boot 異步執行方式全解析:@Async、CompletableFuture 與 TaskExecutor 對比

在 Spring Boot 開發中&#xff0c;異步執行是提升系統性能的重要手段&#xff0c;尤其適用于處理耗時操作&#xff08;如日志記錄、郵件發送、數據同步等&#xff09;。本文將深入對比 Spring Boot 中三種主流的異步實現方式 ——Async注解、手動CompletableFuture和直接使用T…

高效微調2:Prompt-Tuning原理與實戰

高效微調2:Prompt-Tuning原理與實戰 Prompt-Tuning原理介紹 代碼 Prompt-Tuning原理介紹 Prompt-Tuning Prompt-Tuning的思想:凍結主模型全部參數,在訓練數據前加入一小段Prompt,只訓練Prompt的表示層,即一個Embedding模塊。其中,Prompt.又存在兩種形式,一種是hard promp…

使用BART模型和T5模型實現文本改寫

BART模型BART&#xff08;Bidirectional and Auto-Regressive Transformers&#xff09;是由 Facebook AI Research&#xff08;FAIR&#xff09;在 2019 年提出的序列到序列&#xff08;seq2seq&#xff09;預訓練模型&#xff0c;論文發表于《BART: Denoising Sequence-to-Se…

電商前端Nginx訪問日志收集分析實戰

使用FileBeatLogstashES實現分布式日志收集 在大型項目中 &#xff0c;往往服務都是分布在非常多不同的機器上 &#xff0c;每個機器都會打印自己的log日志 但是 &#xff0c;這樣分散的日志 &#xff0c;本來就無法進行整體分析。再加上微服務的負載均衡體系 &#xff0c;甚至…