1. 程式人生 > >Python資料探勘課程 四.決策樹DTC資料分析及鳶尾資料集分析

Python資料探勘課程 四.決策樹DTC資料分析及鳶尾資料集分析

        希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~

一. 分類及決策樹介紹


1.分類


        分類其實是從特定的資料中挖掘模式,作出判斷的過程。比如Gmail郵箱裡有垃圾郵件分類器,一開始的時候可能什麼都不過濾,在日常使用過程中,我人工對於每一封郵件點選“垃圾”或“不是垃圾”,過一段時間,Gmail就體現出一定的智慧,能夠自動過濾掉一些垃圾郵件了。
        這是因為在點選的過程中,其實是給每一條郵件打了一個“標籤”,這個標籤只有兩個值,要麼是“垃圾”,要麼“不是垃圾”,Gmail就會不斷研究哪些特點的郵件是垃圾,哪些特點的不是垃圾,形成一些判別的模式,這樣當一封信的郵件到來,就可以自動把郵件分到“垃圾”和“不是垃圾”這兩個我們人工設定的分類的其中一個。


        分類學習主要過程如下:
       (1)訓練資料集存在一個類標記號,判斷它是正向資料集(起積極作用,不垃圾郵件),還是負向資料集(起抑制作用,垃圾郵件);
       (2)然後需要對資料集進行學習訓練,並構建一個訓練的模型;
       (3)通過該模型對預測資料集進預測,並計算其結果的效能。


2.決策樹(decision tree)


        決策樹是用於分類和預測的主要技術之一,決策樹學習是以例項為基礎的歸納學習演算法,它著眼於從一組無次序、無規則的例項中推理出以決策樹表示的分類規則。構造決策樹的目的是找出屬性和類別間的關係,用它來預測將來未知類別的記錄的類別。它採用自頂向下的遞迴方式,在決策樹的內部節點進行屬性的比較,並根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。
        決策樹演算法根據資料的屬性採用樹狀結構建立決策模型, 決策樹模型常用來解決分類和迴歸問題。常見的演算法包括:分類及迴歸樹(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機森林(Random Forest), 多元自適應迴歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine, GBM)。
        決策數有兩大優點:1)決策樹模型可以讀性好,具有描述性,有助於人工分析;2)效率高,決策樹只需要一次構建,反覆使用,每一次預測的最大計算次數不超過決策樹的深度。

        示例1:

        下面舉兩個例子,參考下面文章,強烈推薦大家閱讀,尤其是決策樹原理。
        演算法雜貨鋪——分類演算法之決策樹(Decision tree) - leoo2sk
        這個也是我上課講述的例子,引用上面文章的。通俗來說,決策樹分類的思想類似於找物件。現想象一個女孩的母親要給這個女孩介紹男朋友,於是有了下面的對話:

      女兒:多大年紀了?
      母親:26。
      女兒:長的帥不帥?
      母親:挺帥的。
      女兒:收入高不?
      母親:不算很高,中等情況。
      女兒:是公務員不?
      母親:是,在稅務局上班呢。
      女兒:那好,我去見見。


        這個女孩的決策過程就是典型的分類樹決策。相當於通過年齡、長相、收入和是否公務員對將男人分為兩個類別:見和不見。假設這個女孩對男人的要求是:30歲以下、長相中等以上並且是高收入者或中等以上收入的公務員,那麼這個可以用下圖表示女孩的決策邏輯。


        示例2:
        另一個課堂上的例子,參考CSDN的大神lsldd的文章,推薦大家閱讀學習資訊熵。
        用Python開始機器學習(2:決策樹分類演算法)
        假設要構建這麼一個自動選好蘋果的決策樹,簡單起見,我只讓他學習下面這4個樣本:

  1. 樣本    紅     大      好蘋果    
  2. 0111
  3. 1101
  4. 2010
  5. 3000
        樣本中有2個屬性,A0表示是否紅蘋果。A1表示是否大蘋果。
        本例僅2個屬性。那麼很自然一共就只可能有2棵決策樹,如下圖所示:



        決策樹構建的基本步驟如下:
        1. 開始,所有記錄看作一個節點;
        2. 遍歷每個變數的每一種分割方式,找到最好的分割點;
        3. 分割成兩個節點N1和N2;
        4. 對N1和N2分別繼續執行2-3步,直到每個節點足夠“純”為止。



