使用決策樹一些關鍵步驟:
- 特征選取:信息增益越大,該特征越重要
- 節點劃分算法:
- ID3,利用信息增益進行節點劃分,選取信息增益最大的特征作為劃分依據,進行節點分裂,不斷迭代,直到信息增益足夠小或者為0
- C4,5,利用信息增益比進行劃分
- ID3,C4,5共同缺點是容易造成過擬合over-fitting,因此要進行節點修剪
- 決策樹修剪:即優化誤差函數:從葉子節點出發,向根節點收縮,如果去掉劃分節點的特征后可以使誤差函數變小,即刪去該節點的分支;
- CART算法:上述算法,要先生成決策樹,然后修剪,效率低;
因此有一種一步到位的方法:CART算法,同時兼顧決策樹的生成和修剪,可以應用在分類和回歸問題上;CART在生成分類樹使用基尼指數(Gini index)最小化,在生成回歸樹使用平方損失函數最小化;
決策樹中的一個典型的數據--鳶尾花
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
# 這是決策樹中的一個典型的數據--鳶尾花
iris = datasets.load_iris()
# 特征數據
iris_feature = iris.data
# 分類數據
iris_target = iris.target
#print iris_target
# 此時數據是按不同的類別順序排列的,將數據隨機的分為訓練集和測試集
feature_train, feature_test, target_train, target_test = train_test_split(iris_feature, iris_target, test_size=0.33,
random_state=56)
# test_size測試數據占比,一般是70%訓練,30%測試
# random_state亂序程度
# 模型訓練
# 導入決策樹,所有參數為默認,還可以引入損失函數(信息熵,基尼指數);
# 樹深度;葉上最少樣本數量,進行裁剪;節點的分裂策略
dt_model = DecisionTreeClassifier()
# 用決策樹訓練
dt_model.fit(feature_train, target_train)
# 使用測試數據測試
predict_results = dt_model.predict(feature_test)
# 利用測試數據測試
print predict_results
print target_test
# 以下兩種評比測試結果,傳入參數有區別
scores = dt_model.score(feature_test, target_test)
print accuracy_score(predict_results, target_test)
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。