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

Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法詳解

 更新時(shí)間:2019年07月04日 11:37:02   作者:Yeoman92  
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了決策樹(shù)算法的原理及使用sklearn庫(kù)實(shí)現(xiàn)決策樹(shù)的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python機(jī)器學(xué)習(xí)算法庫(kù)scikit-learn學(xué)習(xí)之決策樹(shù)實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

決策樹(shù)

決策樹(shù)(DTs)是一種用于分類(lèi)和回歸的非參數(shù)監(jiān)督學(xué)習(xí)方法。目標(biāo)是創(chuàng)建一個(gè)模型,通過(guò)從數(shù)據(jù)特性中推導(dǎo)出簡(jiǎn)單的決策規(guī)則來(lái)預(yù)測(cè)目標(biāo)變量的值。

例如,在下面的例子中,決策樹(shù)通過(guò)一組if-then-else決策規(guī)則從數(shù)據(jù)中學(xué)習(xí)到近似正弦曲線的情況。樹(shù)越深,決策規(guī)則越復(fù)雜,模型也越合適。

這里寫(xiě)圖片描述

決策樹(shù)的一些優(yōu)勢(shì)是:

  • 便于說(shuō)明和理解,樹(shù)可以可視化表達(dá);
  • 需要很少的數(shù)據(jù)準(zhǔn)備。其他技術(shù)通常需要數(shù)據(jù)標(biāo)準(zhǔn)化,需要?jiǎng)?chuàng)建虛擬變量,并刪除空白值。
  • 使用樹(shù)的成本是用于對(duì)樹(shù)進(jìn)行訓(xùn)練的數(shù)據(jù)點(diǎn)的對(duì)數(shù)。
  • 能夠處理數(shù)值和分類(lèi)數(shù)據(jù)。其他技術(shù)通常是專(zhuān)門(mén)分析只有一種變量的數(shù)據(jù)集。
  • 能夠處理多輸出問(wèn)題。
  • 使用白盒模型。如果一個(gè)給定的情況在模型中可以觀察到,那么這個(gè)條件的解釋很容易用布爾邏輯來(lái)解釋。相比之下,在黑盒模型中(例如:在人工神經(jīng)網(wǎng)絡(luò)中,結(jié)果可能更難解釋。
  • 可以使用統(tǒng)計(jì)測(cè)試驗(yàn)證模型。這樣就可以解釋模型的可靠性。
  • 即使它的假設(shè)在某種程度上違反了生成數(shù)據(jù)的真實(shí)模型,也會(huì)表現(xiàn)得很好。

決策樹(shù)的缺點(diǎn)包括:

  • 決策樹(shù)學(xué)習(xí)可能會(huì)生成過(guò)于復(fù)雜的樹(shù),不能代表普遍的規(guī)則,這就稱(chēng)為過(guò)擬合。修剪(目前不支持的)機(jī)制,設(shè)置葉片節(jié)點(diǎn)所需的最小樣本數(shù)目或設(shè)置樹(shù)的最大深度是避免此問(wèn)題的必要條件。
  • 決策樹(shù)可能不穩(wěn)定,因?yàn)閿?shù)據(jù)中的小變化可能導(dǎo)致生成完全不同的樹(shù)。這個(gè)問(wèn)題通過(guò)在一個(gè)集合中使用多個(gè)決策樹(shù)來(lái)減輕。
  • 實(shí)際的決策樹(shù)學(xué)習(xí)算法是基于啟發(fā)式算法的,例如在每個(gè)節(jié)點(diǎn)上進(jìn)行局部最優(yōu)決策的貪婪算法。這種算法不能保證返回全局最優(yōu)決策樹(shù)。通過(guò)在集合學(xué)習(xí)者中訓(xùn)練多個(gè)樹(shù),可以減少這種情況,在這里,特征和樣本是隨機(jī)抽取的。
  • 有些概念很難學(xué)習(xí),因?yàn)闆Q策樹(shù)無(wú)法很容易地表達(dá)它們,例如XOR、奇偶性或多路復(fù)用問(wèn)題。

分類(lèi)

決策樹(shù)分類(lèi)器(DecisionTreeClassifier)是一個(gè)能夠在數(shù)據(jù)集上執(zhí)行多類(lèi)分類(lèi)的類(lèi)。

與其他分類(lèi)器一樣,決策樹(shù)分類(lèi)器以輸入兩個(gè)數(shù)組作為輸入:數(shù)組X,稀疏或密集,[n_samples,n_features]保存訓(xùn)練樣本,以及數(shù)組Y的整數(shù)值,[n_samples],保存訓(xùn)練樣本的類(lèi)標(biāo)簽:

>>> from sklearn import tree
>>> X = [[0, 0], [1, 1]]
>>> Y = [0, 1]
>>> clf = tree.DecisionTreeClassifier()
>>> clf = clf.fit(X, Y)

模型可以用來(lái)預(yù)測(cè)樣本的類(lèi)別:

>>> clf.predict([[2., 2.]])
array([1])

