決策樹——泰坦尼克號
阿新 • • 發佈:2021-10-20
具體步驟:
①匯入相關擴充套件包
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
執行結果:
視覺化結果(因圖規模過大導致截圖展示不完整):