python决策树分类预测_数据分类预测之python决策树
決策樹是一種樹狀結構,它的每一個葉節點對應著一個分類,非葉節點對應著在某個屬性上的劃分,根據樣本在該屬性上的不同取值將其劃分成若干個子集。對于非純的葉節點,多數類的標號給出到達這個節點的樣本所屬的類。構造決策樹的核心問題是在每一步如何選擇適當的屬性對樣本做拆分。對一個分類問題,從已知類標記的訓練樣本中學習并構造出決策樹是一個自上而下,分而治之的過程
決策樹方法在分類、預測、規則提取等領域有著廣泛應用。機器學習研究者J.Ross Quinlan 提出了ID3算法以后,決策樹在機器學習、數據挖掘領域得到了極大的發展,之后又提出了C4.5,成為了新的監督學習算法。另外還有CART分類算法,值得一提的是ID3和CART孫法都是采用類似的方法從訓練樣本中學習決策樹。
接下來簡單敘述一下這幾個算法:
ID3算法:
其核心是在決策樹的各級節點上,使用信息增益方法作為屬性的選擇標準,來幫助確定生成每個節點所應采用的合適屬性。
C4.5算法:
C4.5決策生成算法相對于ID3算法的重要改進是使用信息增益率來選擇節點屬性。C4.5算法可以克服ID3算法存在的不足:ID3適用于離散的描述屬性,而C4.5算法即能夠處理離散的描述屬性,也可以處理連續的描述屬性
CART算法:
CART決策樹是一種十分有效的非參數分類和回歸方法,通過構建樹、修建樹、評估樹來構建一個二叉樹。當終結點是連續變量時,該樹為回歸樹;當終結點是分類變量,該樹為分類樹。
本文主要介紹一下ID3算法。
ID3算法的簡介以及原理:
ID3算法給予信息熵來選擇最佳測試屬性。它選擇當前樣本集中具有最大信息增益值的屬性作為測試屬性;樣本集的劃分則依據測試屬性的取值進行,測試屬性有多少不同取值就將樣本集劃分為多少子樣本集,同時決策樹上相應于該樣本集的節點長出新的葉子節點。
根據信息論理論,采用劃分樣本集的不確定性作為衡量劃分好壞的標準,用信息增益值度量不確定性:信息增益值越大,不確定性越小,因此,在每個非葉節點選擇信息增益最大的屬性作為測試屬性,這樣可以得到當前情況下最純的拆分,從而得到較小的決策樹。
公式如圖
顯然E(A)越小,Gain(A)的值越大,說明測試屬性A對于分類提供的信息越大,選擇A之后對分類的不確定程度越小。
ID3的算法具體實現步驟如下:
1,對當前樣本集合,計算所有屬性的信息增益
2,選擇信息增益最大的屬性作為測試屬性,把測試屬性取值相同的樣本劃分到同一個子樣本集;
3,若子樣本集的類別屬性只含有單個屬性,則分支為葉子結點,判斷其屬性值并標上相應的符號,然后返回調用出;否則對子樣本集遞歸調用本算法。
廢話不多說,直接貼代碼為證:
#-*- coding: utf-8 -*-
import pandasas pd
#參數初始化
inputfile ='path'
data = pd.read_excel(inputfile, index_col =u'序號')#導入數據
#數據如果是類別標簽,需要轉化為數據
#用1和-1分別代表各自標簽
data[data ==u'標簽A'] =1
data[data ==u'標簽B'] =1
data[data ==u'標簽B'] =1
data[data !=1] = -1
x = data.iloc[:,:3].as_matrix().astype(int)
y = data.iloc[:,3].as_matrix().astype(int)
from sklearn.treeimport DecisionTreeClassifieras DTC
dtc = DTC(criterion='entropy')#建立決策樹模型,
dtc.fit(x, y)#訓練模型
#導入相關函數,可視化決策樹
from sklearn.treeimport export_graphviz
x = pd.DataFrame(x)
from sklearn.externals.siximport StringIO
x = pd.DataFrame(x)
with open("tree.dot", 'w')as f:
f = export_graphviz(dtc, feature_names = x.columns, out_file = f)
總結
以上是生活随笔為你收集整理的python决策树分类预测_数据分类预测之python决策树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中encode和encodi
- 下一篇: 基于python/django的图书管理