zoukankan      html  css  js  c++  java
  • 机器学习入门--------决策树预测泰坦尼克号存活人数

    引言

    案例背景

    泰坦尼克号沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并为船舶制定了更好的安全规定。 造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会。 在这个案例中,我们要求您完成对哪些人可能存活的分析。特别是,我们要求您运用机器学习工具来预测哪些乘客幸免于悲剧。

    数据

    https://github.com/hitcszq/kaggle_titanic

    开发工具

    • jupyter
    • python3.8

    步骤分析

    • 1.获取数据
    • 2.数据基本处理
      • 2.1 确定特征值,目标值
      • 2.2 缺失值处理
      • 2.3 数据集划分
    • 3.特征工程(字典特征抽取)
    • 4.机器学习(决策树)
    • 5.模型评估

    特征值:

    • Pclass:指乘客班(1,2,3),是社会经济阶层的代表。
    • Age(有缺失值)
    • sex

    目标值

    • Survived:是否存活(0,1)

    代码实现:

    导包:

    import pandas as pd
    import numpy as np
    from sklearn.feature_extraction import DictVectorizer
    from sklearn.model_selection import train_test_split
    from sklearn.tree import DecisionTreeClassifier, export_graphviz
    

    1.获取数据:训练集、测试集

    # 1.获取数据
    train = pd.read_csv("./data/train.csv")
    test = pd.read_csv("./data/test.csv")
    y_test = pd.read_csv("./data/titanic.csv")[["Survived"]]
    y_test
    

    2.数据基本处理:缺失值用该列的平均值代替

    # 2.1 确定特征值,目标值
    # 2.2 缺失值处理
    x_train = train[["Pclass","Sex","Age"]]
    x_train['Age'].fillna(value=train["Age"].mean(),inplace=True)
    x_test = test[["Pclass","Sex","Age"]]
    x_test['Age'].fillna(value=test["Age"].mean(),inplace=True)
    y_train = train[["Survived"]]
    
    


    3.特征工程(字典特征抽取)

    # 特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)
    transfer = DictVectorizer(sparse=False)
    x_train = transfer.fit_transform(x_train.to_dict(orient="records"))
    x_test = transfer.fit_transform(x_test.to_dict(orient="records"))
    

    4.决策树模型训练和模型评估

    estimator = DecisionTreeClassifier(criterion="entropy", max_depth=5)
    estimator.fit(x_train,y_train)
    

    5.模型评估

    y_predict = estimator.predict(x_test)
    print("预测结果:
    ",y_predict)
    print("预测分数为:
    ",estimator.score(x_test,y_test))
    

  • 相关阅读:
    多线程的设计模式
    Deque 双端队列
    并发Queue
    并发类容器
    同步类容器
    java0926
    第十二次作业
    第十一次作业
    第十次
    第九次
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/14299875.html
Copyright © 2011-2022 走看看