1. 程式人生 > 其它 >決策樹——泰坦尼克號

決策樹——泰坦尼克號

具體步驟:

①匯入相關擴充套件包

from sklearn.model_selection import train_test_split  # 劃分資料集
from sklearn.feature_extraction import DictVectorizer  #字典特徵值提取
from sklearn.tree import DecisionTreeClassifier  # 決策樹
from sklearn.tree import export_graphviz  # 決策樹視覺化
import pandas as pd

②獲取資料

titanic=pd.read_csv("./train.csv
")

③篩選特徵值和目標值

x=titanic[["Pclass","Age","Sex"]]        #特徵值
y=titanic["Survived"]                   #目標值

特徵值:

目標值:

④轉化為字典

x=x.to_dict(orient="records")

轉化結果:

⑤字典特徵值抽取

transfer=DictVectorizer()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)

⑥決策樹預估器(estimator)

estimator = DecisionTreeClassifier(criterion="
entropy") # criterion預設為'gini'係數,也可選擇資訊增益熵'entropy' estimator.fit(x_train, y_train) # 呼叫fit()方法進行訓練,()內為訓練集的特徵值與目標值

⑦模型評估

方法一:直接對比真實值和預測值

 y_predict = estimator.predict(x_test)  # 傳入測試集特徵值,預測所給測試集的目標值
 print("y_predict:\n", y_predict)
 print("直接對比真實值和預測值:\n", y_test == y_predict)

方法二:計算準確率

score = estimator.score(x_test, y_test)  #
傳入測試集的特徵值和目標值

⑧決策樹視覺化

export_graphviz(estimator, out_file="titanic_tree.dot", feature_names=transfer.get_feature_names())

主要程式碼:

def titanic_demo():
    # 1.獲取資料
    titanic=pd.read_csv("./train.csv")

    # 2.篩選特徵值和目標值
    x=titanic[["Pclass","Age","Sex"]]        #特徵值
    y=titanic["Survived"]                   #目標值
    # print(x.head())
    # print(y.head())

    # 3.資料處理(缺失值處理,特徵值——>字典型別)
        #缺失值處理
    x["Age"].fillna(x["Age"].mean(),inplace=True)
    # print(x)
        #轉換為字典
    x=x.to_dict(orient="records")
    # print(x)

    # 4.劃分資料集
    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=22)

    # 5.字典特徵抽取
    transfer=DictVectorizer()
    x_train=transfer.fit_transform(x_train)
    x_test=transfer.transform(x_test)

    # 6.決策樹預估器(estimator)
    estimator = DecisionTreeClassifier(criterion="entropy")  # criterion預設為'gini'係數,也可選擇資訊增益熵'entropy'
    estimator.fit(x_train, y_train)  # 呼叫fit()方法進行訓練,()內為訓練集的特徵值與目標值

    # 7.模型評估
    # 方法一:直接對比真實值和預測值
    y_predict = estimator.predict(x_test)  # 傳入測試集特徵值,預測所給測試集的目標值
    print("y_predict:\n", y_predict)
    print("直接對比真實值和預測值:\n", y_test == y_predict)

    # 方法二:計算準確率
    score = estimator.score(x_test, y_test)  # 傳入測試集的特徵值和目標值
    print("準確率為:\n", score)

    # 8.決策樹視覺化
    export_graphviz(estimator, out_file="titanic_tree.dot", feature_names=transfer.get_feature_names())


    return None

執行結果:

視覺化結果(因圖規模過大導致截圖展示不完整):