Kaggle比赛经验总结之Titanic: Machine Learning from Disaster

本文作者分享了参加Kaggle Titanic生存预测比赛的经验,包括数据预处理、特征工程和使用随机森林模型。通过观察和分析数据,提取关键特征,如客舱等级、性别、家庭成员数等,并处理缺失值。最终,通过集成多个随机森林模型提高预测准确性。
摘要由CSDN通过智能技术生成

这是个根据旅客信息判断他是否幸存的二分类问题,适合机器学习新手入门。本文记录了我大致的处理思路和步骤,然后总结了一下经验,同时有助于特征工程和pandas的学习。
我的准确率:0.80383
代码地址:点我


一,观察数据:

•PassengerID(ID)
•Survived(存活与否)
•Pclass(客舱等级,较为重要)
•Name(姓名,可提取出更多信息)
•Sex(性别,较为重要)
•Age(年龄,较为重要)
•Parch(直系亲友)
•SibSp(旁系)
•Ticket(票编号)
•Fare(票价)
•Cabin(客舱编号)
•Embarked(上船的港口编号)

我用python的pandas读入csv为df,在notebook中它长这样:

总览数据的常用命令有:
1、df.info() 可观察空值
2、df.dtypes 看类型
3、df.describe() 显示一些运算结果(mean/sum等)
4、df[‘Name’].unique() Name这一列所包含的值


二,数据预处理

1,Name

本来我是直接删掉Name这一列的,但从网上学到了从Name中提取属性,如名字中间夹的称谓:

图片来自http://www.cnblogs.com/north-north/p/4358084.html。图中列出了数据中出现的所有称谓,有些是英语的,有些是法语的,我把他们进行替换,最后分为5类,再做定性属性的数值化处理,把字符串变为数值,方便用sklearn处理。用pandas的factorize方法或者get_dummies方法都行,前者直接在原列変换成数值,后者把变换后的属性作为新列。具体处理如下:

#正则匹配出名字中间的称谓
df['Title'] = df['Name'].map(lambda x: re.compile(",(.*?)\.").findall(x)[0])
#匹配的逗号后面有空格,记得去除空格,不然下一步没法替换
df['Title'] = df['Title'].map(str.strip) 
#替换出5类
df['Title'][df.Title=='Jonkheer'] = 'Master'
df['Title'][df.Title.isin(['Ms','Mlle'])] = 'Miss'
df['Title'][df.Title.isin(['Mme','Dona', 'Lady', 'the Countess'])] = 'Mrs'
df['Title'][df.Title.isin(['Capt', 'Don', 'Major', 'Col', 'Sir'])] = 'Mr'
df['Title'][df.Title.isin(['Dr','Rev'])] = 'DrAndRev'
#factorize数值化
df['Title'] = pd.factorize(df.Title)[0]

2&#x

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值