1、C4.5算法介紹
C4.5算法與ID3算法不同的是採用了信息增益比作爲特徵的選擇,原因是:信息增益在選擇屬性時偏向於選擇取值較多的屬性。
2、信息增益比
特徵A對訓練數據集D的信息增益比定義爲其信息增益g(D,A)與特徵A的熵HA(D)之比(計算方式請看上一篇):
3、CART算法介紹
CART算法使用Gini指數作爲特徵的選擇,並且使用平方誤差最小化原則對連續型特徵進行離散化,所以CART算法既可以用於分類,也可以用於迴歸。
4、Gini指數
5、sklearn庫的實現
import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
def decisionTree():
#讀取數據
data = pd.read_csv('train.csv')
#數據預處理
x = data[['Pclass','Age','Sex','Embarked']]
y = data['Survived']
x['Age'].fillna(x['Age'].mean(),inplace=True)
x['Embarked'].fillna('S',inplace=True)
#one-hot編碼
dict = DictVectorizer(sparse=False)
x = dict.fit_transform(x.to_dict(orient="records"))
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)
#決策樹算法
dec = DecisionTreeClassifier(criterion="gini",max_depth=None,)
dec.fit(x_train,y_train)
print("正確率:",dec.score(x_test,y_test))
if __name__ == '__main__':
decisionTree()
參考書籍:
《統計學習方法》--李航
《機器學習實戰》--Peter