一.集成學(xué)習(xí)簡(jiǎn)介
簡(jiǎn)介:構(gòu)建并結(jié)合多個(gè)學(xué)習(xí)器來(lái)完成任務(wù)
圖解:
按照個(gè)體學(xué)習(xí)器劃分分類(lèi):
(1)同質(zhì)集成:只包含同種類(lèi)型算法,比如決策樹(shù)集成全是決策樹(shù)
(2)異質(zhì)集成:包含不同種類(lèi)型算法,比如同時(shí)包含神經(jīng)網(wǎng)絡(luò)和決策樹(shù)
按照運(yùn)行方式分類(lèi):
(1)并行運(yùn)行:bagging
(2)串行運(yùn)行:boosting
二.Bagging
簡(jiǎn)介:并行式集成學(xué)習(xí)方法
采樣方法:自助采樣法。假設(shè)采集m個(gè)樣本,我們先采集一個(gè)樣本然后將其放回初始樣本,下次有可能再次采集到,如此重復(fù)采集m次即可
思想:并聯(lián)形式,可以快速得到各個(gè)基礎(chǔ)模型,它們之間互不干擾,并且使用相同參數(shù),只是輸入不同。對(duì)于回歸算法求平均,對(duì)于分類(lèi)算法進(jìn)行投票法
代表性算法:隨機(jī)森林
偏差-方差角度:由于是基于泛化性能比較強(qiáng)的學(xué)習(xí)器來(lái)構(gòu)建很強(qiáng)的集成,降低方差
圖解:
三.Boosting
簡(jiǎn)介:串行式集成學(xué)習(xí)方法
思想:對(duì)于訓(xùn)練集中的每個(gè)樣本建立權(quán)值wi,對(duì)于分類(lèi)錯(cuò)誤樣本會(huì)在下一輪的分類(lèi)中獲得更大的權(quán)重,也就是說(shuō)每次新的計(jì)算結(jié)果都要利用上次返回的結(jié)果,如此迭代循環(huán)往復(fù)
代表性算法:AdaBoost和GBDT
偏差-方差角度:由于是基于泛化性能比較弱的學(xué)習(xí)器來(lái)構(gòu)建很強(qiáng)的集成,降低偏差
圖解:
四.Bagging與Boosting區(qū)別
1.樣本選擇
Bagging采取Bootstraping的是隨機(jī)有放回的取樣
Boosting的每一輪訓(xùn)練的樣本是固定的,改變的是每個(gè)樣本的權(quán)重
2.樣本權(quán)重
Bagging采取的是均勻取樣,且每個(gè)樣本的權(quán)重相同
Boosting根據(jù)錯(cuò)誤率調(diào)整樣本權(quán)重,錯(cuò)誤率越大的樣本權(quán)重會(huì)變大
3.預(yù)測(cè)函數(shù)
Bagging預(yù)測(cè)函數(shù)權(quán)值相同
Boosting中誤差越小的預(yù)測(cè)函數(shù)其權(quán)值越大
4.并行計(jì)算
Bagging 的各個(gè)預(yù)測(cè)函數(shù)可以并行生成
Boosting的各個(gè)預(yù)測(cè)函數(shù)必須按照順序迭代生成
五.預(yù)測(cè)居民收入
項(xiàng)目背景:該數(shù)據(jù)從美國(guó)1994年人口普查數(shù)據(jù)庫(kù)抽取而來(lái),可以用來(lái)預(yù)測(cè)居民收入是否超過(guò)50K/year。該數(shù)據(jù)集類(lèi)變量為年收入是否超過(guò),屬性變量包含年齡,工種,學(xué)歷,職業(yè),人種等重要信息,14個(gè)屬性變量中有7個(gè)類(lèi)別型變量
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ù)類(lèi)型進(jìn)行類(lèi)別編碼
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)
#顯示每個(gè)屬性的相對(duì)重要性得分
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
# 使用決策樹(shù)作為模型
lr = DecisionTreeClassifier()
names = X_df.columns.tolist()
#將所有特征排序,篩選前10個(gè)重要性較高特征
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ī)森林分類(lèi)
model_rf=RandomForestClassifier()
model_rf.fit(X_train,y_train)
#預(yù)測(cè)
model_rf.predict(X_test)
#輸出準(zhǔn)確率
print(round(accuracy_score(y_test,model_rf.predict(X_test)),2))
#總體來(lái)說(shuō)不是很高,后期我們還需要再次提升
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
#計(jì)算矩陣
#計(jì)算矩陣
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ù)測(cè)信息,感興趣讀者可以手動(dòng)驗(yàn)證一下
print(classification_report(y_test, model_rf.predict(X_test)))
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
集成
+關(guān)注
關(guān)注
1文章
176瀏覽量
30236 -
算法
+關(guān)注
關(guān)注
23文章
4612瀏覽量
92900 -
決策樹(shù)
+關(guān)注
關(guān)注
3文章
96瀏覽量
13552
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
不可錯(cuò)過(guò) | 集成學(xué)習(xí)入門(mén)精講
地總結(jié)了一些必備知識(shí)點(diǎn)~1、集成學(xué)習(xí)——機(jī)器學(xué)習(xí)中的“屠龍寶刀”集成學(xué)習(xí)方法是使用一系列
發(fā)表于 06-06 10:11
基于Qualcomm DSP的算法集成案例
一.簡(jiǎn)介上篇博主已經(jīng)給大家分享了Qualcomm 平臺(tái)DSP算法集成的架構(gòu)和算法原理及其實(shí)現(xiàn)的功能,今天我們進(jìn)一步分享Qualcomm 通用平臺(tái)系列的算法
發(fā)表于 09-25 15:41
基于Qualcomm DSP的算法集成系列
視覺(jué)、視頻、圖像和Camera。Sensor DSP:也叫做SLPI,所有的sensor都鏈接到SLPI上面,它管理所有的Sensor及相關(guān)算法。二.DSP算法集成1.
發(fā)表于 09-25 15:44
AI應(yīng)用于醫(yī)療預(yù)測(cè) 需集成機(jī)器學(xué)習(xí)與行為算法
結(jié)合機(jī)器學(xué)習(xí)和行為算法的人工智能(AI)虛擬助理軟件愈來(lái)愈普遍,隨著資料庫(kù)不斷擴(kuò)展,可以對(duì)人類(lèi)偏好做出愈來(lái)愈準(zhǔn)確的預(yù)測(cè),但當(dāng)下流行的健康追蹤裝置欲實(shí)現(xiàn)醫(yī)療預(yù)測(cè),也必須集成機(jī)器學(xué)習(xí)與行為
發(fā)表于 01-17 10:58
?884次閱讀
基于改進(jìn)CNN網(wǎng)絡(luò)與集成學(xué)習(xí)的人臉識(shí)別算法
針對(duì)復(fù)雜卷積神經(jīng)網(wǎng)絡(luò)(CNN)在中小型人臉數(shù)據(jù)庫(kù)中的識(shí)別結(jié)果容易出現(xiàn)過(guò)擬合現(xiàn)象,提出一種基于改進(jìn)CNN網(wǎng)絡(luò)與集成學(xué)習(xí)的人臉識(shí)別算法。改進(jìn)CNN網(wǎng)絡(luò)結(jié)合平面網(wǎng)絡(luò)和殘差網(wǎng)絡(luò)的特點(diǎn),采用平均池化層代替全
發(fā)表于 05-27 14:36
?6次下載
17個(gè)機(jī)器學(xué)習(xí)的常用算法!
的想法,這樣可以讓人們?cè)诮:?b class='flag-5'>算法選擇的時(shí)候考慮能根據(jù)輸入數(shù)據(jù)來(lái)選擇最合適的算法來(lái)獲得最好的結(jié)果。 1.監(jiān)督式學(xué)習(xí): 2.非監(jiān)督式學(xué)習(xí): 在
深度學(xué)習(xí)算法簡(jiǎn)介 深度學(xué)習(xí)算法是什么 深度學(xué)習(xí)算法有哪些
深度學(xué)習(xí)算法簡(jiǎn)介 深度學(xué)習(xí)算法是什么?深度學(xué)習(xí)算法有哪些?? 作為一種現(xiàn)代化、前沿化的技術(shù),深度
什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用
什么是深度學(xué)習(xí)算法?深度學(xué)習(xí)算法的應(yīng)用 深度學(xué)習(xí)算法被認(rèn)為是人工智能的核心,它是一種模仿人類(lèi)大腦
深度學(xué)習(xí)算法庫(kù)框架學(xué)習(xí)
深度學(xué)習(xí)算法庫(kù)框架的相關(guān)知識(shí)點(diǎn)以及它們之間的比較。 1. Tensorflow Tensorflow是Google家的深度學(xué)習(xí)框架,已經(jīng)成為深度學(xué)習(xí)
機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類(lèi) 機(jī)器學(xué)習(xí)算法模型
機(jī)器學(xué)習(xí)算法匯總 機(jī)器學(xué)習(xí)算法分類(lèi) 機(jī)器學(xué)習(xí)算法模型 機(jī)器學(xué)
機(jī)器學(xué)習(xí)算法總結(jié) 機(jī)器學(xué)習(xí)算法是什么 機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn)
對(duì)數(shù)據(jù)的學(xué)習(xí)和分析,機(jī)器學(xué)習(xí)能夠自動(dòng)發(fā)現(xiàn)數(shù)據(jù)中的規(guī)律和模式,進(jìn)而預(yù)測(cè)未來(lái)的趨勢(shì)。 機(jī)器學(xué)習(xí)算法優(yōu)缺點(diǎn) 機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)算法入門(mén) 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對(duì)比
機(jī)器學(xué)習(xí)算法入門(mén) 機(jī)器學(xué)習(xí)算法介紹 機(jī)器學(xué)習(xí)算法對(duì)比 機(jī)器學(xué)
機(jī)器學(xué)習(xí)vsm算法
(VSM)算法計(jì)算相似性。本文將從以下幾個(gè)方面介紹機(jī)器學(xué)習(xí)vsm算法。 1、向量空間模型 向量空間模型是一種常見(jiàn)的文本表示方法,根據(jù)文本的詞頻向量將文本映射到一個(gè)高維向量空間中。這種方
機(jī)器學(xué)習(xí)有哪些算法?機(jī)器學(xué)習(xí)分類(lèi)算法有哪些?機(jī)器學(xué)習(xí)預(yù)判有哪些算法?
許多不同的類(lèi)型和應(yīng)用。根據(jù)機(jī)器學(xué)習(xí)的任務(wù)類(lèi)型,可以將其分為幾種不同的算法類(lèi)型。本文將介紹機(jī)器學(xué)習(xí)的算法類(lèi)型以及分類(lèi)算法和預(yù)測(cè)
深度學(xué)習(xí)算法在集成電路測(cè)試中的應(yīng)用
隨著半導(dǎo)體技術(shù)的快速發(fā)展,集成電路(IC)的復(fù)雜性和集成度不斷提高,對(duì)測(cè)試技術(shù)的要求也日益增加。深度學(xué)習(xí)算法作為一種強(qiáng)大的數(shù)據(jù)處理和模式識(shí)別工具,在
評(píng)論