二. 鳶尾花卉Iris資料集

        在Sklearn機器學習包中,集成了各種各樣的資料集,上節課講述Kmeans使用的是一個NBA籃球運動員資料集,需要定義X多維矩陣或讀取檔案匯入,而這節課使用的是鳶尾花卉Iris資料集,它是很常用的一個數據集。
        資料集來源:Iris plants data set - KEEL dataset
        該資料集一共包含4個特徵變數,1個類別變數。共有150個樣本,鳶尾有三個亞屬,分別是山鳶尾 (Iris-setosa),變色鳶尾(Iris-versicolor)和維吉尼亞鳶尾(Iris-virginica)。
        iris是鳶尾植物,這裡儲存了其萼片和花瓣的長寬,共4個屬性,鳶尾植物分三類。



        iris裡有兩個屬性iris.data,iris.target。
        data裡是一個矩陣,每一列代表了萼片或花瓣的長寬,一共4列,每一列代表某個被測量的鳶尾植物,一共取樣了150條記錄。程式碼如下:
  1. #匯入資料集iris
  2. from sklearn.datasets import load_iris   
  3. #載入資料集
  4. iris = load_iris()  
  5. #輸出資料集
  6. print iris.data  
         輸出如下所示:
  1. [[ 5.13.51.40.2]  
  2.  [ 4.93.1.40.2]  
  3.  [ 4.73.21.30.2]  
  4.  [ 4.63.11.50.2]  
  5.  [ 5.3.61.40.2]  
  6.  [ 5.43.91.70.4]  
  7.  [ 4.63.41.40.3]  
  8.  [ 5.3.41.50.2]  
  9.  [ 4.42.91.40.2]  
  10.  ....  
  11.  [ 6.73.5.22.3]  
  12.  [ 6.32.55.1.9]  
  13.  [ 6.53.5.22. ]  
  14.  [ 6.23.45.42.3]  
  15.  [ 5.93.5.11.8]]  
         target是一個數組,儲存了data中每條記錄屬於哪一類鳶尾植物,所以陣列的長度是150,陣列元素的值因為共有3類鳶尾植物,所以不同值只有3個。種類:
         Iris Setosa(山鳶尾)
         Iris Versicolour(雜色鳶尾)
         Iris Virginica(維吉尼亞鳶尾)
  1. #輸出真實標籤
  2. print iris.target  
  3. print len(iris.target)  
  4. #150個樣本 每個樣本4個特徵
  5. print iris.data.shape    
        輸出結果如下:
  1. [0000000000000000000000000000000000000
  2.  0000000000000111111111111111111111111
  3.  1111111111111111111111111122222222222
  4.  2222222222222222222222222222222222222
  5.  22]  
  6. 150
  7. (150L4L)  
        可以看到,類標共分為三類,前面50個類標位0,中間50個類標位1,後面為2。
        下面給詳細介紹使用決策樹進行對這個資料集進行測試的程式碼。

三. 決策樹實現鳶尾資料集分析

