0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是集成學(xué)習(xí)算法-1

汽車電子技術(shù) ? 來源:Python數(shù)據(jù)分析之旅 ? 作者:cauwfq ? 2023-02-24 16:37 ? 次閱讀

pYYBAGP4ddOASnWvAAFVu-TyjY8864.png

一.集成學(xué)習(xí)簡介

簡介:構(gòu)建并結(jié)合多個學(xué)習(xí)器來完成任務(wù)
圖解:

poYBAGP4deSAEp17AACDUkRVfyY532.png
按照個體學(xué)習(xí)器劃分分類:
   (1)同質(zhì)集成:只包含同種類型算法,比如決策樹集成全是決策樹
   (2)異質(zhì)集成:包含不同種類型算法,比如同時包含神經(jīng)網(wǎng)絡(luò)和決策樹
按照運(yùn)行方式分類:
   (1)并行運(yùn)行:bagging
   (2)串行運(yùn)行:boosting

二.Bagging

簡介:并行式集成學(xué)習(xí)方法
采樣方法:自助采樣法。假設(shè)采集m個樣本,我們先采集一個樣本然后將其放回初始樣本,下次有可能再次采集到,如此重復(fù)采集m次即可
思想:并聯(lián)形式,可以快速得到各個基礎(chǔ)模型,它們之間互不干擾,并且使用相同參數(shù),只是輸入不同。對于回歸算法求平均,對于分類算法進(jìn)行投票法
代表性算法:隨機(jī)森林
偏差-方差角度:由于是基于泛化性能比較強(qiáng)的學(xué)習(xí)器來構(gòu)建很強(qiáng)的集成,降低方差
圖解:

poYBAGP4dgiASxxBAADi6XNfTsE611.png

三.Boosting

簡介:串行式集成學(xué)習(xí)方法
思想:對于訓(xùn)練集中的每個樣本建立權(quán)值wi,對于分類錯誤樣本會在下一輪的分類中獲得更大的權(quán)重,也就是說每次新的計算結(jié)果都要利用上次返回的結(jié)果,如此迭代循環(huán)往復(fù)
代表性算法:AdaBoost和GBDT
偏差-方差角度:由于是基于泛化性能比較弱的學(xué)習(xí)器來構(gòu)建很強(qiáng)的集成,降低偏差
圖解:

poYBAGP4dieASa51AAEbUWV5gog311.png

四.Bagging與Boosting區(qū)別

1.樣本選擇
  Bagging采取Bootstraping的是隨機(jī)有放回的取樣
  Boosting的每一輪訓(xùn)練的樣本是固定的,改變的是每個樣本的權(quán)重
2.樣本權(quán)重
  Bagging采取的是均勻取樣,且每個樣本的權(quán)重相同
  Boosting根據(jù)錯誤率調(diào)整樣本權(quán)重,錯誤率越大的樣本權(quán)重會變大
3.預(yù)測函數(shù)
  Bagging預(yù)測函數(shù)權(quán)值相同
  Boosting中誤差越小的預(yù)測函數(shù)其權(quán)值越大
4.并行計算
  Bagging 的各個預(yù)測函數(shù)可以并行生成
  Boosting的各個預(yù)測函數(shù)必須按照順序迭代生成

五.預(yù)測居民收入

項目背景:該數(shù)據(jù)從美國1994年人口普查數(shù)據(jù)庫抽取而來,可以用來預(yù)測居民收入是否超過50K/year。該數(shù)據(jù)集類變量為年收入是否超過,屬性變量包含年齡,工種,學(xué)歷,職業(yè),人種等重要信息,14個屬性變量中有7個類別型變量
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline

#讀取文件
data_train=pd.read_csv('./income_census_train.csv')
#查看數(shù)據(jù)
data_train.head()

poYBAGP4dkuABjN6AADrj2iSIdQ359.png

#數(shù)據(jù)查看與處理

#數(shù)值型特征的描述與相關(guān)總結(jié)
data_train.describe()

poYBAGP4dmmAD7FWAAExEk23c9E472.png
#非數(shù)值型
data_train.describe(include=['O'])

pYYBAGP4dnmAUX3vAACQZuxIZLM668.png

#刪除序列數(shù)據(jù)
data = data_train.drop(['ID'],axis = 1)
#查看數(shù)據(jù)
data.head()

pYYBAGP4domAKErgAAD1cgxgOLk566.png

#數(shù)據(jù)轉(zhuǎn)換

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 將oject數(shù)據(jù)類型進(jìn)行類別編碼
for feature in data.columns:
    if data[feature].dtype == 'object':
        data[feature] = pd.Categorical(data[feature]).codes

#標(biāo)準(zhǔn)化處理
X = np.array(X_df)
y = np.array(y_df)
scaler = StandardScaler()
X = scaler.fit_transform(X)

fromsklearn.treeimportDecisionTreeClassifier
from pyecharts.charts import Scatter
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.charts import Page

