色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

Random Forest算法 python實(shí)現(xiàn)案例分析

sekJ_AI_class_v ? 2019-09-23 09:58 ? 次閱讀

Randomw Forest算法 python實(shí)現(xiàn),該系列文章主要是對(duì)常見的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)。

完整的筆記和代碼以上傳到Github,地址為(覺得有用的話,歡迎Fork,請(qǐng)給作者個(gè)Star):

https://github.com/Vambooo/lihang-dl

隨機(jī)森林 Random Forest

隨機(jī)森林是對(duì)多棵樹組合對(duì)樣本訓(xùn)練預(yù)測的一種分類器,它是Bagging方法的最流行的版本之一。

可以理解為隨機(jī)森林是個(gè)體模型為決策樹的Bagging算法。

隨機(jī)森林由Breiman提出的一種分類算法,它使用Bootstrap重采樣技術(shù),從原始訓(xùn)練樣本集中有放回的重復(fù)隨機(jī)抽取n個(gè)樣本生成新的樣本集合,以此作為訓(xùn)練集來訓(xùn)練決策樹。然后按照上述步驟生成m棵決策樹組合而成隨機(jī)森林。

隨機(jī)森林算法

Random Forest算法案例 python實(shí)現(xiàn)

(代碼可以左右滑動(dòng)看)

第一步:構(gòu)建數(shù)據(jù)(這里用make_blobs()來構(gòu)建聚類數(shù)據(jù))

X, y = make_blobs(n_samples=3000, centers=2, random_state=42, cluster_std=1.0)

n_samples是待生成的樣本的總數(shù);
n_features是每個(gè)樣本的特征數(shù);
centers表示類別數(shù);
cluster_std表示每個(gè)類別的方差。

from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=300, centers=4,
random_state=0, cluster_std=1.0)plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='rainbow');

定義樹的可視化方法

def visualize_tree(estimator, X, y, boundaries=True, 
                  xlim=None, ylim=None, ax=None): 
   ax = ax or plt.gca() 
       # 繪制訓(xùn)練點(diǎn)    ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap='viridis', 
              clim=(y.min(), y.max()), zorder=3)  
  ax.axis('tight')    ax.axis('off')    if xlim is None:
        xlim = ax.get_xlim()    if ylim is None: 
       ylim = ax.get_ylim()  
      # 擬合估計(jì)器    estimator.fit(X, y)  
  xx, yy = np.meshgrid(np.linspace(*xlim, num=200),                   
      np.linspace(*ylim, num=200))    Z = estimator.predict(np.c_[xx.ravel(), yy.ravel()])
    # 將結(jié)果放入到帶顏色的圖中    n_classes = len(np.unique(y))  

  Z = Z.reshape(xx.shape)    contours = ax.contourf(xx, yy, Z, alpha=0.3,                      
     levels=np.arange(n_classes + 1) - 0.5,                      
     cmap='viridis',zorder=1)
    ax.set(xlim=xlim, ylim=ylim)    
    # 繪制決策邊界    def plot_boundaries(i, xlim, ylim):     

   if i >= 0:      
      tree = estimator.tree_              
      if tree.feature[i] == 0:           
     ax.plot([tree.threshold[i], tree.threshold[i]], ylim, '-k', zorder=2)   
             plot_boundaries(tree.children_left[i],      
                          [xlim[0], tree.threshold[i]], ylim)   
             plot_boundaries(tree.children_right[i],                            
    [tree.threshold[i], xlim[1]], ylim)                    elif tree.feature[i] == 1:  
              ax.plot(xlim, [tree.threshold[i], tree.threshold[i]], '-k', zorder=2)         
       plot_boundaries(tree.children_left[i], xlim,                     
           [ylim[0], tree.threshold[i]])         
       plot_boundaries(tree.children_right[i], xlim,                       
         [tree.threshold[i], ylim[1]])          
      if boundaries:   
     plot_boundaries(0, xlim, ylim)

定義分類器的可視化方法

def visualize_classifier(model, X, y, ax=None, cmap='rainbow'):  
  ax = ax or plt.gca()    
    # 繪制訓(xùn)練點(diǎn)    ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=cmap,    
           clim=(y.min(), y.max()), zorder=3)    ax.axis('tight') 
   ax.axis('off')    xlim = ax.get_xlim()    ylim = ax.get_ylim()     
   # 擬合估計(jì)器    model.fit(X, y)
   xx, yy = np.meshgrid(np.linspace(*xlim, num=200),                   
      np.linspace(*ylim, num=200))  
  Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
    # 將擬合結(jié)果繪制在帶顏色的圖中  
  n_classes = len(np.unique(y))  
  contours = ax.contourf(xx, yy, Z, alpha=0.3,     
  levels=np.arange(n_classes + 1) - 0.5,    
  cmap=cmap,                        
    zorder=1)
    ax.set(xlim=xlim, ylim=ylim)
