機器學習 集成學習方法之隨機森林

集成學習方法之隨機森林

  • 1 集成學習
  • 2 隨機森林的算法原理
    • 2.1 Sklearn API
    • 2.2 示例

1 集成學習

機器學習中有一種大類叫集成學習(Ensemble Learning),集成學習的基本思想就是將多個分類器組合,從而實現一個預測效果更好的集成分類器。集成算法可以說從一方面驗證了中國的一句老話:三個臭皮匠,賽過諸葛亮。集成算法大致可以分為:Bagging,Boosting 和 Stacking 三大類型。

(1)每次有放回地從訓練集中取出 n 個訓練樣本,組成新的訓練集;

(2)利用新的訓練集,訓練得到M個子模型;

(3)對于分類問題,采用投票的方法,得票最多子模型的分類類別為最終的類別;

2 隨機森林的算法原理

隨機森林就屬于集成學習,是通過構建一個包含多個決策樹(通常稱為基學習器或弱學習器)的森林, 每棵樹都在不同的數據子集和特征子集上進行訓練,最終通過投票或平均預測結果來產生更準確和穩健的預測。這種方法不僅提高了預測精度,也降低了過擬合風險,并且能夠處理高維度和大規模數據集

在這里插入圖片描述
特點:

  • 隨機: 特征隨機,訓練集隨機
    • 樣本:對于一個總體訓練集T,T中共有N個樣本,每次有放回地隨機選擇n個樣本。用這n個樣本來訓練一個決策樹。
    • 特征:假設訓練集的特征個數為d,每次僅選擇k(k<d)個來構建決策樹。
  • 森林: 多個決策樹分類器構成的分類器, 因為隨機,所以可以生成多個決策樹
  • 處理具有高維特征的輸入樣本,而且不需要降維
  • 使用平均或者投票來提高預測精度和控制過擬合
    在這里插入圖片描述

2.1 Sklearn API

class sklearn.ensemble.RandomForestClassifier參數:
n_estimators	int, default=100
森林中樹木的數量。(決策樹個數)criterion	{“gini”, “entropy”}, default=”gini” 決策樹屬性劃分算法選擇當criterion取值為“gini”時采用 基尼不純度(Gini impurity)算法構造決策樹,當criterion取值為 “entropy” 時采用信息增益( information gain)算法構造決策樹.max_depth	int, default=None 樹的最大深度。 

2.2 示例

坦尼克號乘客生存
代碼如下:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.feature_extraction import DictVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
import joblib
def train():# 數據集加載titanic=pd.read_csv(r"..\22day4.25機器學習\src\titanic\titanic.csv")# 數據集處理#獲取關鍵特征titanic=titanic[['age','pclass','sex','survived']]# 將其中的缺省值賦值為這個列的平均值titanic["age"].fillna(titanic["age"].mean(),inplace=True)# 獲取特征值和目標值x=titanic[['age','pclass','sex']]y=titanic[['survived']].to_numpy()# 將x轉化為字典x=x.to_dict(orient='records')# 字典向量化vac=DictVectorizer(sparse=True)x=vac.fit_transform(x).toarray()# 劃分數據集x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=22,shuffle=True)# 標準化transfer=StandardScaler()x_train=transfer.fit_transform(x_train)x_test=transfer.transform(x_train)print(x_test.shape,y_test.shape)# 模型建立model=RandomForestClassifier(n_estimators=10,max_depth=4)# 訓練模型model.fit(x_train,y_train)# 模型評估score=model.score(x_test,y_test)print(score)# 保存模型joblib.dump(model,r"..\23day5.8\src\model\rf.pkl")joblib.dump(transfer,r"..\23day5.8\src\model\rf_transfer.pkl")joblib.dump(vac,r"..\23day5.8\src\model\rf_vac.pkl")
def detect():model=joblib.load(r"..\23day5.8\src\model\rf.pkl")transfer=joblib.load(r"..\23day5.8\src\model\rf_transfer.pkl")vac=joblib.load(r"..\23day5.8\src\model\rf_vac.pkl")x_test=[{'age':24,'pclass':'1st','sex':"male"}]x_test=vac.transform(x_test).toarray()# print(x_test)x_test=transfer.transform(x_test)prd=model.predict(x_test)print(prd)
if __name__=="__main__":train()# predict()detect()

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

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

相關文章

thinkphp6實現統一監聽并記錄所有執行的sql語句除查詢外

