機器學習之決策樹在sklearn中的實現

2021-01-10 CDA數據分析師

小夥伴們大家好~o( ̄▽ ̄)ブ,首先聲明一下,我的開發環境是Jupyter lab,所用的庫和版本大家參考:

Python 3.7.1(你的版本至少要3.4以上

Scikit-learn 0.20.0 (你的版本至少要0.20

Graphviz 0.8.4 (沒有畫不出決策樹哦,安裝代碼conda install python-graphviz

Numpy 1.15.3, Pandas 0.23.4, Matplotlib 3.0.1, SciPy 1.1.0

用SKlearn 建立一棵決策樹

這裡採用的數據集是SKlearn中的紅酒數據集。

1 導入需要的算法庫和模塊

<pre spellcheck="false" contenteditable="true" cid="n11" mdtype="fences" >from sklearn import tree #導入tree模塊from sklearn.datasets import load_wine #導入紅酒數據集from sklearn.model_selection import train_test_split #導入訓練集和測試集切分包</pre>

2 探索數據

<pre spellcheck="false" lang="python " contenteditable="true" cid="n13" mdtype="fences" >wine = load_wine()wine.datawine.data.shapewine.targetwine.target.shape</pre>

運行的結果是這樣子的:

data就是該數據集的特徵矩陣,從運行結果可以看出,該紅酒數據集一共有178條記錄,13個特徵。

特徵矩陣中有178條記錄,相對應的標籤Y就有178個數據。

如果wine是一張表,應該長這樣:

<pre spellcheck="false" contenteditable="true" cid="n20" mdtype="fences" >import pandas as pdpd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)</pre>

這是數據集特徵列名和標籤分類

<pre spellcheck="false" contenteditable="true" cid="n23" mdtype="fences" >wine.feature_nameswine.target_names</pre>

3 分訓練集和測試集

這裡選取30%作為測試集。切分好之後,訓練集有124條數據,測試集有54條數據。

<pre spellcheck="false" contenteditable="true" cid="n28" mdtype="fences" >Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)Xtrain.shapeXtest.shape</pre>

4 建立模型

<pre spellcheck="false" contenteditable="true" cid="n32" mdtype="fences" >clf = tree.DecisionTreeClassifier(criterion="entropy") #初始化樹模型clf = clf.fit(Xtrain, Ytrain) #實例化訓練集score = clf.score(Xtest, Ytest) #返回預測的準確度score</pre>

5 畫出一棵樹吧

<pre spellcheck="false" contenteditable="true" cid="n36" mdtype="fences" >feature_name = ['酒精','蘋果酸','灰','灰的鹼性','鎂','總酚','類黃酮','非黃烷類酚類','花青素','顏色強度','色調','od280/od315稀釋葡萄酒','脯氨酸']import graphvizdot_data = tree.export_graphviz(clf,out_file=None,feature_names= feature_name,class_names=["琴酒","雪莉","貝爾摩德"],filled=True,rounded=True)graph = graphviz.Source(dot_data)graph</pre>

6 探索決策樹

<pre spellcheck="false" contenteditable="true" cid="n40" mdtype="fences" >#特徵重要性clf.feature_importances_[*zip(feature_name,clf.feature_importances_)]</pre>

到現在為止,我們已經學會建立一棵完整的決策樹了。有興趣的話,動手建立一棵屬於自己的決策樹吧~

相關焦點

  • Python機器學習sklearn模塊——決策樹
    決策樹可以用來解決分類與回歸問題,是一種非線性模型;一課決策樹一般包含一個根節點、若干個內部節點和若干個葉節點;生產決策樹最關鍵的是如何選擇最優劃分屬性,我們希望分支節點所包含的樣本近可能的屬於同一類別,即節點的「純度」越來越高;而評估樣本集合純度的常用指標有信息增益、增益率和基尼指數;決策樹容易出現過擬合狀況,因為它們可以通過精確的描述每個訓練樣本的 特徵而構建出複雜的決策樹
  • SKlearn實現鳶尾花分類:決策樹
    決策樹簡介決策樹是一種特殊的樹形結構,一般由節點和有向邊組成。其中,節點表示特徵、屬性或者一個類。而有向邊包含有判斷條件。如圖所示,決策樹從根節點開始延伸,經過不同的判斷條件後,到達不同的子節點。而上層子節點又可以作為父節點被進一步劃分為下層子節點。
  • 機器學習之sklearn基礎教程!
    機器學習算法主要步驟有:調整算法本次分享主要把目光聚集在"選擇分類器並優化算法",我們將用學術界和工業界常用的機器學習庫sklearn,對算法進行實踐。本文內容:1.min_impurity_split:決策樹生長的最小純淨度。默認是0。自版本0.19起不推薦使用:不推薦使用min_impurity_split,而建議使用0.19中的min_impurity_decrease。min_impurity_split的默認值在0.23中已從1e-7更改為0,並將在0.25中刪除。
  • 機器學習實戰:決策樹原來這麼簡單
    上一篇:機器學習實戰-監督學習、無監督學習上一篇的文章中,我們主要對監督學習與無監督學習進行了講解,其實還有一個半監督學習,這個可以自行百度,也是比較簡單。這一篇中,我們來講解監督學習中經常用到的算法,決策樹。
  • 機器學習中決策樹的原理與算法 | 科普
    我們知道,在機器學習中有兩類十分重要的問題,一類是分類問題,一類是回歸問題。我們今天所要探討的就是在分類和回歸問題中所用到的一種非常基本的方法,叫決策樹。決策樹也是重要的標籤學習方法。這篇文章裡面的部分內容來自於 AI 慕課學院的《機器學習理論與實戰高級特訓班》課程筆記。
  • 如何用sklearn創建機器學習分類器?這裡有一份上手指南
    原作:Kasper Fredenslund林鱗 編譯自 Data Science Central量子位 出品 |分類器是數據挖掘中對樣本進行分類的方法的統稱,也是入坑機器學習的一項必備技能。這篇文章中,作者簡要介紹了用Python中的機器學習工具scikit-learn(sklearn)創建機器學習分類器的步驟與注意事項。
  • 進化決策樹:當機器學習從生物學中汲取靈感時
    圖1-日本的高速鐵路,新幹線,來源生物學知識也可以成為機器學習中靈感的來源。內容本文重點關注的一個例子是進化決策樹。這類分類器使用進化算法來構建魯棒性更強,性能更好的決策樹。進化算法依賴於生物進化啟發的機制。決策樹是什麼?如何根據進化算法搭建決策樹?與其它分類器相比,進化決策樹的表現如何?
  • 從決策樹到隨機森林:樹型算法的原理與實現
    本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。基於樹(Tree based)的學習算法在數據科學競賽中是相當常見的。這些算法給預測模型賦予了準確性、穩定性以及易解釋性。和線性模型不同,它們對非線性關係也能進行很好的映射。
  • 機器學習之sklearn中的降維算法
    PCA與SVDsklearn中降維算法都被包括在模塊decomposition中,這個模塊本質是一個矩陣分解模塊。在過去的十年中,如果要討論算法進步的先鋒,矩陣分解可以說是獨樹一幟。矩陣分解可以用在降維,深度學習,聚類分析,數據預處理,低緯度特徵學習,推薦系統,大數據分析等領域。
  • 機器學習|決策樹的生成過程是怎樣?(一)
    本文筆者將用具體例子講述決策樹的構建過程,分析:決策樹生成過程中有什麼樣的問題?一、基本概念決策樹的定義:首先,決策樹是一種有監督的分類算法——即給定X,Y值,構建X,Y的映射關係。不同於線性回歸等是多項式,決策樹是一種樹形的結構,一般由根節點、父節點、子節點、葉子節點構成如圖所示。
  • 基於Python的決策樹分類器與剪枝
    決策樹很適合處理不同數據類型的變量。決策樹算法在決定每個節點的拆分時考慮了所有可能的變量,可以獲得最大加權不純度增益的變量被用作特定節點的決策變量。在上面的例子中,使用「性別」作為決策變量的加權不純度增益是0.4,但是,假設使用「年級」作為決策變量,加權不純度增益0.56,算法將使用「年級」作為創建第一個分割的決策變量。
  • 將sklearn訓練速度提升100多倍,美國「返利網」開源sk-dist框架
    選自Medium作者:Evan Harris機器之心編譯參與:高璇、張倩在本文中,Ibotta(美國版「返利網」)機器學習和數據科學經理 Evan Harris 介紹了他們的開源項目 sk-dist。無論分配給任務的資源如何,此任務的掛起時間都將與決策樹的數量成線性比例。對於網格搜索,Spark ML 確實實現了並行性參數,將並行訓練單個模型。但是,每個單獨的模型仍在對分布在執行器中的數據進行訓練。如果按照模型的維度而非數據進行分布,那麼任務的總並行度可能是它的一小部分。最終,我們希望將我們的訓練分布在與 Spark ML 不同的維度上。
  • 機器學習中特徵選擇怎麼做?這篇文章告訴你
    ='_')Y = LabelEncoder().fit_transform(Y)X2 = StandardScaler().fit_transform(X)X_Train, X_Test, Y_Train, Y_Test = train_test_split(X2, Y, test_size = 0.30, random_state = 101)▍特徵重要性基於集合的決策樹模型
  • Python機器學習5:使用scikit-learn實現三種集成學習Bagging算法
    Bagging算法的常見三種模型如下:決策樹隨機森林極端隨機樹下面對這三種模型進行介紹,並利用scikit-learn實現這三種模型。決策樹對多種差異比較明顯的模型進行Bagging時,往往最終效果會非常好。常見的模型為決策樹模型,一般決策樹模型是在未剪枝情況下構建的。在下面代碼中,共創造了100棵樹。
  • 機器學習算法基礎(使用Python代碼)
    監督學習的例子:回歸,決策樹,隨機森林,KNN,邏輯回歸等。2.無監督學習工作原理:在此算法中,我們沒有任何目標或結果變量來進行預測/估計。它用於將人群進行聚類到不同群體中,廣泛用於將客戶劃分到不同的群體中去並進行具體的幹預。無監督學習的例子:Apriori算法,K-means。
  • 10大機器學習算法,看懂你就是數據科學家
    現在,你可以使用它們來適配機器學習中的曲線,用於非常小的低維數據集。對於大數據或多維度的數據集,你可能會需要過度擬合,所以不用費心。普通最小二乘法(OLS)具有封閉形式的解決方案,因此你不需要使用複雜的優化技術。
  • 機器學習之基於sklearn的KMeans聚類
    聚類算法,無監督學習的代表算法,又叫做「無監督分類」即在訓練的時候只需要特徵矩陣,不需要真實值標籤可以有效地幫助我們探索數據的自然分布一、KMeans算法的運行過程運行的流程如下:自動聚類時的質心點的每步驟變化如下:下圖中紅色
  • 以鳶尾花數據集為例,用Python對決策樹進行分類
    同時決策樹也存在劣勢,容易出現過度擬合就是其中之一。本教程主要介紹了用於分類的決策樹,也稱為分類樹。此外,本教程還將涵蓋:· 分類樹的解剖結構(樹的深度、根節點、決策節點、葉節點/終端節點)。同樣,算法選擇也會為不純節點選擇最佳分類點(我們將在下一節中介紹數學方法)在上圖中,樹的最大深度為2。樹深度可以衡量在進行預測之前可以進行多少次分裂。這個過程可以繼續進行更多分裂,直到樹儘可能純淨。分裂過程中的大量重複可能會導致形成擁有很多節點的分類樹。通常會導致訓練數據集過度擬合。幸運的是,實現大多數分類樹支持預剪枝來控制樹的最大深度,從而減少過度擬合。
  • 關於「樹」的算法:現實生活中的決策樹
    全文共2874字,預計學習時長8分鐘圖源:unsplash就像樹木是人類生活的重要組成部分一樣,基於樹的算法也是機器學習的重要組成部分樹的結構給了我們開發算法的靈感,並再將其反饋到機器,讓它們學習我們希望它們學習的東西,以解決現實生活中的問題。這些基於樹的學習算法被認為是最好和最常用的監督學習方法之一:決策樹、隨機森林、梯度提升等方法在各種數據科學問題中得到了廣泛應用。對於每一個機器學習的初學者來說,學習這些算法並將其用於建模非常重要。
  • 特徵選擇及基於Sklearn的實現
    VarianceThreshold是特徵選擇中的基礎方法,它將刪除方差未達到閾值的特徵。認為如果輸入樣本中有超過一定閾值(如90%)的某一特徵值,那就可以判定該特徵作用不大。默認情況下刪除所有零方差的特徵,即在所有樣本中具有相同特徵值的特徵。適用於特徵值為離散型變量的特徵,若特徵值為連續型變量需要進行離散化。