#定義可設(shè)置深度的決策樹分類器def depth_tree(depth=5):    clf = DecisionTreeClassifier(max_depth=depth, random_state=0)    visualize_tree(clf, X, y)

深度為1的決策樹分類器,分類效果

from sklearn.tree import DecisionTreeClassifiertree = DecisionTreeClassifier().fit(X, y)visualize_classifier(DecisionTreeClassifier(), X, y)

深度為5的決策樹分類器,分類效果

depth_tree(depth=5)

深度為10的決策樹分類器,分類效果

depth_tree(depth=10)

深度為15的決策樹分類器,分類效果

depth_tree(depth=15)

如上圖,當(dāng)決策樹的深度不斷增加時(shí),會(huì)出現(xiàn)不同的分類區(qū)域,比如當(dāng)depth=10時(shí),在黃色和藍(lán)色之間存在一條紫色區(qū)域,這塊數(shù)據(jù)應(yīng)該是噪聲或者特定采樣的結(jié)果,這塊不能歸為紫色一類,這種現(xiàn)象其實(shí)就是過擬合。

可以通過組合多個(gè)分類器(這里是決策樹分類器)來減少這個(gè)種過擬合的影響。這也是Bagging的思想。

下面就是使用Bagging來組合100個(gè)DecisionTreeClassifier來進(jìn)行測試。其中使用80%的數(shù)據(jù)來隨機(jī)化數(shù)據(jù)

from sklearn.tree import DecisionTreeClassifierfrom sklearn.ensemble import BaggingClassifier
tree = DecisionTreeClassifier()bag = BaggingClassifier(tree, n_estimators=100, max_samples=0.8,                        random_state=1)
bag.fit(X, y)visualize_classifier(bag, X, y)

也可以直接使用Scikit-learn中已定義好的RandomForestClassifier來實(shí)現(xiàn)

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=0)visualize_classifier(model, X, y);

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

    關(guān)注

    66

    文章

    8406

    瀏覽量

    132563
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84628
  • 隨機(jī)森林
    +關(guān)注

    關(guān)注

    1

    文章

    22

    瀏覽量

    4268

原文標(biāo)題:機(jī)器學(xué)習(xí)筆記系列(十四) | Random Forest算法 python實(shí)現(xiàn)

