機器學習_10、集成學習-隨機森林

隨機森林算法

隨機森林(Random Forest)是一種集成學習方法,特別用于分類、回歸和其他任務,它通過構建多個決策樹(Decision Trees)在訓練時進行預測,并采用平均或多數投票的方式來提高整體模型的準確性和魯棒性。隨機森林是由Leo Breiman和Adele Cutler提出的,它結合了Bagging(Bootstrap Aggregating)的思想和隨機特征選擇來構建決策樹的集合。

工作原理

隨機森林的工作過程可以概括為以下幾個步驟:

  1. 自助采樣(Bootstrap sampling):從原始數據集中使用有放回的抽樣方式隨機選擇N個樣本,形成一個訓練集。這個過程重復進行多次,每次生成的訓練集都用來構建一個新的決策樹。

  2. 隨機選擇特征:在構建決策樹的每個分裂節點時,不是查看所有特征來選擇最佳分裂特征,而是隨機選擇一部分特征候選集,并從中選擇最佳分裂特征。這一步增加了模型的隨機性,有助于提高模型的泛化能力。

  3. 構建決策樹:對于每個訓練集,構建一個決策樹。決策樹在訓練過程中不進行剪枝,允許它們盡可能地生長到最大深度。

  4. 匯總結果

    • 對于分類任務,隨機森林通過多數投票的方式確定最終的類別輸出。
    • 對于回歸任務,隨機森林將所有決策樹的預測結果取平均值作為最終的預測輸出。

特點和優勢

  • 準確性高:通過集成多個決策樹,隨機森林通常能夠達到很高的準確率,并且相比單個決策樹,它更不容易過擬合。
  • 魯棒性強:隨機森林能夠處理大量數據集,即使數據具有高維特征并且存在少量的缺失數據也能很好地工作。
  • 變量重要性評估:隨機森林能夠提供關于特征重要性的估計,這對于理解數據集中哪些特征對預測變量貢獻最大非常有用。
  • 適用范圍廣:隨機森林可以用于分類和回歸任務,也被用于異常點檢測等其他機器學習任務中。

應用場景

隨機森林因其出色的準確性、魯棒性和易用性,在各種領域得到了廣泛的應用,包括但不限于:

  • 醫療診斷
  • 金融風險評估
  • 股票市場分析
  • 客戶行為預測
  • 圖像分類和識別
  • 生物信息學和基因分類
#coding=utf-8
#RandomForestClassifier.py
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 加載數據
filename="./glass.data"
glass_data = pd.read_csv(filename,index_col=0,header=None)
# 先從DataFrame中取出數組值(.value),只是為了方便后面顯示
X,y = glass_data.iloc[:,:-1].values, glass_data.iloc[:,-1].values
#X,y = glass_data.iloc[:,:-1], glass_data.iloc[:,-1]
# 劃分訓練集與測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, shuffle=True, stratify=y, random_state=1)# 建立模型
rfc = RandomForestClassifier(max_depth=4,bootstrap=True,random_state=0)
rfc.fit(X_train, y_train)
print("訓練集準確率:",rfc.score(X_train,y_train))
print("測試集準確率:",rfc.score(X_test,y_test))
print("測試集前2個樣本的預測分類標簽:",rfc.predict(X_test[:2]))
print("測試集前2個樣本的真實分類標簽:",y_test[:2])
print("測試集前2個樣本所屬標簽概率的預測值:\n",rfc.predict_proba(X_test[:2]),sep="")

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

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

相關文章

【vue】keep-alive清除緩存最簡單暴力的方法

項目場景: 場景一: 使用vue開發移動端, 有ABC三個頁面,點擊A跳轉到B,點B跳轉到C; 點C返回B,點B返回A。 場景二: 場景一實現之后,會出現這樣一個問題: 先從A跳…

LeetCode 每日一題 2024/2/26-2024/3/3

記錄了初步解題思路 以及本地實現代碼;并不一定為最優 也希望大家能一起探討 一起進步 目錄 2/26 938. 二叉搜索樹的范圍和2/27 2867. 統計樹中的合法路徑數目2/28 2673. 使二叉樹所有路徑值相等的最小代價2/29 2581. 統計可能的樹根數目3/1 2369. 檢查數組是否存在…

leetcode 熱題 100_三數之和

題解一: 雙指針遍歷:暴力解法的三層遍歷會超時,因此需要優化遍歷的過程。首先是需要對結果進行去重,這里采用排序跳過重復值的做法,在指針遍歷時跳過已經遍歷過的相同值。在第一層循環確定第一個值后,剩下兩…

模型部署 - onnx 的導出和分析 -(1) - PyTorch 導出 ONNX - 學習記錄

onnx 的導出和分析 一、PyTorch 導出 ONNX 的方法1.1、一個簡單的例子 -- 將線性模型轉成 onnx1.2、導出多個輸出頭的模型1.3、導出含有動態維度的模型 二、pytorch 導出 onnx 不成功的時候如何解決2.1、修改 opset 的版本2.2、替換 pytorch 中的算子組合2.3、在 pytorch 登記&…

vscode+remote突然無法連接服務器以及ssh連接出問題時的排錯方法

文章目錄 設備描述狀況描述解決方法當ssh連接出問題時的排錯方法 設備描述 主機:win11,使用vscode的remote-ssh插件 服務器:阿里云的2C2GUbuntu 22.04 UFIE 狀況描述 之前一直使用的是vscode的remote服務,都是能夠正常連接服務…