或者,可以預(yù)測(cè)每個(gè)類(lèi)的概率,在葉片上同一類(lèi)的訓(xùn)練樣本的分?jǐn)?shù)

>>> clf.predict_proba([[2., 2.]])
array([[ 0., 1.]])

DecisionTreeClassifier可以同時(shí)進(jìn)行二進(jìn)制(其中標(biāo)簽為[- 1,1])分類(lèi)和多類(lèi)(標(biāo)簽為[0],……,k - 1])分類(lèi)。

使用虹膜數(shù)據(jù)集,我們可以構(gòu)建如下的樹(shù):

>>> from sklearn.datasets import load_iris
>>> from sklearn import tree
>>> iris = load_iris()
>>> clf = tree.DecisionTreeClassifier()
>>> clf = clf.fit(iris.data, iris.target)

訓(xùn)練之后,我們可以使用export_graphviz  將樹(shù)導(dǎo)出為Graphviz格式。下面是一個(gè)在整個(gè)iris(虹膜)數(shù)據(jù)集上輸出的樹(shù)示例:

>>> with open("iris.dot", 'w') as f:
...   f = tree.export_graphviz(clf, out_file=f)

然后我們可以使用Graphviz的dot工具來(lái)創(chuàng)建一個(gè)PDF文件(或者任何其他受支持的文件類(lèi)型):dot -Tpdf iris.dot -o iris.pdf

>>> import os
>>> os.unlink('iris.dot')

或者,如果我們安裝了Python模塊pydotplus,我們可以在Python中直接生成PDF文件(或任何其他受支持的文件類(lèi)型):

>>> import pydotplus
>>> dot_data = tree.export_graphviz(clf, out_file=None)
>>> graph = pydotplus.graph_from_dot_data(dot_data)
>>> graph.write_pdf("iris.pdf")

export_graphviz exporter 還支持各種各樣的選項(xiàng),包括根據(jù)它們的類(lèi)(或用于回歸的值)著色節(jié)點(diǎn),如果需要的話,還可以使用顯式變量和類(lèi)名IPython還可以使用Image()函數(shù)來(lái)顯示這些情節(jié):

>>> from IPython.display import Image
>>> dot_data = tree.export_graphviz(clf, out_file=None,
             feature_names=iris.feature_names,
             class_names=iris.target_names,
             filled=True, rounded=True,
             special_characters=True)
>>> graph = pydotplus.graph_from_dot_data(dot_data)
>>> Image(graph.create_png())

這里寫(xiě)圖片描述

模型可以用來(lái)預(yù)測(cè)樣本的類(lèi)別:

>>> clf.predict(iris.data[:1, :])
array([0])

或者,可以預(yù)測(cè)每個(gè)類(lèi)的概率,這是同一類(lèi)在葉子中的訓(xùn)練樣本的分?jǐn)?shù):

>>> clf.predict_proba(iris.data[:1, :])
array([[ 1., 0., 0.]])

這里寫(xiě)圖片描述

Examples:

Plot the decision surface of a decision tree on the iris dataset

回歸

這里寫(xiě)圖片描述

使用決策樹(shù)類(lèi)回歸,決策樹(shù)也可以應(yīng)用于回歸問(wèn)題。

在分類(lèi)設(shè)置中,fit方法將數(shù)組X和y作為參數(shù),只有在這種情況下,y被期望有浮點(diǎn)值而不是整數(shù)值:

>>> from sklearn import tree
>>> X = [[0, 0], [2, 2]]
>>> y = [0.5, 2.5]
>>> clf = tree.DecisionTreeRegressor()
>>> clf = clf.fit(X, y)
>>> clf.predict([[1, 1]])
array([ 0.5])

Examples:

Decision Tree Regression

多輸出問(wèn)題

一個(gè)多輸出問(wèn)題是一個(gè)受監(jiān)督的學(xué)習(xí)問(wèn)題,有幾個(gè)輸出可以預(yù)測(cè),即當(dāng)Y是一個(gè)二維數(shù)組[n_samples,n_output]。

當(dāng)輸出之間沒(méi)有相關(guān)性時(shí),解決這類(lèi)問(wèn)題的一個(gè)非常簡(jiǎn)單的方法是建立n個(gè)獨(dú)立的模型,即每一個(gè)輸出,然后使用這些模型獨(dú)立地預(yù)測(cè)每一個(gè)輸出。

然而,因?yàn)榭赡芘c相同輸入相關(guān)的輸出值本身是相關(guān)的,通常更好的方法是構(gòu)建一個(gè)能夠同時(shí)預(yù)測(cè)所有n輸出的單一模型。首先,它需要較低的培訓(xùn)時(shí)間,因?yàn)橹粯?gòu)建了一個(gè)估計(jì)值。其次,結(jié)果估計(jì)量的泛化精度通常會(huì)增加。

對(duì)于決策樹(shù),這種策略可以很容易地用于支持多輸出問(wèn)題。這需要以下更改:

  • 在葉子中存儲(chǔ)n個(gè)輸出值,而不是1;
  • 使用分割標(biāo)準(zhǔn)來(lái)計(jì)算所有n輸出的平均下降。

