码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 泰坦尼克号乘客生存预测 中


    背景描述

    泰坦尼克号轮船的沉没是历史上最为人熟知的海难事件之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在船上的 2224 名乘客和机组人员中,共造成 1502 人死亡。这场耸人听闻的悲剧震惊了国际社会,从而促进了船舶安全规定的完善。造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。

    数据说明

    数据描述:

    变量名称PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
    变量解释乘客编号是否存活船舱等级姓名性别年龄兄弟姐妹和配偶数量父母与子女数量票的编号票价座位号登船码头

    数据来源

    Titanic Competition : How top LB got their score


    目录

      • 背景描述
      • 数据说明
      • 数据来源
    • 二 特征工程
      • 1. 合并训练集与测试集
      • 2. 缺失值处理
        • 2.1 填充Embarked字段
        • 2.2 填充船票Fare字段
        • 2.3 填充年龄Age字段
      • 3 不同特征字段的数据处理
        • 3.1 先对Embarked、Sex以及Pclass等用dummy处理
        • 3.2 票价分级处理
        • 3.3 名字处理
        • 3.4 Cabin处理
        • 3.5 Ticket处理
      • 4. 利用随机森林预测Age缺失值
      • 5. 各特征与Survived的相关系数排序
      • 6. 保存特征处理后的数据

    二 特征工程

    1. 合并训练集与测试集

    import pandas as pd
    
    train = pd.read_csv('train.csv')
    test = pd.read_csv('test.csv')
    train_and_test = train.append(test, sort=False) # 合并训练集与测试集
    PassengerId = test['PassengerId']
    train_and_test.shape
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2. 缺失值处理

    2.1 填充Embarked字段

    mode = train_and_test['Embarked'].mode().iloc[0] # 找到众数
    train_and_test['Embarked'].fillna(mode, inplace=True)
    train_and_test.info()
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2.2 填充船票Fare字段

    train_and_test['Fare'].mean()
    
    • 1

    在这里插入图片描述

    Fare_mean = train_and_test['Fare'].mean()
    train_and_test['Fare'].fillna(Fare_mean, inplace=True)
    train_and_test.info()
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2.3 填充年龄Age字段

    3 不同特征字段的数据处理

    3.1 先对Embarked、Sex以及Pclass等用dummy处理

    cols = ['Embarked', 'Sex', 'Pclass']
    train_and_test = pd.get_dummies(train_and_test, columns=cols, prefix_sep='__')
    train_and_test.info()
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.2 票价分级处理

    train_and_test['Fare_bin'] = pd.qcut(train_and_test['Fare'], 5)
    train_and_test['Fare_bin_id'] = pd.factorize(train_and_test['Fare_bin'])[0]
    fare_bin_dummies_df = pd.get_dummies(train_and_test['Fare_bin_id']).rename(columns=lambda x : 'Fare_' + str(x))
    train_and_test = pd.concat([train_and_test, fare_bin_dummies_df], axis=1)
    train_and_test.drop(['Fare_bin'], axis=1, inplace=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.3 名字处理

    提取称呼

    train_and_test['Title'] = train_and_test['Name'].apply(lambda x : x.split(',')[1].split('.')[0].strip())
    train_and_test['Title']
    
    • 1
    • 2

    在这里插入图片描述

    将各式称呼进行统一化处理
    头衔映射表

    在这里插入图片描述

    one_hot编码

    train_and_test['Title'] = pd.factorize(train_and_test['Title'])[0]
    title_dummies_df = pd.get_dummies(train_and_test['Title'], prefix=train_and_test[['Title']].columns[0])
    train_and_test = pd.concat([train_and_test, title_dummies_df], axis=1)
    train_and_test.info()
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    提取长度特征

    train_and_test['Name_length'] = train_and_test['Name'].apply(len)
    train_and_test['Name_length']
    
    • 1
    • 2

    在这里插入图片描述

    3.4 Cabin处理

    train_and_test.loc[train_and_test.Cabin.isnull(), 'Cabin'] = 'U0'
    train_and_test['Cabin'] = train_and_test['Cabin'].apply(lambda x : 0 if x == 'U0' else 1)
    train_and_test['Cabin']
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.5 Ticket处理

    train_and_test['Ticket_Letter'] = train_and_test['Ticket'].str.split().str[0]
    train_and_test['Ticket_Letter'] = train_and_test['Ticket_Letter'].apply(lambda x : 'U0' if x.isnumeric() else x)
    
    # 将Ticket_Letter factorize
    train_and_test['Ticket_Letter'] = pd.factorize(train_and_test['Ticket_Letter'])[0]
    train_and_test['Ticket_Letter']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    4. 利用随机森林预测Age缺失值

    from sklearn.ensemble import RandomForestRegressor  # 随机森林回归
    
    missing_age = train_and_test.drop(['PassengerId', 'Survived', 'Name', 'Ticket'], axis=1) # 去除字符串类型的字段
    missing_age_train = missing_age[missing_age['Age'].notnull()]
    missing_age_test = missing_age[missing_age['Age'].isnull()]
    
    X_train = missing_age_train.iloc[:,1:]
    y_train = missing_age_train.iloc[:,0]
    X_test = missing_age_test.iloc[:,1:]
    
    rfr = RandomForestRegressor(n_estimators=1000, n_jobs=-1)
    rfr.fit(X_train, y_train)
    y_predict = rfr.predict(X_test)
    train_and_test.loc[train_and_test['Age'].isnull(), 'Age'] = y_predict
    train_and_test.info()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    5. 各特征与Survived的相关系数排序

    train_and_test.corr()['Survived'].abs().sort_values(ascending=False)
    
    • 1

    在这里插入图片描述

    6. 保存特征处理后的数据

    train_and_test.to_csv('经过特征工程处理后的数据.csv', index=None)
    
    • 1

    如果本文有存在不足的地方,欢迎大家在评论区留言


    更多详细内容可看
    在这里插入图片描述

  • 相关阅读:
    Filter快速入门、Filter执行流程、Filter使用细节、Listener概念、分类、ServletContextListener使用
    运维面临挑战?智能运维管理系统来帮您
    JavaGUI------------常用的组件(标签、按钮)
    Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】
    SpringBoot + Nacos + K8s 优雅停机
    搭建solidity开发环境(以太坊)
    长安链BaaS服务平台调研
    反射的作用( 越过泛型检查 和 可以使用反射保存所有对象的具体信息 )
    猿创征文|C++软件开发值得推荐的十大高效软件分析工具
    【开源】JAVA+Vue.js实现创意工坊双创管理系统
  • 原文地址:https://blog.csdn.net/2401_84032998/article/details/138048070
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号