創建文件app/middleware/SqlLogger.php <?php namespace app\middleware;use think\facade\Db; use think\facade\Session;class SqlLogger {public function handle($request, \Closure $next){// 監聽所有SQL $request->ip()Db::listen(function($sql, $time) {if (p…

pytorch訓練可視化工具---TensorBoard

一、目的&#xff1a;為什么使用 TensorBoard 調控模型 使用 TensorBoard 可以幫我們&#xff1a; 實時查看 loss / acc 曲線 → 判斷是否過擬合、欠擬合&#xff1b; 對比不同模型或超參數的效果&#xff1b; 可視化模型結構 → 幫助調試模型設計&#xff1b; 查看權重/梯…

機器學習知識自然語言處理入門

一、引言&#xff1a;當文字遇上數學 —— 自然語言的數字化革命 在自然語言處理&#xff08;NLP&#xff09;的世界里&#xff0c;計算機要理解人類語言&#xff0c;首先需要將文字轉化為數學向量。早期的 One-Hot 編碼如同給每個詞語分配一個唯一的 “房間號”&#xff0c;例…

Linux-線程概念和控制

1.Linux線程概念 1.1什么是線程 ? 在?個程序?的?個執?路線就叫做線程&#xff08;thread&#xff09;。更準確的定義是&#xff1a;線程是“?個進程內部 的控制序列” ? ?切進程?少都有?個執?線程 ? 線程在進程內部運?&#xff0c;本質是在進程地址空間內運?…

【氮化鎵】低劑量率對GaN HEMT柵極漏電的影響

2024 年 2 月 22 日,中國科學院新疆理化技術研究所的Li等人在《IEEE ACCESS》期刊發表了題為《Degradation Mechanisms of Gate Leakage in GaN-Based HEMTs at Low Dose Rate Irradiation》的文章,基于實驗分析和 TCAD 仿真,研究了低劑量率輻照下基于 GaN 的 p 型柵高電子遷…

.NET Core 中 Swagger 配置詳解:常用配置與實戰技巧

隨著微服務架構和 RESTful API 的廣泛應用&#xff0c;API 文檔的管理和自動化生成成為了開發中的重要部分。Swagger&#xff08;現為 OpenAPI&#xff09;是一款功能強大的工具&#xff0c;它可以自動生成 API 文檔&#xff0c;并提供交互式 UI&#xff0c;幫助開發者、測試人…

海康工業相機白平衡比選擇器對應的值被重置后,如何恢復原成像

做項目的時候&#xff0c;有時候手抖&#xff0c;一不小心把一個成熟穩定的項目的相機配置&#xff0c;重置了&#xff0c;如何進行恢復呢&#xff0c;在不知道之前配置數據的情況下。 我在做項目的時候&#xff0c;為了讓這個相機成像穩定一點&#xff0c;尤其是做顏色檢測時…

【八股戰神篇】Java虛擬機(JVM)高頻面試題

目錄 專欄簡介 一 請解釋Java虛擬機(JVM)及其主要功能 延伸 1. JVM的基本概念 2. JVM的主要功能 二 對象創建的過程了解嗎 延伸 1.Java 創建對象的四種常見方式 三 什么是雙親委派模型 延伸 1.雙親委派機制的作用: 2.雙親委派模型的核心思想: 3.雙親委派模型的…

win10 上刪除文件夾失敗的一個原因:sqlYog 備份/導出關聯了該文件夾

在嘗試刪除路徑為.../bak/sql的文件時&#xff0c;系統提示無權限操作。然而&#xff0c;關閉SQLyog后&#xff0c;刪除操作成功完成。這表明SQLyog可能正在占用該文件&#xff0c;導致刪除權限受限。關閉SQLyog后&#xff0c;文件被釋放&#xff0c;刪除操作得以順利進行。建議…

Oracle中如何解決LATCH:CACHE BUFFERS LRU CHAIN

簡單來講&#xff0c;Oracle為了高效管理BUFFER CACHE主要使用以下2種LRU列&#xff1a; ?LRU列&#xff0c;又叫替換列&#xff08;replacement list&#xff09;&#xff0c;其中又分為主列和輔助列。 主列&#xff1a;已使用的緩沖區列&#xff0c;分為HOT和COLD區域。HOT區…

C++:迭代器

迭代器的本質&#xff1a;對象。 迭代器與指針類似&#xff0c;通過迭代器可以指向容器中的某個元素&#xff0c;還可以對元素進行操作。 迭代器統一規范了遍歷方式。不同的數據結構可以用統一的方式去遍歷。 接下來是一個自定義迭代器的代碼示例。 #include<iostream&g…

(4)Java虛擬線程與傳統線程對比

虛擬線程與傳統線程對比 &#x1f504; &#x1f4cb; 核心問題 Project Loom的虛擬線程與傳統線程在資源消耗上有何區別&#xff1f;如何設計一個支持百萬級并發的服務&#xff1f; &#x1f4ca; 資源消耗比較 &#x1f418; 傳統線程 &#x1f4cf; 每線程約1MB棧空間&am…

Java 單元測試框架比較:JUnit、TestNG 哪個更適合你?

Java 單元測試框架比較&#xff1a;JUnit、TestNG 哪個更適合你&#xff1f; 在 Java 開發領域&#xff0c;單元測試是保證代碼質量的重要環節。而選擇一個合適的單元測試框架&#xff0c;對于提升測試效率和代碼可靠性至關重要。本文將深入比較 JUnit 和 TestNG 這兩個主流的…

從零開始的抽獎系統創作(2)

我們接著進行抽獎系統的完善。 前面我們完成了 1.結構初始化&#xff08;統一結果返回之類的&#xff0c;還有包的分類&#xff09; 2.加密&#xff08;基于Hutool進行的對稱與非對稱加密&#xff09; 3.用戶注冊 接下來我們先完善一下結構&#xff08;統一異常處理&#…

【vs2022的C#窗體項目】打開運行+sql Server改為mysql數據庫+發布

1. vs2022打開運行原sql Server的C#窗體項目更改為mysql數據庫 1.1. vs2022安裝基礎模塊即可 安裝1??vs核心編輯器2??.net桌面開發必選&#xff0c;可選均不安裝&#xff01;&#xff01;&#xff01; 為了成功連接mysql數據庫&#xff0c;需要安裝組件NuGet包管理器 安…

AI 編程 “幻覺” 風險頻發?飛算 JavaAI 硬核技術筑牢安全防線

AI 技術已深度融入編程領域&#xff0c;為開發者帶來前所未有的便利與效率提升。然而&#xff0c;AI 編程 “幻覺” 問題如影隨形&#xff0c;頻頻引發困擾&#xff0c;成為阻礙行業穩健發展的潛在風險。飛算 JavaAI 憑借一系列硬核技術&#xff0c;強勢出擊&#xff0c;為攻克…

數據庫----軟考中級軟件設計師(自用學習筆記)

目錄 1、E-R圖 2、結構數據模型 3、數據庫的三級模式結構 4、關系代數 5、查詢 6、SQL控制語句 7、視圖?編輯 8、索引 9、關系模式 10、函數依賴 11、通過閉包求候選碼 12、范式 13、無損連接和保持函數依賴 14、數據庫設計 15、數據庫的控制功能 16、數據庫…

【Qt】Qt常見控件的相關知識點

1.close退出槽函數 2.設置快捷鍵&#xff0c;QMenu 。 適用&字母就能設置快捷鍵&#xff0c;運行qt程序&#xff0c;最后就可以按Alt對應的字母進行快捷操作。 3.QMenuBar內存泄露問題 如果ui已經自動生成了menubar&#xff0c;我們再次生成一個新的菜單欄&#xff0c;而…

httpx[http2] 和 httpx 的核心區別及使用場景如下

httpx[http2] 和 httpx 的核心區別在于 HTTP/2 協議支持&#xff0c;具體差異及使用場景如下&#xff1a; 1. 功能區別 命令/安裝方式協議支持額外依賴適用場景pip install httpx僅 HTTP/1.1無通用請求&#xff0c;輕量依賴pip install httpx[http2]支持 HTTP/2需安裝 h2>3…

Spring Boot 中 MyBatis 與 Spring Data JPA 的對比介紹

一、核心概念 MyBatis 定義&#xff1a;基于 SQL 的持久層框架&#xff0c;提供靈活的 SQL 映射和自定義查詢能力。 特點&#xff1a; 開發者手動編寫 SQL&#xff08;XML 或注解&#xff09;。 支持動態 SQL、復雜查詢優化。 輕量級&#xff0c;對數據庫控制力強。 Spri…