機器學習_10、集成學習-AdaBoost

AdaBoost

AdaBoost(Adaptive Boosting的簡稱)是一種集成學習方法,它的核心思想在于將多個弱學習器組合起來,形成一個強學習器。通過這種方式,AdaBoost能夠顯著提高分類性能。下面詳細介紹AdaBoost的主要概念和工作原理:

1. 弱學習器(Weak Learner)

  • 弱學習器指的是那些僅比隨機猜測略好的模型,例如決策樹、小神經網絡等。在AdaBoost中,通常使用深度非常淺的決策樹(如單層決策樹,也稱為決策樹樁)作為弱學習器。

2. 自適應(Adaptive)

  • AdaBoost之所以稱為自適應增強,是因為它能夠根據前一個學習器的表現調整數據的權重分布,使得之前被錯誤分類的數據在后續的學習器中獲得更多的關注。這種自適應的過程使得模型能夠專注于那些難以正確分類的樣本。

3. 工作原理

  • 初始化權重:開始時,每個訓練樣本被賦予相同的權重。
  • 循環訓練弱學習器:AdaBoost算法會進行多輪迭代,每一輪都會訓練一個新的弱學習器。在每一輪中:
    • 基于當前的權重分布,從訓練集中訓練出一個弱學習器。
    • 計算該弱學習器的錯誤率。
    • 根據錯誤率計算該弱學習器的權重(即該學習器對最終結果的貢獻)。錯誤率越低的學習器權重越大。
    • 更新訓練樣本的權重,增加被當前學習器錯誤分類樣本的權重,減少正確分類樣本的權重。
    • 進入下一輪迭代。
  • 組合弱學習器:所有的弱學習器根據各自的權重組合成最終的模型。分類決策通常是通過對所有學習器的加權投票來實現的。

4. 特點和優勢

  • 準確率高:通過組合多個弱學習器,AdaBoost能夠達到很高的準確率。
  • 易于編碼:AdaBoost算法相對簡單,易于實現。
  • 自動處理特征選擇:AdaBoost在訓練過程中會自動選擇有用的特征,從而簡化了模型的復雜度和提高了模型的泛化能力。
  • 不太容易過擬合:在弱學習器的選擇和數量控制得當的情況下,AdaBoost不太容易過擬合。

5. 應用

AdaBoost被廣泛應用于各種分類問題,包括二分類和多分類問題,如人臉識別、客戶流失預測、文本分類等領域。

#coding=utf-8
#AdaBoostClassifier.py
import pandas as pd
from sklearn.model_selection import train_test_split
#from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier# 加載數據
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)# 創建基本分類器對象
#base_clf = GaussianNB()
base_clf = DecisionTreeClassifier(max_depth=2,random_state=0)
# 創建AdaBoostingClassifier對象
ada_clf = AdaBoostClassifier(base_estimator=base_clf,random_state=0,n_estimators=1000)for clf in (base_clf, ada_clf):clf.fit(X_train, y_train)print(clf.__class__.__name__,"訓練集準確率:",clf.score(X_train, y_train), sep="")print(clf.__class__.__name__,"測試集準確率:",clf.score(X_test, y_test), sep="") print(clf.__class__.__name__,"對測試集前2個樣本預測的分類標簽:\n",clf.predict(X_test[:2]), sep="")print(clf.__class__.__name__,"對測試集前2個樣本預測的分類概率:\n",clf.predict_proba(X_test[:2]), sep="") print("分類器中的標簽排列:",clf.classes_)# 概率預測轉化為標簽預測print("根據預測概率推算預測標簽:",end="")for i in clf.predict_proba(X_test[:2]).argmax(axis=1):print(clf.classes_[i], end="  ")print()print("測試集前2個樣本的真實標簽:",y_test[:2],sep="")

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

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

相關文章

查看網絡連接的netstat

netstat是一個監控TCP/IP網絡的非常有用的工具,可以顯示路由表、實際的網絡連接,以及每一個網絡接口設備的狀態信息,可以讓用戶得知目前都有哪些網絡連接正在運作。netstat用戶顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用…

【Vue3】PostCss 適配

