美文网首页数据分析
看电影学机器学习—泰坦尼克生与死(1)

看电影学机器学习—泰坦尼克生与死(1)

作者: zidea | 来源:发表于2019-11-27 23:57 被阅读0次
    泰坦尼克号

    在开始之前,让我们先哀悼一下那些在这次海难中遇难的人们。

    观察数据集

    我们会用到数据集,这里数据集中记录泰坦尼克号乘客一些信息,在机器学习中特别是监督学习中数据占有重要地位。所以我们需要查看数据都包含那些信息,然后我们对这些信息进行筛选和处理作为训练模型的数据,说到数据我们少不了 numpy 和 pandas ,为了更直观地观察数据也引入数据可视化 python 库 matplotlib

    import pandas as pd
    import matplotlib.pyplot as plt
    

    读取数据集

    train = pd.read_csv('./data/train.csv')
    print train.head()
    

    检查数据丢失情况

    读取训练数据集,输出每一个列包括数据量,可以查看出某些列数据并不完整,例如 carbin 只有在 204 条记录中有值。我们需要对这些数据进行处理。

    print train.count()
    
    survived    891
    pclass      891
    name        891
    sex         891
    age         714
    sibsp       891
    parch       891
    ticket      891
    fare        891
    cabin       204
    embarked    889
    
    # 查看数据丢失情况
    sns.heatmap(train.isnull(),yticklabels=False,cbar=False,cmap='viridis')
    
    titanic_missing_data.png

    这样可以更加直观观察数据丢失的情况,可以清楚看出 age 和 carbin 字段丢失比较严重,特别是 cabin。

    df.survived.value_counts(normalize=True).plot(kind="bar",alpha=0.5)
    plt.title("Survived")
    
    遇难者和幸存者比例

    在上面直方图中,0 表示遇难者 1 表示幸运者,遇难者大约 60%

    fig = plt.figure(figsize=(18,6))
    plt.subplot2grid((2,3),(0,0))
    
    df.survived.value_counts(normalize=True).plot(kind="bar",alpha=0.5)
    plt.title("Survived")
    
    plt.subplot2grid((2,3),(0,1))
    plt.scatter(df.survived,df.age,alpha=0.1)
    plt.title("Age wrt Survived")
    plt.show()
    
    # 查看乘客的年龄分布
    # sns.distplot(train['age'].dropna(),kde=False,bins=30,color='Green')
    
    幸存者和遇难者年龄分布图

    在图Age wrt Survived 中横坐标 0 代表遇难者 1 代表幸存者,可以发现幸存者年龄要小于遇难者的年龄。

    乘客年龄分布
    plt.subplot2grid((2,3),(0,2))
    df.pclass.value_counts(normalize=True).plot(kind="bar",alpha=0.5)
    plt.title("class")
    
    客舱等级
    plt.subplot2grid((2,3),(1,0),colspan=2)
    for x in [1,2,3]:
        df.age[df.pclass == x].plot(kind="kde")
    plt.title("class wrt age")
    
    乘客按不同上船地点分布 根据性别幸存者和遇难者直方图 屏幕快照 2019-11-06 上午6.15.25.png 屏幕快照 2019-11-06 上午6.17.52.png
    plt.subplot2grid((3,4),(1,0),colspan=4)
    for x in [1,2,3]:
        df.survived[df.pclass == x].plot(kind="kde")
    plt.title("Class wrt Sruvived")
    plt.legend(("1st","2nd","3rd"))
    

    相关文章

      网友评论

        本文标题:看电影学机器学习—泰坦尼克生与死(1)

        本文链接:https://www.haomeiwen.com/subject/iukkbctx.html