详解决策树 - 泰坦尼克号幸存者预测
导入数据
探索数据
筛选特征。删除缺失过多的列,自己判断认为与预测结果没有关系的列 Name 和 Tickle 和是否存活无关,Cabin 缺失过多
处理缺失值。对缺失值较多的列进行填补,有一些特征只缺失一两个值,可以采取直接删除记录的方法
dropna(axis=0, how='any', thresh=None, subset=None, inplace=False) # axis:轴向,默认0删除行,1删除列 # inplace:是否覆盖原表,如果不覆盖,则返回新表,如果覆盖,无返回值 # how:默认'any'即所在行/列有一个空值就删除,'all'即所在行/列全为空值才删除 # thresh:填int,当非空值数量大于等于该值就保留 # subset:填列表,当axis=0,列表元素为列标签,对每一行数据,对应列如果有空值,则删除;当axis=1,列表元素为行标签,对每一列数据,对应行如果有空值,则删除 df = pd.DataFrame([[1,2,3,None],[None,5,6,7]]) print(df) df.dropna(axis=1, subset=[0]) --- 0 1 2 3 0 1.0 2 3 NaN 1 NaN 5 6 7.0 0 1 2 0 1.0 2 3 1 NaN 5 6
我们需要将分类变量转换为数值型变量。也就是 object 转换为 numSex 和 Embarked 是 Object,需要改为数字
data['Embarked'].unique() # unique取出所有的值并删除重复值 --- array(['S', 'C', 'Q'], dtype=object)
这里也可以用
data.loc[:,'Sex']
data.loc[:,'Sex']
依据标签的索引,后面只能加列名或列名切片,不接收数字(列号)data.iloc[:,3]
即依据位置的索引,后面只能加数字或数字切片二者都可以接收布尔索引
提取标签和特征矩阵,分离测试集和训练集
修正索引如果索引乱了,而且我们不是有意让它乱,最好恢复成0-shape[0]
的形式
导入模型,粗略跑一下查看结果
在不同 max_depth 下观察模型的拟合情况
我们考虑用 entropy。之前说 entropy 容易过拟合,但这是对训练集来说的,对测试集不一定,且此时训练集拟合程度也不太好
网格搜索:能够帮助我们同时调整多个参数的技术,是一种枚举技术给定字典,字典中有参数范围,找到参数范围内能让模型最好的效果的组合因为是多个参数组合,看起来像网格,所以叫网格搜索;因为是枚举,所以计算量很大,要注意参数数量,界定好参数范围实际上,多数时间参数选择什么都是依赖自己的判断,或者只跑一两个参数组合
现在选择参数的方法有:学习曲线和网格搜索
视频作者:菜菜TsaiTsai链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili
版权声明: 本文为 InfoQ 作者【烧灯续昼2002】的原创文章。
原文链接:【http://xie.infoq.cn/article/9d10e6d317b7b56c516647361】。文章转载请联系作者。
评论