#初始化
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X, y)

#顯示每個屬性的相對重要性得分
relval = tree.feature_importances_


#構(gòu)建數(shù)據(jù)
importances_df = pd.DataFrame({
    'feature' : data.columns[:-1],
    'importance' : relval
})  
importances_df.sort_values(by = 'importance', ascending = False, inplace = True)

    
#作圖
bar = Bar()
bar.add_xaxis(importances_df.feature.tolist())
bar.add_yaxis(
    'importance', 
    importances_df.importance.tolist(), 
    label_opts = opts.LabelOpts(is_show = False))

bar.set_global_opts(
    title_opts = opts.TitleOpts(title = '糖尿病數(shù)據(jù)各特征重要程度'),
    xaxis_opts = opts.AxisOpts(axislabel_opts = opts.LabelOpts(rotate = 30)),
    datazoom_opts = [opts.DataZoomOpts()]
)
    
bar.render('diabetes_importances_bar.html')
bar.render_notebook()

poYBAGP4drmAKe7pAABr-dpozAk777.png

#特征篩選
from sklearn.feature_selection import RFE

# 使用決策樹作為模型
lr = DecisionTreeClassifier()
names = X_df.columns.tolist()

#將所有特征排序,篩選前10個重要性較高特征
selector = RFE(lr, n_features_to_select = 10)
selector.fit(X,y.ravel())

#得到新的dataframe
X_df_new = X_df.iloc[:, selector.get_support(indices = False)]
X_df_new.columns

poYBAGP4ds-AS0A_AAA0k45HxzQ823.png

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score,confusion_matrix

#標(biāo)準(zhǔn)化
X_new = scaler.fit_transform(np.array(X_df_new)) 
#分離數(shù)據(jù)
X_train, X_test, y_train, y_test = train_test_split(X_new,y,test_size = 0.3,random_state=0)
#隨機(jī)森林分類
model_rf=RandomForestClassifier()
model_rf.fit(X_train,y_train)
#預(yù)測
model_rf.predict(X_test)
#輸出準(zhǔn)確率
print(round(accuracy_score(y_test,model_rf.predict(X_test)),2))

#總體來說不是很高,后期我們還需要再次提升

poYBAGP4duSAOIobAAAkrEuZZtE098.png

import itertools

#繪制混淆矩陣
def plot_confusion_matrix(cm, classes, title='Confusion matrix', cmap=plt.cm.Blues):
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=0)
    plt.yticks(tick_marks, classes)
    #設(shè)置thresh值
    thresh = cm.max() / 2.
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, cm[i, j],
                 horizontalalignment="center",
                 color="white" if cm[i, j] > thresh else "black")
    #設(shè)置布局
    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')
 
 #參考鏈接:https://www.heywhale.com/mw/project/5bfb6342954d6e0010675425/content

#計算矩陣

#計算矩陣
cm = confusion_matrix(y_test,model_rf.predict(X_test))
class_names = [0,1]
#繪制圖形
plt.figure()
#輸出混淆矩陣
plot_confusion_matrix(cm , classes=class_names, title='Confusion matrix')
#顯示圖形
plt.show()

pYYBAGP4dwyAEWQZAABLKFs7zLI107.png
#輸出預(yù)測信息,感興趣讀者可以手動驗(yàn)證一下
print(classification_report(y_test, model_rf.predict(X_test)))

poYBAGP4dxmAOvGIAABrnU4xJ-Q919.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 集成
    +關(guān)注

    關(guān)注

    1

    文章

    176

    瀏覽量

    30189
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4587

    瀏覽量

    92501
  • 決策樹
    +關(guān)注

    關(guān)注

    2

    文章

    96

    瀏覽量

    13534
