kaggle比赛泰坦尼克号基于别人的处理流程的学习总结
本篇是基于kaggle上一位作者的学习流程学习所写的总结,应用的都是一些比较基础的操作,主要发力在数据处理方面,对算法的优化过程几乎没有,下面是原文链接:
https://www.kaggle.com/startupsci/titanic-data-science-solutions
首先定义宏观的工作流程:
问题定义:
这是一个拥有十几个特征,预测结果为二分类的预测问题。
载入数据:
省略
观察所有特征,并对其进行分类,大致有:
数字类:PassengerId, Survived(Survival, 0 = No, 1 = Yes), Pclass(Ticket class, 1 = 1st, 2 = 2nd, 3 = 3rd), Age(Age in years), Sibsp(# of siblings / spouses aboard the Titanic# of siblings / spouses aboard the Titanic), Parch(# of parents / children aboard the Titanic), Fare(Passenger fare)
其中分类型特征有Survived, Pclass。连续型特征有Age, Sibsp, Parch, Fare, PassengerId
字母类:Name, Embarked(Port of Embarkation, C = Cherbourg, Q = Queenstown, S = Southampton),Sex
其中Name为杂乱型,Embarked, Sex为分类型。
字母+数字类:Ticket(Ticket number), Cabin(Cabin number)
考虑可能有错误的特征:名字非常复杂,意思可能有错误。
分类完成后进一步了解各个特征的空缺情况以及数据的类型特征,利用如下语句:
继续进行总览型操作如下:
以及:
大致有以下发现:
接下来依次开始进行数据与结果的关联性分析,数据填补,数据纠错,特征丢弃,特征创造等操作。
结果举例如下:
接下来针对连续数值型特征用图表进行分析:
首先针对Age作图
结果如下:
不仅可以单一绘图,也可以综合考虑,比如将连续数值型特征Age与分类数值型特征Pclass一起作图。
结果:
发现pclass也比较有用,可以考虑使用。
接下来更进一步,将sex,pclass和embarked一起作图。
最终决定sex,embarked也有利用价值。
用embarked,sex,fare一起做图。
决定fare投入使用。
经分析,carbin和ticket使用难度较大,且效益不高,将其舍去。
接下来开始正式处理数据
name特征虽然杂乱无章,但是可以提取出一些性别特征比较明显的比如Mr,Miss等等,所以可以提取出来作为一个名字为title的特征。经过相应的python语法的处理后可以得出以下结果:
由于title属性有明显的性别特征,有理由认为它和Sex一样与结果关联度较高,但种类过多,可以将某些小类合并成一种。经过一些python相关语法处理,并且分别将其与结果进行关联性分析,得到的结果如下:
然后将字符变成数字即可:
现在即可将name和PassengerID扔掉。
上面说到了title字符型的数字化转换,同理将Sex也数值化:
这个时候不要忘了里面还有特征存在缺失值,必须填补好再运用,比如Age,这里使用一种综合相关特征进行平均值的猜测。将pclass,sex,age,代码如下:
age填补完成后需要将age进行分组,方便利用。
下一波就是将这个ageband用数字来表示:
接着扔掉ageband就可以。
接下来要做的事情,就是进一步创建新特征,将sibsp和parch总合成family再将另外俩扔掉。结果如下:
由这个family还可以进一步形成特征isalone,如下:
可以再创造一个age*class,结果如下:
接着继续处理分类型特征Embarked,它还有空缺,先补上,用最常见的值来填补,并转换为数字型特征,结果如下:
继续处理fare,只有一个空值,简单处理,把其余值的median填上即可,结果如下:
进一步将fare分组数字化表示,结果如下:
接下来进入模型选择与训练阶段:
- Logistic Regression
- KNN or k-Nearest Neighbors
- Support Vector Machines
- Naive Bayes classifier
- Decision Tree
- Random Forrest
- Perceptron
- Artificial neural network
- RVM or Relevance Vector Machine
分别计算其置信度分数,进行对比,最终选定了Random Forrest
置信度分数为86.76
汇总表如下:
最终可以得出结果。