Python的scikit-learn(簡稱sklearn)模塊可以非常好地支持決策樹分類,盡管它使用的是更加複雜的決策樹算法,但依然是在上一節講述的原理基礎上的優化算法。本節將使用scikit-learn的決策樹分類來識別“蘑菇數據”中的毒蘑菇。
首先介紹本案例使用的數據。原始數據來源於加州大學歐文分校用於機器學習的數據庫(UCI數據庫),本書使用的是經過必要處理的數據,此數據可從教材資源平台下載。
接下來在命令行界麵安裝scikit-learn。
pip install -u scikit-learn
安裝scikit-learn之前需要確保模塊numpy和scipy已經安裝,否則可以使用pip install安裝。
pip install -u numpy
pip install -u scipy
進入Python之後,使用如下命令調用scikit-learn的決策樹方法。
from sklearn import tree
模塊scikit-learn的決策樹是基於DecisionTreeClassifier對象,它能夠解決二分類問題(如蘑菇是否可食用),也可以解決多分類問題。在使用中,對輸入訓練數據的維度要求如下。
輸入X:樣本數量×特征屬性數量;
輸入Y:樣本類別標簽,與X要一一對應。
下麵先用一個簡單的例子來熟悉使用方法。對四個點X=[[0,0],[0,1],[1,0],[1,1]]使用決策樹進行分類,四個點分別屬於兩個類別0和1,它們對應的類別標簽是Y=[0,0,1,1]。這可以通過如下簡單代碼實現。
In[1]:from sklearn import tree
X=[[0,0],[0,1],[1,0],[1,1]]
Y=[0,0,1,1]
clf=tree.DecisionTreeClassifier()
clf=clf.fit(X,Y)
clf命令用來構造決策樹,通過clf.fit(X,Y)實現了決策樹的構建,此時clf已經是能夠進行分類的決策樹了,可以用它來進行新數據的分類。例如,輸出[[0.3,0],[0.8,1],[1.2,1]]的類別,代碼如下。
In[2]:test=[[0.3,0],[0.8,1],[1.2,1]]