文章出處:【微信號(hào):AI_class_vip,微信公眾號(hào):人工智能學(xué)研社】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    利用python實(shí)現(xiàn)KNN算法

    K近鄰python實(shí)現(xiàn)
    發(fā)表于 10-25 17:24

    Python的Apriori算法和FP-Growth算法是什么

    [源碼和文檔分享]基于Python實(shí)現(xiàn)的Apriori算法和FP-Growth算法的頻繁項(xiàng)集挖掘的研究與實(shí)現(xiàn)
    發(fā)表于 06-04 12:49

    KNN分類算法python代碼實(shí)現(xiàn)

    kNN分類算法Python實(shí)現(xiàn)
    發(fā)表于 06-05 12:02

    Python實(shí)現(xiàn)k-近鄰算法

    算法。5、測試算法:計(jì)算錯(cuò)誤率。6、使用算法:首先需要輸入樣本數(shù)據(jù)和結(jié)構(gòu)化的輸出結(jié)果,然后運(yùn)行k-近鄰算法判定輸入數(shù)據(jù)分別屬于哪個(gè)分類,最后應(yīng)用對(duì)計(jì)算出的分類執(zhí)行后續(xù)的處理。關(guān)于k-近
    發(fā)表于 01-04 14:03

    random

    random.rar
    發(fā)表于 02-25 15:58 ?6次下載

    BP神經(jīng)網(wǎng)絡(luò)算法 python實(shí)現(xiàn)

    直接上代碼是最有效的學(xué)習(xí)方式。這篇教程通過由一段簡短的 python 代碼實(shí)現(xiàn)的非常簡單的實(shí)例來講解 BP 反向傳播算法
    發(fā)表于 12-29 14:06 ?2.2w次閱讀
    BP神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>算法</b> <b class='flag-5'>python</b><b class='flag-5'>實(shí)現(xiàn)</b>

    大數(shù)據(jù)分析到底需要多少種工具_(dá)大數(shù)據(jù)分析總結(jié)

    大數(shù)據(jù)分析性能的好壞,也就是說機(jī)器學(xué)習(xí)預(yù)測的準(zhǔn)確率,與使用的學(xué)習(xí)算法、問題的性質(zhì)、數(shù)據(jù)集的特性包括數(shù)據(jù)規(guī)模、數(shù)據(jù)特征等都有關(guān)系。一般地,Ensemble方法包括Random Forest
    發(fā)表于 01-05 14:37 ?1.2w次閱讀
    大數(shù)據(jù)<b class='flag-5'>分析</b>到底需要多少種工具_(dá)大數(shù)據(jù)<b class='flag-5'>分析</b>總結(jié)

    蟻群算法python編程實(shí)現(xiàn)

    本文主要介紹了Python編程實(shí)現(xiàn)蟻群算法詳解,涉及螞蟻算法的簡介,主要原理及公式,以及Python中的
    發(fā)表于 02-02 10:36 ?7463次閱讀
    蟻群<b class='flag-5'>算法</b><b class='flag-5'>python</b>編程<b class='flag-5'>實(shí)現(xiàn)</b>

    Python基礎(chǔ)教程之《Python機(jī)器學(xué)習(xí)—預(yù)測分析核心算法》免費(fèi)下載

     在學(xué)習(xí)和研究機(jī)器學(xué)習(xí)的時(shí)候,面臨令人眼花繚亂的算法,機(jī)器學(xué)習(xí)新手往往會(huì)不知所措。本書從算法Python 語言實(shí)現(xiàn)的角度,幫助讀者認(rèn)識(shí)機(jī)器學(xué)習(xí)。
    發(fā)表于 09-29 08:00 ?19次下載

    多元統(tǒng)計(jì)分析:R與Python實(shí)現(xiàn)

    多元統(tǒng)計(jì)分析:R與Python實(shí)現(xiàn)說明。
    發(fā)表于 05-27 11:27 ?14次下載

    Python實(shí)現(xiàn)所有算法-基本牛頓法

    Python實(shí)現(xiàn)所有算法-二分法 Python實(shí)現(xiàn)所有算法-力系統(tǒng)是否靜態(tài)平衡
    的頭像 發(fā)表于 07-13 10:40 ?1641次閱讀

    [源代碼]Python算法詳解

    [源代碼]Python算法詳解[源代碼]Python算法詳解
    發(fā)表于 06-06 17:50 ?0次下載

    基于Python實(shí)現(xiàn)隨機(jī)森林算法

    機(jī)器學(xué)習(xí)算法是數(shù)據(jù)挖掘、數(shù)據(jù)能力分析和數(shù)學(xué)建模必不可少的一部分,而隨機(jī)森林算法和決策樹算法是其中較為常用的兩種算法,本文將會(huì)對(duì)隨機(jī)森林
    的頭像 發(fā)表于 09-21 11:17 ?1200次閱讀
    基于<b class='flag-5'>Python</b><b class='flag-5'>實(shí)現(xiàn)</b>隨機(jī)森林<b class='flag-5'>算法</b>

    如何使用Python生成四位隨機(jī)數(shù)字

    為了實(shí)現(xiàn)這些目標(biāo),Python 為我們提供了random() 模塊。random() 是一個(gè)內(nèi)置的 Python 模塊,用于生成隨機(jī)數(shù)。
    的頭像 發(fā)表于 04-15 12:47 ?650次閱讀

    Python建模算法與應(yīng)用

    Python作為一種功能強(qiáng)大、免費(fèi)、開源且面向?qū)ο蟮木幊陶Z言,在科學(xué)計(jì)算、數(shù)學(xué)建模、數(shù)據(jù)分析等領(lǐng)域展現(xiàn)出了卓越的性能。其簡潔的語法、對(duì)動(dòng)態(tài)輸入的支持以及解釋性語言的本質(zhì),使得Python在多個(gè)平臺(tái)
    的頭像 發(fā)表于 07-24 10:41 ?527次閱讀
    主站蜘蛛池模板: 麻豆天美国产一区在线播放| 色小妹影院| 啊灬啊灬啊灬快高潮视频 | 亚洲精品久久无码AV片银杏| 精品少妇爆AV无码专区| 洲精品无码高潮喷水A片| 青草视频久久| 国产囗交10p| 3D漫画H精品啪啪无码| 欧美精品中文字幕亚洲专区| 国产精品青青青高清在线密亚| 亚洲看片网站| 人妻熟女斩五十路0930| asian4you裸模| 撕开美女的衣服2| 久久亚洲网站| 国产成人aaa在线视频免费观看| 亚洲AV久久无码精品国产网站| 日韩精品 中文字幕 有码 | 同时被两个男人轮流舔| 好男人视频免费高清在线观看www| 2021精品国产综合久久| 善良的小峓子2在钱中文版女主角| 精品人妻无码一区二区三区蜜桃臀 | 国产高清-国产av| 婬香婬色天天视频| 欧美人妖12p| 狠狠色丁香婷婷久久综合| avtt天堂网Av无码| 午夜福利电影| 年轻的女职工在线观看| 国产成人精品午夜福麻豆报告| 邪恶肉肉全彩色无遮琉璃神社| 毛片999| 调教日本美女| 少妇无码太爽了视频在线播放 | 无码人妻精品一区二区蜜桃色| 精品一卡2卡三卡4卡乱码精品视频| 久久88综合| 国产精品人妻在线观看| 91av电影在线观看|