一.集成學(xué)習(xí)簡介
簡介:構(gòu)建并結(jié)合多個學(xué)習(xí)器來完成任務(wù)
圖解:
按照個體學(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)的集成,降低方差
圖解:
三.Boosting
簡介:串行式集成學(xué)習(xí)方法
思想:對于訓(xùn)練集中的每個樣本建立權(quán)值wi,對于分類錯誤樣本會在下一輪的分類中獲得更大的權(quán)重,也就是說每次新的計算結(jié)果都要利用上次返回的結(jié)果,如此迭代循環(huán)往復(fù)
代表性算法:AdaBoost和GBDT
偏差-方差角度:由于是基于泛化性能比較弱的學(xué)習(xí)器來構(gòu)建很強(qiáng)的集成,降低偏差
圖解:
四.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()
#數(shù)據(jù)查看與處理
#數(shù)值型特征的描述與相關(guān)總結(jié)
data_train.describe()
#非數(shù)值型
data_train.describe(include=['O'])
#刪除序列數(shù)據(jù)
data = data_train.drop(['ID'],axis = 1)
#查看數(shù)據(jù)
data.head()
#數(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()
#特征篩選
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
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))
#總體來說不是很高,后期我們還需要再次提升
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()
#輸出預(yù)測信息,感興趣讀者可以手動驗(yàn)證一下
print(classification_report(y_test, model_rf.predict(X_test)))
聲明:本文內(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
發(fā)布評論請先 登錄
相關(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í): 在
深度學(xué)習(xí)算法簡介 深度學(xué)習(xí)算法是什么 深度學(xué)習(xí)算法有哪些
深度學(xué)習(xí)算法簡介 深度學(xué)習(xí)算法是什么?深度學(xué)習(xí)算法有哪些?? 作為一種現(xiàn)代化、前沿化的技術(shù),深度
什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用
什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用 深度學(xué)習(xí)算法被認(rèn)為是人工智能的核心,它是一種模仿人類大腦
深度學(xué)習(xí)算法庫框架學(xué)習(xí)
深度學(xué)習(xí)算法庫框架的相關(guān)知識點(diǎn)以及它們之間的比較。 1. Tensorflow Tensorflow是Google家的深度學(xué)習(xí)框架,已經(jīng)成為深度學(xué)習(xí)
機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型
機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類 機(jī)器學(xué)習(xí)算法模型 機(jī)器學(xué)
機(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í)
機(jī)器學(xué)習(xí)算法入門 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對比
機(jī)器學(xué)習(xí)算法入門 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對比 機(jī)器學(xué)
機(jī)器學(xué)習(xí)vsm算法
(VSM)算法計算相似性。本文將從以下幾個方面介紹機(jī)器學(xué)習(xí)vsm算法。 1、向量空間模型 向量空間模型是一種常見的文本表示方法,根據(jù)文本的詞頻向量將文本映射到一個高維向量空間中。這種方
機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?
許多不同的類型和應(yīng)用。根據(jù)機(jī)器學(xué)習(xí)的任務(wù)類型,可以將其分為幾種不同的算法類型。本文將介紹機(jī)器學(xué)習(xí)的算法類型以及分類算法和預(yù)測
深度學(xué)習(xí)算法在集成電路測試中的應(yīng)用
隨著半導(dǎo)體技術(shù)的快速發(fā)展,集成電路(IC)的復(fù)雜性和集成度不斷提高,對測試技術(shù)的要求也日益增加。深度學(xué)習(xí)算法作為一種強(qiáng)大的數(shù)據(jù)處理和模式識別工具,在
評論