決定木でタイタニック号の生存を予測する

1658 ワード

決定ツリー(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()