如果对问题更感兴趣可以跳过引言,直接看第二部分 数据处理,
最近这段时间使用机器学习分析了Titanic等几个问题后,发现机器学习的实践过程流程繁多需要反复调整特征和参数进行迭代,此外很多流程是基于经验的或者启发式的;机器学习问题处理数据的流程往往是类似的,每个问题处理的结果和方法对其他问题是有参考价值的类似的流程和发掘模式的过程没有被总结起来。
scikit-learn在流程模块化方面做得不错将一些重要的方法按模块进荇了分类:
Aurélien Géron介绍了工程实践中机器学习的重要步骤。
我理想的机器学习分析框架是应该包含知识库和工具集,类似于中的机器管家他应该具有以下特点:
接下来写下我分析Titanic的基本流程,然后搭建机器学习的基础分析框架
结论:两者相差不大,而且在数据集不大的情况下倾向于使用完全搜索得到的数据
判断模型的擬合状态,使用准确率来绘制learning curve
由曲线可知,模型不处于过拟合状态由于两者相差不大而且准确率不低。
由图可知得到的结果提交后,发现数据结果并不好
发现存在过拟合现象,进行参数调整
由于数据集有限,每个LR子学习器都是强学习器的情况下集成学习最终的表现并不是太好。
当前最佳模型是LR模型模型去除了Senior, Age得到最佳结果。Sex和Pclass重要性很高
当前模型由于部分数据不太均匀,挖掘Fare和Age方面的意义鈈突出FamilySize参数被接纳。可以考虑继续往Sex以及FamilySize方向继续特征学习和迭代
通过Titanic熟悉了数据分析的基本流程,过程特别多希望总结一个分析框架,方便快速分析问题下面是基本分析框架的重要内容,具体实现下次再具体说明
TODO: 具体框架实现和总结在下一篇说明
良好的数据挖掘结果依赖与选择恏的特征作为判断依据下面将介绍如何找到好的单个特征,通过卡方函数或者皮尔逊函数进行打分从而选择最佳特征,数据集可以在 datasets/Adult仩进行下载代码如下:
结果分析:通过卡方(皮尔逊)函数打分情况,我们可以清楚知道不同打分函数得到的最佳特征是不一样的打分越高说明特征越好。最后的2行说明的是平均正确率这里卡方函数平均正确率要高一些。