python机器学习-泰坦尼克号决策树

案例:泰坦尼克号乘客生存预测

  • 泰坦尼克号数据

在泰坦尼克号和titanic2数据帧描述泰坦尼克号上的个别乘客的生存状态。这里使用的数据集是由各种研究人员开始的。其中包括许多研究人员创建的旅客名单,由Michael A. Findlay编辑。我们提取的数据集中的特征是票的类别,存活,乘坐班,年龄,登陆,home.dest,房间,票,船和性别。

1、乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。

2、其中age数据存在缺失。

 分析

  • 选择我们认为重要的几个特征 ['pclass', 'age', 'sex']
  • 填充缺失值
  • 特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)
    • x.to_dict(orient="records") 需要将数组特征转换成字典数据
  • 数据集划分
  • 决策树分类预测
#泰坦尼克号决策树
def titanic():
    #1.获取数据
    data_titanic=pd.read_csv("titanic.csv")
    #2.获取目标值与特征值
    x=data_titanic[["pclass","age","sex"]]
    y=data_titanic["survived"]
    #3.数据处理
    #1).缺失值处理
    x["age"].fillna(x["age"].mean(),inplace=True)#填补处理dropna()删除缺失值所在的行
    #2).转换为字典
    x=x.to_dict(orient="records")
    #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=DecisionTreeClassifier(criterion="entropy")#criterion默认为gini系数,此处选择的为信息增益的熵
    #max_depth:树深的大小,random_state:随机数种子
    estimator.fit(x_train,y_train)
    #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())
    #使用随机森林
    estimator=RandomForestClassifier()

 

posted @ 2021-10-19 21:26  风吹过半夏  阅读(405)  评论(0编辑  收藏  举报