1. DecisionTreeClassifier

 
        Sklearn機器學習包中,決策樹實現類是DecisionTreeClassifier,能夠執行資料集的多類分類。
        輸入引數為兩個陣列X[n_samples,n_features]和y[n_samples],X為訓練資料,y為訓練資料的標記資料。
        DecisionTreeClassifier構造方法為:
  1. sklearn.tree.DecisionTreeClassifier(criterion='gini'
  2.                       , splitter='best'
  3.                       , max_depth=None
  4.                       , min_samples_split=2
  5.                       , min_samples_leaf=1
  6.                       , max_features=None
  7.                       , random_state=None
  8.                       , min_density=None
  9.                       , compute_importances=None
  10.                       , max_leaf_nodes=None)  
        鳶尾花資料集使用決策樹的程式碼如下:
  1. # -*- coding: utf-8 -*-
  2. 相關推薦

    Python資料課程 .決策DTC資料分析鳶尾資料分析

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~ 一. 分類及決策樹介紹 1.分類         分類其實是從特定的資料中挖掘模式,作

    python資料分析資料》——ID3決策學習筆記

    ID3決策樹 決策樹在分類預測和規則提取中有著廣泛的應用。他是一樹狀結構,每一個節點對應著一個分類,非葉節點對應著在某個屬性上的劃分,根據樣本在該屬性上的不同取值將其劃分成若干個子集。構造決策樹的核心問題就是如何選擇適當的屬性對樣本進行拆分。 基本原理 ————————希望自己能用

    Thinking in SQL系列之資料C4.5決策演算法

    原創: 牛超   2017-02-11   Mail:[email protected] C4.5是一系列用在機器學習和資料探勘的分類問題中的演算法。它的目標是監督學習:給定一個數據集,其中的每一個元組都能用一組屬性值來描述,每一個元組屬於一個互斥的類別中的某一

    資料學習筆記-決策演算法淺析(含Java實現)

    目錄 一、通俗理解決策樹演算法原理 二、舉例說明演算法執行過程 三、Java實現 本文基於書籍《資料探勘概念與技術》,由於剛接觸Data Mining,所以可能有理解不到位的情況,記錄學習筆記,提升自己對演算法的理解。 程式碼下方有,如果有金幣的童鞋可以貢獻一下給無恥的

    Python資料課程】七.PCA降維操作subplot子圖繪製

            這篇文章主要介紹四個知識點,也是我那節課講課的內容。        1.PCA降維操作;        2.Python中Sklearn的PCA擴充套件包;        3.Matplotlib的subplot函式繪製子圖;        4.通過Kmean

    python資料課程 十三.WordCloud詞雲配置過程詞頻分析

    一. 安裝WordCloud         在使用WordCloud詞雲之前,需要使用pip安裝相應的包。        pip install WordCloud         pip install jieba         其中WordCloud是詞雲,ji

    機器學習——十大資料之一的決策CART演算法

    本文始發於個人公眾號:TechFlow,原創不易,求個關注 今天是**機器學習專題**的第23篇文章,我們今天分享的內容是十大資料探勘演算法之一的CART演算法。 CART演算法全稱是**Classification and regression tree**,也就是分類迴歸樹的意思。和之前介紹

    Python資料課程.決策DTC資料分析鳶尾資料分析

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~一. 分類及決策樹介紹1.分類        分類其實是從特定的資料中挖掘模式,作出判斷的過程。比如Gmail郵箱

    python資料課程】十九.鳶尾花資料視覺化、線性迴歸、決策花樣分析

    這是《Python資料探勘課程》系列文章,也是我這學期上課的部分內容。本文主要講述鳶尾花資料集的各種分析,包括視覺化分析、線性迴歸分析、決策樹分析等,通常一個數據集是可以用於多種分析的,希望這篇文章對大

    python資料課程】十八.線性迴歸多項式迴歸分析個案例分享

    這是《Python資料探勘課程》系列文章,也是我這學期大資料金融學院上課的部分內容。本文主要講述和分享線性迴歸作業中,學生們做得比較好的四個案例,經過我修改後供大家學習,內容包括:    1.線性迴歸預測Pizza價格案例    2.線性迴歸分析波士頓房價案例    3.隨機

    python資料課程】十.Scipy呼叫curve_fit實現曲線擬合

            前面系列文章講過各種知識,包括繪製曲線、散點圖、冪分佈等,而如何在在散點圖一堆點中擬合一條直線,也變得非常重要。這篇文章主要講述呼叫Scipy擴充套件包的curve_fit函式實現曲線擬

    Python資料課程 六.Numpy、Pandas和Matplotlib包基礎知識

            前面幾篇文章採用的案例的方法進行介紹的,這篇文章主要介紹Python常用的擴充套件包,同時結合資料探勘相關知識介紹該包具體的用法,主要介紹Numpy、Pandas和Matplotlib三個包。目錄:         一.Python常用擴充套件包  

    Python資料課程】五.線性迴歸知識預測糖尿病例項

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~        同時這篇文章是我上課的內容,所以參考了一些知識,強烈推薦大家學習斯坦福的機器學習Ng教授課程和Sc

    python資料課程】十.Pandas、Matplotlib、PCA繪圖實用程式碼補充

    這篇文章主要是最近整理《資料探勘與分析》課程中的作品及課件過程中,收集了幾段比較好的程式碼供大家學習。同時,做資料分析到後面,除非是研究演算法創新的,否則越來越覺得資料非常重要,才是有價值的東西。後面的課程會慢慢講解Python應用在Hadoop和Spark中,以及netwo

    python資料課程】十五.Matplotlib呼叫imshow()函式繪製熱圖

    前面系列文章講過資料探勘的各種知識,最近在研究人類時空動力學分析和冪率定律,發現在人類興趣轉移模型中,可以通過熱圖(斑圖)來進行描述的興趣轉移,如下圖所示。下一篇文章將簡單普及人類動力學相關知識研究。這

    python資料課程】十二.Pandas、Matplotlib結合SQL語句對比圖分析

    一. 直方圖四圖對比        資料庫如下所示,包括URL、作者、標題、摘要、日期、閱讀量和評論數等。        執行結果如下所示,其中繪製多個圖的核心程式碼為:        p1 = plt.subplot(221)        plt.bar(ind, num

    python資料課程】十六.邏輯迴歸LogisticRegression分析鳶尾花資料

    今天是教師節,容我先感嘆下。祝天下所有老師教師節快樂,這是自己的第二個教師節,這一年來,無限感慨,有給一個人的指導,有給十幾個人講畢設,有幾十人的實驗,有上百人的課堂,也有給上千人的Python網路直播

    Python資料課程】六.Numpy、Pandas和Matplotlib包基礎知識

            前面幾篇文章採用的案例的方法進行介紹的,這篇文章主要介紹Python常用的擴充套件包,同時結合資料探勘相關知識介紹該包具體的用法,主要介紹Numpy、Pandas和Matplotlib三

    Python資料課程 五.線性迴歸知識預測糖尿病例項

            希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~         同時這篇文章是我上課的內容,所以參考了一些知識,強烈推薦大家學習斯坦福的機器學習Ng教

    Python資料課程】八.關聯規則挖掘Apriori實現購物推薦

            這篇文章主要介紹三個知識點,也是我《資料探勘與分析》課程講課的內容。        1.關聯規則挖掘概念及實現過程;        2.Apriori演算法挖掘頻繁項集;        3.Python實現關聯規則挖掘及置信度、支援度計算。一. 關聯規則挖掘概