決定木でタイタニック号の生存を予測する
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()