欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python機器學習基礎決策樹與隨機森林概率論

 更新時間:2021年11月12日 15:08:48   作者:Swayzzu  
這篇文章主要為大家介紹了python機器學習基礎決策樹與隨機森林概率論詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

一、決策樹原理概述

1.決策樹原理

決策樹的分類原理,相當于程序中的if-then結構,通過條件判斷,來決定結果。

2.信息論

①信息熵

假設有32支球隊,在不知道任何信息的情況下,以二分法去猜冠軍,最多猜log(2)32 = 5次。此時:每個球隊的奪冠概率為1/32,那么:

5 = -(1/32log1/32 + 1/32log1/32 + ......)共32項相加。

若事先可以得知一點點信息,則使用二分法猜冠軍的時候,次數一定比5次小,那么它的準確信息量應該是:

H = -(p1logp1 + p2logp2 + ... + p32logp32)

則H稱為信息熵,單位為比特bit。

根據以上內容,可知,信息是和消除不確定性相聯系的。當毫無信息的時候,信息熵最大,只要有了一定的信息,那么信息熵就會減小,不確定性也會減小。

②決策樹的分類依據

信息增益:當得知一個特征條件之后,減少的信息熵的大小。計算公式如下:

每一個特征所對應的信息增益都可以通過上式計算出來,通過比較,信息增益最大的作為首要的分類標準。也就是說,每一個特征都可能對減小信息熵有作用,并且作用大小不一樣。作用越大,減少的信息熵越大,則該特征越重要,便可首先拿這個最重要的作為分類標準。

③其他決策樹使用的算法

其中,基尼系數對樣本的劃分更加仔細,甚至能對訓練集分類達到100%,但通常這種情況下,會導致模型在測試集中的表現不好,因為它為了達到更高的擬合度,會過于針對訓練集樣本,由此降低了普遍性。

④決策樹API

二、決策樹算法案例

1.案例概述

本案例中,使用泰坦尼克號上的乘客數據作為樣本,是否存活作為目標值。樣本特征包含年齡、性別、目的地、船艙類型等等。我們在模型訓練中,只使用了船艙類型(Pclass),性別(Sex),年齡(Age)這三個作為訓練集樣本特征。

2.數據處理

假設已經獲取到了數據集,并賦值給titan

找出特征值和目標值:x = titan[['Pclass', 'Age', 'Sex']] y = titan['Survived']

缺失值處理:x['Age'].fillna(x['Age'].mean(), inplace=True)

分割數據集:x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

3.特征工程

由于船艙類型和性別的數據都不是數字,因此需要用one-hot編碼來代替特征數據。通過字典數據處理,即可生成。因此,需要將訓練集轉換為字典,通過DictVectorizer轉換即可。(注意:轉換的是整個訓練集,而不是單獨轉換某幾列)

實例化轉換器:dict = DictVectorizer(sparse = False)

對訓練集轉換:x_train = dict.fit_transform(x_train.to_dict,(orient='records'))

對測試集轉換:x_test = dict.transform(x_test.to_dict(orient='records'))

4.使用決策樹進行預測

預測后可以使用graphviz查看圖像化的決策樹。需要先安裝,將導出的dot文件直接放在graphviz目錄下,在命令行,通過 dot -Tpng tree.dot -o tree.png命令即可導出png圖像。

dec = DecisionTreeClassifier()

訓練算法:dec.fit(x_train,y_train)

打印準確率:print(dec.score(x_test, y_test))

導出樹的結構:tree.export_graphviz(dec, out_file='D:/Graphviz/tree.dot', feature_names= [","])

注意,最后一個feature_names,直接在特征工程中,調用dict.get_feature_names,即可輸出所需內容。

5.決策樹優(yōu)缺點及改進

優(yōu)點:

原理及解釋較為簡單,并且可以將樹木可視化

需要很少的數據準備,其他技術通常需要數據歸一化

缺點:

決策樹學習者可以創(chuàng)建不能很好地推廣數據的過于復雜的樹,這被稱為過擬合。

決策樹可能不穩(wěn)定,因為數據的小變化可能會導致完全不同的樹被生成

改進:

減枝cart算法、隨機森林

三、隨機森林

1.集成學習方法

集成學習通過建立幾個模型組合的來解決單一預測問題。它的工作原理是生成多個分類器/模型,各自獨立地學習和作出預測。這些預測最后結合成單預測,因此優(yōu)于任何一個單分類的做出預測。

