Preface
用了两天的一些空闲时间,看完并自己跟着敲完了上边的代码自己亲自试了试。整体地走了一个用机器学习解决问题的流程,总得来说也是有一个较为清楚的认识吧,现就一些想法与笔记记录下来。
Titanic问题解决过程
按照样例中的做法,结合自己的看法,重要的几步有:获取数据,分析数据,处理数据(对null值的处理,删除无关紧要的数据,从已有的数据中通过组合与计算等获取新的有意义的特征数据),选用模型进行学习和预测,得到结果。
获取数据
主要应用pandas
进行操作,其中一个很关键的一点是其中的DataFrame
类型的对象,是操作数据的载体,其拥有强大的一些函数,大大方便了对数据的感知,需要之后的进一步了解其特性。
分析数据
分析数据大致分为三类,一个是用一些自带的函数作大致的信息查看;第二是提取一些feature的组合来看;三是用matplotlib
或seaborn
等可视化工具来可视化地查看一些属性。
整体大致查看
用到的一些常用的函数有:
|
|
提取feature查看
用一些组合与排序的方式达到目的,如:
|
|
Sex | Survived | |
---|---|---|
0 | female | 0.742038 |
1 | male | 0.188908 |
可视化查看
这一方面,matplotlib
及seaborn
的函数众多,自己还需要进一步的了解,需要做到自如地处理数据,在不同的层面上比较。
处理数据
删除无用的数据
drop()
删除df中的无用数据:
|
|
在已有的基础上获取新数据
进行计算或者组合等:
|
|
categorical 的数据到 ordinal的转化
应用map将一些类型的数据,转化成数字型的,如:
|
|
对null等非法值的处理
因为NaN,null等值会影响学习及预测,所以进行处理,有多种用其它数据替代的方式,也有好多trick,但是相对来说比较简单。
如下,是采用有效值的平均进行替换:
|
|
对一些数值型的数据进行区间分类
先建立区间:
|
|
再将原来的数值替换为区间代号:
|
|
运用模型作学习与预测
选择模型进行学习 fit
直接从sklearn
中选择所需的模型,然后fit
测试数据的X和Y:
|
|
进行预测 predict
|
|
评估 score
|
|
选择最优的模型并计算出结果
Conclusion
作为机器学习,或者Kaggle的入门例子,这个例子看来来还是很明确的,也有几点记在了心中。
- 数据的处理太重要了,只要数据处理得好,用模型去训练和去预测不是问题。
- 处理数据的时候一定要注意可能会影响结果的非法值,进行相关的预处理
- 对于模型的一些实现细节可能不需要了解,但是要对他们是干什么的作一个了解吧,不然就是盲目地去根据问题的分类要试好多模型。
然而,竞赛毕竟是竞赛,有着明确的dataset和明确的目的性,而且很专一地可以用机器学习去解决。而在现实生活中,有两个问题摆在机器学习的要前,一个是没有条理的数据集,二是不是那么明了的一个题目,更加的杂。这给用机器学习解决实际问题增添了一些困难。
不过,练习这些毕竟也是好的!