kaggle案例全_记录自己的第一个kaggle竞赛——Tensorflow实现全连接网络做titanic生还者预测...

079b906909f787c0e294274682c68e2d.png

所谓放假,就是应该拿来想干嘛干嘛。这篇文章纯粹是做一个记录,离美赛还有一天,就当打发打发时间用。

前两天瞎报了一个网上的做数据处理的课,是对kaggle上一个非常经典的案例titanic生还者预测的数据集做数据预处理。然后就顺着他处理好的数据接着写了个一个隐藏层的全连接网络做了一下。嘛从做好到出结果到随便优化一下,大概也就2天功夫,还顺手考了个雅思口语hhh

这里先感谢一下棕榈学院的python7日进阶课提供了数据预处理的方法。

首先我们注册一个kaggle账号,注册账号是要vpn的,最好之后就一直挂着,会比较方便。

来到titanic的页面

a4bf24ba7f06ac05e6af28d19d7a7a7d.png

这里大体给出了一些关于这个题和数据集的信息,在左侧可以下载。一个有生还记录(Survived)的train集和一个测试集,训练模型后通过测试集得出的结果就是我们要上传并且评分的文件了。

这个比赛最有意思的地方在于数据量少且有残缺,所以数据预处理显得十分重要。当然,高分都有一些很tricky的方法(比如titanic的幸存者名单其实是公开的)。个人认为0.8左右的分数算是比较优秀的,考虑到过拟合的问题,在0.75左右都比较正常。另外,随机森林法做这个预测好像有奇效,但是我目前还没有试过。

接下来就是主要记录一下用到的代码和它们的功能。

用到的语言是python 3.6.6 Tensorflow 1.13.0,是否并行不重要,主要的包是pandas,numpy和scikit learn,最后一个主要是做独热编码用的

train_df=pd.read_csv('train.csv')
test_df=pd.read_csv('test.csv')

读取数据以后先看一下缺失变量:

69c6f64d05aeaa15b4567e4178020e98.png

虽然age的缺失值也很多,Cabin里的缺失值太多,而且就分析来说,年龄对生还率可能是有较大的影响的,所以留下,而感觉上没有影响的则扔掉。

train_df=train_df.drop(['Ticket','Cabin'],axis=1)
test_df=test_df.drop(['Ticket','Cabin'],axis=1)
train_df['Embarked']=train_df['Embarked'].fillna(method='ffill')
test_df['Fare']=test_df['Fare'].fillna(method='ffill')
s_train=train_df['Age'].value_counts(normalize=True)
s_test=test_df['Age'].value_counts(normalize=True)
missing_age_train=train_df['Age'].isnull()
train_df.loc[missing_age_train,'Age']=np.random.choice(s_train.index,size=len(train_df[missing_age_train]),p=s_train.values)
missing_age_test=test_df['Age'].isnull()
test_df.loc[missing_age_test,'Age']=np.random.choice(s_test.index,size=len(test_df[missing_age_test]),p=s_test.values)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值