隨機森林就是一種繼承學習方法,定義:在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數而定。

2.單個樹建立過程

①隨機在N個樣本中,有放回地選擇一個樣本,重復N次,樣本可能重復

②隨機在M個特征中選出m個特征,m取值小于總特征M

假如建立了10棵決策樹,他們的樣本以及特征大多都是不一樣的。使用隨機有返回的抽樣(bootstrap抽樣)。

3.隨機森林API

隨機森林超參數:

n_estimator:決策樹數量

max_depth:每棵樹深度限制

4.隨機森林使用案例

還是用上面決策樹的案例,假設已經準備好了訓練集x_train, y_train,測試集x_test, y_test

rf = RandomForestClassifier()

由于隨機森林有超參數n_estimator,max_depth,因此可以使用網格搜索交叉驗證,對不同的參數組合進行一一驗證,尋找最好的參數組合模型。

設置超參數取值:param = {'n_estimator':[100,200,300,400,500], 'max_depth':[5,10,15,20]}

實例化算法:gc = GridSearchCV(rf, param_grid=param, cv=2) (假設使用二折驗證)

訓練算法:gc.fit(x_train, y_train)

輸出準確率:gc.score(x_test, y_test)

查看所選擇的參數模型:gc.best_params_

5.隨機森林的優(yōu)點

①在當前所有算法中,具有極好的準確率

②能夠有效地運行在大數據集上(樣本數、特征數)

③能夠處理具有高維特征的輸入樣本,而且不需要降維

④能夠評估各個特征在分類問題上的重要性

以上就是python機器學習基礎決策樹與隨機森林概率論的詳細內容,更多關于python決策樹與隨機森林概率論的資料請關注腳本之家其它相關文章!

相關文章

  • python經典趣味24點游戲程序設計

    python經典趣味24點游戲程序設計

    這篇文章主要介紹了python經典趣味24點游戲程序設計,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python 使用三引號時容易犯的小錯誤

    python 使用三引號時容易犯的小錯誤

    這篇文章主要介紹了python 使用三引號時容易犯的小錯誤,幫助新手學習,避免入坑,感興趣的朋友可以了解下
    2020-10-10
  • python導包的幾種方法(自定義包的生成以及導入詳解)

    python導包的幾種方法(自定義包的生成以及導入詳解)

    這篇文章主要介紹了python導包的幾種方法(自定義包的生成以及導入詳解),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 如何基于Python實現數字類型轉換

    如何基于Python實現數字類型轉換

    這篇文章主要介紹了如何基于Python實現數字類型轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Python實現將藍底照片轉化為白底照片功能完整實例

    Python實現將藍底照片轉化為白底照片功能完整實例

    這篇文章主要介紹了Python實現將藍底照片轉化為白底照片功能,結合完整實例形式分析了Python基于cv2庫進行圖形轉換操作的相關實現技巧,需要的朋友可以參考下
    2019-12-12
  • pytorch 改變tensor尺寸的實現

    pytorch 改變tensor尺寸的實現

    今天小編就為大家分享一篇pytorch 改變tensor尺寸的實現,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • pytorch機器學習softmax回歸的簡潔實現

    pytorch機器學習softmax回歸的簡潔實現

    這篇文章主要介紹了為大家介紹了pytorch機器學習中softmax回歸的簡潔實現方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python中Tkinter Scrollbar滾動條(窗口滑動條)

    Python中Tkinter Scrollbar滾動條(窗口滑動條)

    本文主要介紹了Python中Tkinter Scrollbar滾動條(窗口滑動條),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • 詳解Python3網絡爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數據獲得翻譯結果

    詳解Python3網絡爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數據獲得翻譯結果

    這篇文章主要介紹了Python3網絡爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數據獲得翻譯結果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 如何使用Python?繪制瀑布圖

    如何使用Python?繪制瀑布圖

    這篇文章主要介紹了如何使用Python?繪制瀑布圖,我們一起了解瀑布圖的重要性,以及如何使用不同的繪圖庫繪制瀑布圖。瀑布圖是一種二維圖表,專門用于了解隨著時間或多個步驟或變量的增量正負變化的影響,下文更多詳細內容需要的小伙伴可以參考一下
    2022-05-05

最新評論