kaggle初探

传说kaggle是一个提供了机器学习比赛的地方,作为一个初学者,也想去看一看。于是搜索了一些kaggle入门的文章,决定从提供了指导的泰坦尼克预测下手。

Titanic: Machine Learning from Disaster  https://www.kaggle.com/c/titanic/data

一、首先看看概述(overview),需要我们干什么。

1.1描述

    “In this challenge, we ask you to complete the analysis of what sorts of people were likely to survive. In particular, we ask you to apply the tools of machine learning to predict which passengers survived the tragedy.”

    分析什么样的人容易幸存。

1.2评估

 目标:预测乘客是否幸存

评估标准:正确率,即正确预测的百分比

提交文件的格式:csv文件,一个标题行,418行,2列(第1列是乘客id,第2列代表是否幸存,1表示幸存)。

1.3指导

kaggle learn提供了python、机器学习等相关基础知识的学习课程。(这个准备后面再慢慢补基础)

提供了代码,用pandas进行数据处理,使用matplotlib和seaborn进行数据可视化,利用scikit-learn建立模型。

二、数据

提供了train.csv、test.csv和gender_submission.csv(提交文件的模板),3个文件。

三、内核kernel

这个页面是前辈们解决该问题时提供的宝贵参考

四、讨论

大家讨论研究的地方

五、排名

六、规则

七、队伍

为了方便入门,决定按照寒小阳老师的博客上的步骤来。
 

1. 看看数据长成什么样

会用到的库

    pandas数据分析

    numpy科学计算

原始数据是csv文件,我们可以直接用excel打开。对计算机来说,不太好处理,用pandas的函数read_csv(),把csv文件转换为dataframe格式(DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引))。

数据共有12列:1列是结果,其余为特征。关于特征的解释,在kaggle的Data页面

PassengerId:乘客编号

Pclass:乘客等级

Name:乘客的姓名

Sex:乘客的性别

Age:乘客的年龄

SibSp:乘客的兄弟姐妹/配偶的个数

Parch:父母/孩子个数

Ticket:船票号

Fare:票价

Cabin:船舱号

Enbarked:出发港(上船的港口)

利用 info,查看训练集的特征

2.数据分析初步

利用matplotlib绘图看看各个属性对最终结果的影响

3.简单数据预处理

丢失数据的处理:cabin(有和无)和age(寒老师用的是RandomForest拟合缺失值)

丢失数据的处理方法:

    缺失比例极高,舍弃

    缺失适中,属性非连续特征,把NaN作为新类别,加到特征中

    缺失适中,属性连续特征,给定步长,离散化,把NaN作为新类别,加到特征中

    缺失不多,根据已有值拟合

类目型属性特征因子化:使用pandas的get_dummies

    因子化:属性原本有一列,但每一行对应的是yes或no。这样不是数值型的属性,需要进行因子化(离散化)。把数据变成2列yes和no。不同的行在对应的yes和no列,写0和1。

幅度缩放,有些特征数值差异太大,会对结果造成影响。利用sklearn.preprocessing的StandardScaler进行处理。

4.逻辑回归建模

取出需要的特征,转为numpy格式,使用scikit-learn中的LogisticRegression建模

得到一个模型

测试集也需要同样的预处理

预测,将结果保存为csv文件

提交结果,去kaggle的submit界面提交就行了

5 逻辑回归系统优化

模型系数关联分析:分析各个特征对最后最后结果的影响,系数为正的,代表正相关

交叉验证:测试集的输出是已知的,把测试集留出一部分,作为验证集。检验模型的好坏,而且对于判错的部分,可以人工看看哪里出错了。利用scikit-learn的cross_validation进行。

学习曲线:scikit-learn里面的learning_curve,画出训练集和验证集上的学习曲线,分析模型处于欠拟合还是过拟合状态

6 模型融合

用scikit-learn里面的Baggingj

参考:

Kaggle比赛:从何着手?  https://www.jianshu.com/p/f648de991d51

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾  https://blog.csdn.net/han_xiaoyang/article/details/49797143

数据分析之Pandas(三)DataFrame入门 https://www.cnblogs.com/jinhaolin/p/5980932.html

Kaggle入门:逻辑回归应用之Kaggle泰坦尼克之灾 https://www.kesci.com/home/project/5bfe39b3954d6e0010681cd1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值