【Qt】界面布局

Qt常用布局 除Qt Designer支持可視化設計和布局界面之外,Qt 提供了代碼方式來進行界面布局, 以下是幾種常用的界面布局方式: 水平布局(QHBoxLayout)和垂直布局(QVBoxLayout): QHBo…

Redis常用數據結構--Zset

Zset ZADDZCARDZCOUNTZRANGE/ZREVRANGEZRANGEBYSCOREZPOPMAX/ZPOPMINBZPOPMAX/BZPOPMINZRANK/ZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBYZINTERSTORE/ZUNIONSTORE內部編碼使?場景 ZADD 添加或者更新指定的元素以及關聯的分數到 zset 中,分數應該符…

如何在 Angular 測試中使用 spy

簡介 Jasmine spy 用于跟蹤或存根函數或方法。spy 是一種檢查函數是否被調用或提供自定義返回值的方法。我們可以使用spy 來測試依賴于服務的組件,并避免實際調用服務的方法來獲取值。這有助于保持我們的單元測試專注于測試組件本身的內部而不是其依賴關系。 在本…

空調壓縮機補充潤滑油的方法

空調壓縮機補充潤滑油的方法有三種,從吸氣截止閥旁邊通孔吸入,從加油孔中加入,從曲軸箱下部加入,具體操作步驟如下: 1關閉吸氣截止閥,啟動壓縮機幾分鐘,將曲軸箱中制冷劑排入冷凝器&#xff0c…

vue2結合electron開發桌面端應用

一、Electron是什么? Electron是一個使用 JavaScript、HTML 和 CSS 構建桌面應用程序的框架。 嵌入 Chromium 和 Node.js 到 二進制的 Electron 。允許您保持一個 JavaScript 代碼代碼庫并創建可在Windows、macOS和Linux上運行的跨平臺應用 。 Electron 經常與 Ch…

scrapy 中間件

就是發送請求的時候,會經過,中間件。中間件會處理,你的請求 下面是代碼: # Define here the models for your spider middleware # # See documentation in: # https://docs.scrapy.org/en/latest/topics/spider-middleware.html…

【快速上手ProtoBuf】基本使用

文章目錄 1 :peach:初識 ProtoBuf:peach:1.1 :apple:序列化概念:apple:1.2 :apple:ProtoBuf 是什么:apple:1.3 :apple:ProtoBuf 的使用特點:apple: 2 :peach:創建 .proto ?件:peach:3 :peach:編譯 .proto 文件:peach:3 :peach:序列化與反序列化的使用:peach: 1 🍑初…

洛谷 2036.PERKET

采用遞歸法的方式進行題解。 思路:首先我們知道在n種材料當中,我們需要從中選擇至少有一種得配料才行。也就是說,我們選擇的配料數目是自己決定的,而不是那種組合型得對于你有要求的組合型遞歸方式。 所以我們會想到用指數型得遞…

(五)網絡優化與超參數選擇--九五小龐

網絡容量 網絡中神經單元數越多,層數越多,神經網路的擬合能力越強。但是訓練速度,難度越大,越容易產生過擬合。 如何選擇超參數 所謂超參數,也就是搭建神經網路中,需要我們自己去選擇(不是通…

LeetCode 刷題 [C++] 第45題.跳躍游戲 II

題目描述 給定一個長度為 n 的 0 索引整數數組 nums。初始位置為 nums[0]。 每個元素 nums[i] 表示從索引 i 向前跳轉的最大長度。換句話說&#xff0c;如果你在 nums[i] 處&#xff0c;你可以跳轉到任意 nums[i j] 處: 0 < j < nums[i]i j < n 返回到達 nums[n …

遞歸函數(c++題解)

題目描述 對于一個遞歸函數w(a, b, c)。 如果a < 0 or b < 0 or c < 0就返回值1。 如果a > 20 or b > 20 or c > 20就返回W(20,20,20)。 如果a < b并且b < c 就返回w(a, b, c ? 1) w(a, b ? 1, c ? 1) ? w(a, b ? 1, c)&#xff0c; 其它別…

計算機網絡知多少-第1篇

一、 從輸入URL到頁面展示到底發生了什么&#xff1f; 1. 首先瀏覽器會查看電腦本地緩存&#xff0c;如果有直接返回&#xff0c;否則需要進行下一步的網絡請求。 2. 在網絡請求之前&#xff0c;需要先進行DNS解析&#xff0c;來找到請求域名的ip地址。如果是HTTPS請求&#…

【C語言】熟悉文件基礎知識

歡迎關注個人主頁&#xff1a;逸狼 創造不易&#xff0c;可以點點贊嗎~ 如有錯誤&#xff0c;歡迎指出~ 文件 為了數據持久化保存&#xff0c;使用文件&#xff0c;否則數據存儲在內存中&#xff0c;程序退出&#xff0c;內存回收&#xff0c;數據就會丟失。 程序設計中&…

微信小程序,h5端自適應登陸方式

微信小程序端只顯示登陸(獲取opid),h5端顯示通過賬戶密碼登陸 例如: 通過下面的變量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

Git 查看提交歷史

命令說明git log查看歷史提交記錄git blame (file)以列表形式查看指定文件的歷史修改記錄 git log 在使用 Git 提交了若干更新之后&#xff0c;又或者克隆了某個項目&#xff0c;想回顧下提交歷史&#xff0c;我們可以使用 git log 命令查看。 git log 命令用于查看 Git 倉庫中…