這個(gè)模塊提供了支持多輸出問(wèn)題的方法,通過(guò)DecisionTreeClassifier 和DecisionTreeRegressor實(shí)現(xiàn)這個(gè)策略。

如果決策樹(shù)符合大小(n_samples,n_output)的輸出數(shù)組Y,那么得到的估計(jì)值將是:

  • 預(yù)測(cè)輸出的n_output值;
  • predict_proba上輸出類(lèi)概率的n_output數(shù)組。

多輸出決策樹(shù)回歸中顯示了多輸出樹(shù)的回歸。在這個(gè)例子中,輸入X是一個(gè)單一的實(shí)際值,輸出Y是X的正弦和余弦。

這里寫(xiě)圖片描述

Examples:

決策樹(shù)多輸出回歸

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • windows系統(tǒng)Tensorflow2.x簡(jiǎn)單安裝記錄(圖文)

    windows系統(tǒng)Tensorflow2.x簡(jiǎn)單安裝記錄(圖文)

    這篇文章主要介紹了windows系統(tǒng)Tensorflow2.x簡(jiǎn)單安裝記錄(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python調(diào)用高德API實(shí)現(xiàn)批量地址轉(zhuǎn)經(jīng)緯度并寫(xiě)入表格的功能

    Python調(diào)用高德API實(shí)現(xiàn)批量地址轉(zhuǎn)經(jīng)緯度并寫(xiě)入表格的功能

    這篇文章主要介紹了Python調(diào)用高德API實(shí)現(xiàn)批量地址轉(zhuǎn)經(jīng)緯度并寫(xiě)入表格的功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 在Python中操作文件之seek()方法的使用教程

    在Python中操作文件之seek()方法的使用教程

    這篇文章主要介紹了在Python中操作文件之seek()方法的使用教程,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python 最大概率法進(jìn)行漢語(yǔ)切分的方法

    Python 最大概率法進(jìn)行漢語(yǔ)切分的方法

    今天小編就為大家分享一篇Python 最大概率法進(jìn)行漢語(yǔ)切分的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 對(duì)python append 與淺拷貝的實(shí)例講解

    對(duì)python append 與淺拷貝的實(shí)例講解

    今天小編就為大家分享一篇對(duì)python append 與淺拷貝的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python 一篇文章看懂時(shí)間日期對(duì)象

    Python 一篇文章看懂時(shí)間日期對(duì)象

    學(xué)習(xí)每一門(mén)語(yǔ)言多多少少會(huì)用到與時(shí)間相關(guān)的東西,咱們今天呢就談一談Python中的時(shí)間與日期對(duì)象。在Python中時(shí)間對(duì)象一般可以用來(lái)測(cè)量效率。日期對(duì)象用來(lái)處理日期與字符串之間的關(guān)系
    2022-03-03
  • python模塊導(dǎo)入方式淺析步驟

    python模塊導(dǎo)入方式淺析步驟

    這篇文章主要為大家介紹了python中模塊導(dǎo)入的方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Python Flask框架開(kāi)發(fā)之運(yùn)用SocketIO實(shí)現(xiàn)WebSSH方法詳解

    Python Flask框架開(kāi)發(fā)之運(yùn)用SocketIO實(shí)現(xiàn)WebSSH方法詳解

    Socket.IO本是一個(gè)面向?qū)崟r(shí)web應(yīng)用的JavaScript庫(kù),現(xiàn)在已成為擁有眾多語(yǔ)言支持的Web即時(shí)通訊應(yīng)用的框架。這篇文章主要介紹了Python 運(yùn)用SocketIO實(shí)現(xiàn)WebSSH方法
    2022-10-10
  • 基于Python編寫(xiě)一個(gè)B站全自動(dòng)抽獎(jiǎng)的小程序

    基于Python編寫(xiě)一個(gè)B站全自動(dòng)抽獎(jiǎng)的小程序

    本文將利用Python編寫(xiě)一個(gè)B站全自動(dòng)抽獎(jiǎng)的小程序,可以實(shí)時(shí)監(jiān)控自己關(guān)注的UP主,如果關(guān)注的UP主中有人發(fā)布了抽獎(jiǎng)的動(dòng)態(tài),就自動(dòng)參與這個(gè)抽獎(jiǎng)。這樣就能不錯(cuò)過(guò)任何一個(gè)可以暴富的機(jī)會(huì)了。需要的可以參考一下
    2022-03-03
  • python爬蟲(chóng)實(shí)現(xiàn)最新12306搶票

    python爬蟲(chóng)實(shí)現(xiàn)最新12306搶票

    這篇文章主要介紹了python爬蟲(chóng)實(shí)現(xiàn)最新12306搶票,每到放假過(guò)節(jié)的時(shí)候,很多人總是對(duì)于搶不到車(chē)票而煩惱,那么經(jīng)過(guò)我?guī)讉€(gè)小時(shí)的不懈努力,完成了基于python?的12306搶票爬蟲(chóng),現(xiàn)在分享給大家。希望對(duì)大家有所幫助
    2022-01-01

最新評(píng)論