決策樹

Sion258發表於2024-07-27

認識決策樹

早期的決策樹是利用條件分支結構分割資料的一種分類學習方法。

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
資訊熵是專門針對某一個類別的,不會變,題中是“類別”
決策樹的分類依據之一:資訊增益。
基尼係數:劃分更加仔細
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
接下來是用決策樹對泰坦尼克號進行預測生死。
在這裡插入圖片描述
在這裡插入圖片描述

def decision():
    """
    決策樹對泰坦尼克號進行預測生死
    """
    #獲取資料
    titan  = pd.read_csv("../data/titanic.txt")
    
    #處理資料,找出特徵值和目標值
    x = titan[['pclass','age','sex']]
    
    y = titan['survived']
    
    #缺失值處理
    x['age'].fillna(x['age'].mean(),inplace=True)
    
    #分割資料集到訓練集和測試集
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25)
    
    
    #進行處理(特徵工程) 當特徵是類別裡的資訊時,應該使用one-hot編碼處理
    dict = DictVectorizer(sparse=(False))  #例項化
    #pd轉換字典,進行特徵抽取
    x_train= dict.fit_transform(x_train.to_dict(orient="records"))
    
    print(dict.get_feature_names())

    x_test = dict.transform(x_test.to_dict(orient="records"))
    
    #print(x_train)
    #用決策樹進行預測
    dec = DecisionTreeClassifier()
    
    dec.fit(x_train,y_train)
    
    #預測準確率
    print("預測的準確率:",dec.score(x_test, y_test))
        
    #匯出決策樹的結構
    export_graphviz(dec, out_file="./tree.dot",feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=female', 'sex=male'])    
    return None

輸出結果:

['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=female', 'sex=male']
預測的準確率: 0.8085106382978723

最後結果

相關文章