決策樹:算法
決策樹算法
|
算法 描述
|
---|---|
C4.5算法 | C4.5決策樹生成算法至關於ID3算法的重要改進是使用信息增益率來選擇節點屬性.C4.5算法可疑克服ID3算法存在的不足:ID3算法只適用於離散的描述屬性,而C4.5算法即可以處理離散的描述性,也能夠處理連續的描述屬性 |
CART算法 | CART決策樹是一種十分有效的非參數分類和迴歸方法,經過構建樹,修剪樹,評估樹來構建一個二叉樹.當終結點是連續變量時,該樹爲迴歸樹,當終結點是分類變量,該樹爲分類樹 |
ID3算法 | 其核心的是在決策樹的各級節點上,使用信息增益方法做爲屬性的選擇標準,來幫助肯定生成每一個節點是所應採用的合適屬性 |
ID3算法簡介及基本原理app
序號,天氣,是否週末,是否促銷,銷量 1,壞,是,是,高 2,壞,是,是,高 3,壞,是,是,高 4,壞,否,是,高 5,壞,否,是,高 6,好,否,否,低 7,好,是,否,低 8,好,是,是,高 9,好,是,是,高 10,好,否,是,高 11,壞,是,是,低 12,壞,是,否,低 13,壞,否,否,低 14,好,是,是,高 15,好,是,是,高 16,好,否,是,高 17,好,否,是,高 18,壞,否,是,低 19,壞,否,是,低 20,壞,是,否,低 21,壞,是,否,低 22,好,是,是,高 23,好,否,是,高 24,好,否,是,高 25,好,否,否,低 26,壞,否,否,低 27,壞,是,否,低 28,壞,是,是,高 29,好,是,是,高 30,好,否,否,低 31,好,否,是,低 32,壞,是,是,高 33,壞,是,是,低 34,壞,是,是,低
# -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding("utf-8") """ 利用ID3決策樹算法預測銷量高低 """ # 參數初始化 import pandas as pd data = pd.read_csv("./practice_data.csv", header=None, sep=",", names=["number", "tianqi", "weekend", "pt", "count"]) print data["tianqi"] # 數據是類別標籤,要將她轉換成數據 # 用1來表示"好", "是", "高"這三個屬性,用-1來表示"壞","否","低" data[data["tianqi"] == u"好"] = 1 data[data["tianqi"] == u"壞"] = -1 print data["tianqi"] data[data["weekend"] == u"是"] = 1 data[data["weekend"] == u"否"] = -1 print data["weekend"] data[data["pt"] == u"是"] = 1 data[data["pt"] == u"否"] = -1 data[data["count"] == u"高"] = 1 data[data["count"] == u"低"] = -1 print data # print data x = data.iloc[:,:3].as_matrix().astype(int) y = data.iloc[:,3].as_matrix().astype(int) from sklearn.tree import DecisionTreeClassifier as DTC dtc = DTC(criterion="entropy") # 創建決策樹模型, 基於信息熵 dtc.fit(x, y) # 訓練模型 # 導入相關函數,可視化決策樹 # 導出的結果是一個dot文件, 須要安裝Graphviz才能將它轉化爲pdf或png等格式 from sklearn.tree import export_graphviz from sklearn.externals.six import StringIO with open("tree.dot", "w") as f: f = export_graphviz(dtc, feature_names=x.columns, out_file=f)