px 固定的單位,不會進行自適應。rem r root font-size16px 1rem16px,但是需要手動進行單位的換算vw vh 相對于視口的尺寸,不同于百分比(相對于父元素的尺寸)375屏幕 1vw 3.75px 利用插件進行 px(設計稿&…

算法復習之二分【備戰藍橋杯】

二分模板一共有兩個,分別適用于不同情況。 算法思路:假設目標值在閉區間[l, r]中, 每次將區間長度縮小一半,當l r時,我們就找到了目標值。 版本一 當我們將區間[l, r]劃分成[l, mid]和[mid 1, r]時,其更…

Docker自定義JDK鏡像并拉取至阿里云鏡像倉庫全攻略

前言 隨著容器技術的日益成熟,Docker已經成為現代軟件開發和部署的標配工具。其中,自定義Docker鏡像是滿足特定項目需求的關鍵步驟。特別是在Java開發環境中,我們可能需要為不同的項目配置不同版本的JDK。這時,通過Docker自定義J…

臨時筆記2

臨時筆記2 數據庫設計 有哪些表 表里有哪些字段 表和表之間是什么關系 JDBC(全稱:JAVA DATABASE CONNECTIVITY) 本質是官方定義的一套操作所有關系型數據庫的規則,即接口。每個數據庫廠商去實現這一接口,寫出實現類,即驅動&…

List<Object>集合對象屬性拷貝工具類

目錄 問題現象: 問題分析: 解決方法: 問題現象: 最近在項目中經常會使用到BeanUtils工具類來作對象的屬性字段拷貝,但如果應用到List集合的話就需要遍歷去操作了,如下: 打印結果: …

Cocos Creator 3.8.x 后效處理(前向渲染)

關于怎么開啟后效效果我這里不再贅述,可以前往Cocos官方文檔查看具體細節:后效處理官網 下面講一下怎么自己定義一個后處理效果,想添加自己的后效處理的話只需要在postProcess節點下添加一個BlitScreen 組件即可,然后自己去添加自…

第三方集成站點帶token訪問SpringSecurity應用站點自動登錄方案

近期有個WEB項目需要改造。業主找第三方搞了一個集成站點,將多個應用站點的鏈接集中放在一個導航頁面。由于進入集成站點時已經登錄過了,業主要求點擊這些應用站點的鏈接時就不必再登錄。 以前做過類似項目,用的是單點登錄。大家都用同一個登…

關于python數據可視化的學習(多維數組)

import numpy as np # 通過這個語句可以知道其是否存在nmpy這個包 創建數據 H np.array([[[94,26],[11,11]],[[22,22],[23,23]],[[33,33],[33,34]]]) # 理解其中的邏輯結構然后開始運行 # 一個基礎維度邏輯數據結構中包含一個一個二維數據,二維數組之后再次進行升…

Selenium基礎:自動化你的網頁交互!

在構建Python爬蟲的過程中,你可能會遇到需要與網頁進行交互的情況,比如填充表單、點擊按鈕等。這時,Selenium庫就成了你的有力工具。Selenium是一個強大的工具,能夠模擬用戶在網頁上的各種操作。本篇博客將向你介紹Selenium的基礎…

EdgeX Foundry 設備服務

文章目錄 1.設備服務2.設備配置文件3.設備資源4.資源屬性(Attributes)5.資源屬性(Properties)6.設備命令7.資源操作8.REST 命令端點9.推送事件 EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.…

好用的AI模型集合

AI-Chat 這個網站提供的AI-Chat 3.5和AI-Chat 4.0聊天機器人,每天都可以免費使用。 不管是學習、工作還是日常生活,都能給我們帶來很大的幫助,效率真的可以說是翻倍了。我覺得,如果你想讓自己的生活更加高效、更加有序&#xff0…

WEB漏洞 SSRF簡單入門實踐

一、漏洞原理 SSRF 服務端請求偽造 原理:在某些網站中提供了從其他服務器獲取數據的功能,攻擊者能通過構造惡意的URL參數,惡意利用后可作為代理攻擊遠程或本地的服務器。 二、SSRF的利用 1.對目標外網、內網進行端口掃描。 2.攻擊內網或本地的…

Selenium 4.0+ 版本的“正確使用”以及“驅動程序的正確安裝”

前言 本文是該專欄的第18篇,后面會持續分享python爬蟲干貨知識,記得關注。 你是否還在使用selenium 3.0+版本呢?如果還是在使用selenium的舊版本,那就好好看完這篇文章,讓你立刻使用上最新的selenium版本——selenium 4.0+版本。 我們都知道selenium是一個開源的Web自動…

python+Selenium以IE模式打開edge瀏覽器

一、修改ie的注冊表 計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 下邊5個文件夾下的2500的值改成3 計算機\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 下邊5個文件夾下的2…

全量知識系統問題及SmartChat給出的答復 之12 知識圖表設計

Q32. 畫一個圖表 今天,我們開始設計圖表,以便能直觀表示前面各種概念名相及其位置關系,發現其中的問題和錯誤。 先畫出一個3*3的表格,還有一根對角線(左上到右下),上面有列名,分別…

戲說c第二十六篇: 測試完備性衡量(代碼覆蓋率)

前言 師弟:“師兄,我又被鄙視了。說我的系統太差,測試不過關。” 我:“怎么說?” 師弟:“每次發布版本給程夏,都被她發現一些bug,太丟人了。師兄,有什么方法來衡量測試的…

css實現背景漸變疊加

線性漸變效果圖: .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#fff 30%),linear-gradient(to right,pink,skyblue);}徑像漸變效果圖: .box{width: 100vw;height: 100vh;background:linear-gradient(to bottom,transparent,#…

【SVN】使用TortoiseGit刪除Git分支

使用TortoiseGit刪除Git分支 前言 平時我在進行開發的時候,比如需要開發一個新功能,這里以蘑菇博客開發服務網關-gateway功能為例 一般我都會在原來master分支的基礎上,然后拉取一個新的分支【gateway】,然后在 gateway分支上進…

MySQL學生成績管理系統based on C++ and Clion

mysql_free_result()函數的作用是釋放結果集的內存,是同步的,也就是要中斷一下 該實驗使用了MySQL鏈接數據庫的基本使用方法,具體使用了 MYSQL_RES 數據庫的mysql_store_result()函數的返回值是一個結果集,該函數的作用是檢索比…