收藏 人收藏

    評論

    相關(guān)推薦

    不可錯過 | 集成學(xué)習(xí)入門精講

    地總結(jié)了一些必備知識點(diǎn)~1、集成學(xué)習(xí)——機(jī)器學(xué)習(xí)中的“屠龍寶刀”集成學(xué)習(xí)方法是使用一系列
    發(fā)表于 06-06 10:11

    基于Qualcomm DSP的算法集成案例

    一.簡介上篇博主已經(jīng)給大家分享了Qualcomm 平臺DSP算法集成的架構(gòu)和算法原理及其實(shí)現(xiàn)的功能,今天我們進(jìn)一步分享Qualcomm 通用平臺系列的算法
    發(fā)表于 09-25 15:41

    基于Qualcomm DSP的算法集成系列

    視覺、視頻、圖像和Camera。Sensor DSP:也叫做SLPI,所有的sensor都鏈接到SLPI上面,它管理所有的Sensor及相關(guān)算法。二.DSP算法集成1.
    發(fā)表于 09-25 15:44

    AI應(yīng)用于醫(yī)療預(yù)測 需集成機(jī)器學(xué)習(xí)與行為算法

    結(jié)合機(jī)器學(xué)習(xí)和行為算法的人工智能(AI)虛擬助理軟件愈來愈普遍,隨著資料庫不斷擴(kuò)展,可以對人類偏好做出愈來愈準(zhǔn)確的預(yù)測,但當(dāng)下流行的健康追蹤裝置欲實(shí)現(xiàn)醫(yī)療預(yù)測,也必須集成機(jī)器學(xué)習(xí)與行為
    發(fā)表于 01-17 10:58 ?870次閱讀

    基于改進(jìn)CNN網(wǎng)絡(luò)與集成學(xué)習(xí)的人臉識別算法

    針對復(fù)雜卷積神經(jīng)網(wǎng)絡(luò)(CNN)在中小型人臉數(shù)據(jù)庫中的識別結(jié)果容易出現(xiàn)過擬合現(xiàn)象,提出一種基于改進(jìn)CNN網(wǎng)絡(luò)與集成學(xué)習(xí)的人臉識別算法。改進(jìn)CNN網(wǎng)絡(luò)結(jié)合平面網(wǎng)絡(luò)和殘差網(wǎng)絡(luò)的特點(diǎn),采用平均池化層代替全
    發(fā)表于 05-27 14:36 ?6次下載

    17個機(jī)器學(xué)習(xí)的常用算法!

    的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據(jù)輸入數(shù)據(jù)來選擇最合適的算法來獲得最好的結(jié)果。 1.監(jiān)督式學(xué)習(xí): 2.非監(jiān)督式學(xué)習(xí): 在
    的頭像 發(fā)表于 08-22 09:57 ?2118次閱讀
    17個機(jī)器<b class='flag-5'>學(xué)習(xí)</b>的常用<b class='flag-5'>算法</b>!

    深度學(xué)習(xí)算法簡介 深度學(xué)習(xí)算法是什么 深度學(xué)習(xí)算法有哪些

    深度學(xué)習(xí)算法簡介 深度學(xué)習(xí)算法是什么?深度學(xué)習(xí)算法有哪些?? 作為一種現(xiàn)代化、前沿化的技術(shù),深度
    的頭像 發(fā)表于 08-17 16:02 ?8691次閱讀

    什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用

    什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用 深度學(xué)習(xí)算法被認(rèn)為是人工智能的核心,它是一種模仿人類大腦
    的頭像 發(fā)表于 08-17 16:03 ?2067次閱讀

    深度學(xué)習(xí)算法庫框架學(xué)習(xí)

    深度學(xué)習(xí)算法庫框架的相關(guān)知識點(diǎn)以及它們之間的比較。 1. Tensorflow Tensorflow是Google家的深度學(xué)習(xí)框架,已經(jīng)成為深度學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:11 ?647次閱讀

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型

    機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型 機(jī)器學(xué)
    的頭像 發(fā)表于 08-17 16:11 ?1047次閱讀

    機(jī)器學(xué)習(xí)算法總結(jié) 機(jī)器學(xué)習(xí)算法是什么 機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn)

    對數(shù)據(jù)的學(xué)習(xí)和分析,機(jī)器學(xué)習(xí)能夠自動發(fā)現(xiàn)數(shù)據(jù)中的規(guī)律和模式,進(jìn)而預(yù)測未來的趨勢。 機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn) 機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 08-17 16:11 ?1791次閱讀

    機(jī)器學(xué)習(xí)算法入門 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對比

    機(jī)器學(xué)習(xí)算法入門 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對比 機(jī)器學(xué)
    的頭像 發(fā)表于 08-17 16:27 ?911次閱讀

    機(jī)器學(xué)習(xí)vsm算法

    (VSM)算法計算相似性。本文將從以下幾個方面介紹機(jī)器學(xué)習(xí)vsm算法1、向量空間模型 向量空間模型是一種常見的文本表示方法,根據(jù)文本的詞頻向量將文本映射到一個高維向量空間中。這種方
    的頭像 發(fā)表于 08-17 16:29 ?834次閱讀

    機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?

    許多不同的類型和應(yīng)用。根據(jù)機(jī)器學(xué)習(xí)的任務(wù)類型,可以將其分為幾種不同的算法類型。本文將介紹機(jī)器學(xué)習(xí)算法類型以及分類算法和預(yù)測
    的頭像 發(fā)表于 08-17 16:30 ?1923次閱讀

    深度學(xué)習(xí)算法集成電路測試中的應(yīng)用

    隨著半導(dǎo)體技術(shù)的快速發(fā)展,集成電路(IC)的復(fù)雜性和集成度不斷提高,對測試技術(shù)的要求也日益增加。深度學(xué)習(xí)算法作為一種強(qiáng)大的數(shù)據(jù)處理和模式識別工具,在
    的頭像 發(fā)表于 07-15 09:48 ?719次閱讀