python機器學習之決策樹

決策樹整體上就是類似於一棵充滿if-else的樹。

信息:用來消除隨機不確定性的東西。

信息熵,單位是比特,可以用來代表不確定性

策略樹一種劃分的依據是:信息增益

:知道某種特徵之後,不確定性減少的最多,就可以先看這個特徵,即這個特徵的信息增益最大

g(D,A)=H(D)-H(D/A)

H(D)是信息熵,H(D/A)是條件熵,g(D,A)可以看成特徵A的信息增益。

決策樹太大,太深,會過於擬合,造成泛化能力不強

優點:簡單,可視化-可解釋能力強,不像深度學習,那麼深,很多都在做特徵提取,都不知道提取的是什麼,所以深度學習會被叫成黑盒子。

缺點:容易產生過擬合。

改進:1.剪枝cart算法

           2.隨機森林

下面以決策樹對鳶尾花進行分類

from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier,export_graphviz
def decision_iris():
    """
    用決策樹對鳶尾花進行分類
    :return:
    """
    #1.獲取數據集
    iris=load_iris()
    #2.劃分數據集
    x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target)
    #3.使用決策樹
    estimator=DecisionTreeClassifier(criterion="entropy")#entropy 表示以信息增益的方式
    estimator.fit(x_train,y_train)
    #4.模型評估
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比對真實值和預測值:\n", y_test == y_predict)
    # 2.計算準確率
    score = estimator.score(x_test, y_test)
    print("準確率爲:\n", score)
    #可視化決策樹
    export_graphviz(estimator,out_file="iris_tree.dot",feature_names=iris.feature_names)
    return None

結果爲:

除此之外,結果還有一個可視化文件iris_tree.dot,會在文件列表中,打開之後是這樣的形式:

這個可視化文件並沒有以樹的方式進行展示,這時需要打開一個網站:webgraphviz.com

然後粘貼到裏面,點擊Generate Graph,會生成樹的形狀,如

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章