泰坦尼克生存概率分析,決策樹的應用
阿新 • • 發佈:2018-11-20
決策樹(decision tree)是一個樹結構(可以是二叉樹或非二叉樹)。其每個非葉節點表示一個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放一個類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。
可以看到,決策樹的決策過程非常直觀,容易被人理解。目前決策樹已經成功運用於醫學,製造產業,天文學,分支生物學以及商業等諸多領域
import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.feature_extraction import DictVectorizer from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.tree import DecisionTreeClassifier def decision(): # 載入檔案,得到資料 # 決策樹對泰坦尼克號進行預測生死 tian = pd.read_csv('Titanic.csv') # 處理資料,找出特徵值和目標值 x = tian[['Pclass','Age','Sex']] y = tian['Survived'] # print(x) # 缺失值處理 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) dict = DictVectorizer(sparse=False) x_train = dict.fit_transform(x_train.to_dict(orient="records")) print(x_train) x_test = dict.transform(x_test.to_dict(orient="records")) # 用決策樹進行預測 dec = DecisionTreeClassifier() dec.fit(x_train,y_train) # 預測準確率 print(dec.predict(x_test)) print("預測的準確率:",dec.score(x_test,y_test)) rf = RandomForestClassifier(n_jobs=-1) param = {"n_estimators":[120,200,300,500,800,1200],"max_depth":[5,8,15,25,30]} # 網路搜尋與交叉驗證 gc = GridSearchCV(rf,param_grid=param,cv=2) gc.fit(x_train,y_train) print("準確率:",gc.score(x_test,y_test)) return None if __name__ == '__main__': decision()