从python和机器学习小白,大概是用了几天学了简单python,然后写了一个最简单的决策树算法,大部分都是调用,简单总结一些解决的泰坦尼克号问题。
首先是流程分析:1、获取数据。2、数据处理(特征值处理,特征值->字典类型)。3、划分数据集。4、特征工程(字典特征提取)。5、决策树预估器流程。6、模型评估。7、决策树可视化。
1、获取数据:
官网下载一直出现错误,所以我从CSDN论坛上面下载了一个,不过数据集有些问题,有一万多条数据,和事件情况不符,而且里面不少缺失数据,但是我看到很多人都是用这个数据集进行的分析。
代码:
2、数据处理:
我打开数据集发现影响生存率的条件很多,包括年龄、舱位等等。其中我在特征值中选出了年龄、性别、是不是贵族,年龄对缺失值进行了补充,原则是补上平均值。最后一步转换成字典。
代码:
3、划分数据集:
将训练集和测试集按照3:7分开,随机样本数设成50。
代码:
4、特征工程:
主要做字典特征抽取。首先,实例化转换器。其次调用fit_transfrom(),训练集和测试集要进行同样的处理。
代码:
5、决策树预估器流程:
选用了ID3算法,网上搜索到深度20比较合适泰坦尼克案例。
代码:
6、模型评估:
选择了两种方法,法一是直接对比,能看出测试集是否正确,法二直接输出正确率。
代码:
结果:
7、决策树可视化:
生成.dot文件,不过我电脑打开生成图像的网站一直显示加载中,最后只生成了dot文件,没有转化成树的图像。
代码:
#最后我尝试了模型选择和调优,加入了网格搜索和交叉验证,最终显示准确率变化不大,我查询资料说是这个数据集不适合决策树。后来问了其他人,他说是数据处理的不够细致。而且加入这些以后,进行决策树可视化的时候一直报错,简单讨论之后并没有找到解决办法。这次完成的并不是很好,但是这几天的学习中,我确定了自己对机器学习有浓厚兴趣,我会继续学习提高自己。
源代码截图: