基于决策树的泰坦尼克号幸存者分析,几个重要的方法
- 缺失值的处理
- 将字符型数据转成数值型
- 特征属性数据和标签属性的分离
- 决策树的建模
- 网格搜索的建立
导入模块
1 | import numpy as np |
导入数据
1 | data = pd.read_csv("/Users/peter/data-visualization/train.csv") |
查看数据信息
删除缺失值
1 | # 去掉缺失值过多的列 Cabin (直接删掉),以及和观测判断来说和预测的y没有关系的列(Name, Ticket) |
中值填充
某个字段缺失值不是太多,使用中值填充
1 | # Age属性用中值填充 |
如果只是很少部分的缺失值,比如Embarked
字段,直接dropna
1 | data = data.dropna() # 只要是存在的缺失值都给删掉 |
将属性的值转成数值型
Python不能直接处理字符串数据,需要转成数值型
- Embark中存在[“S”, “C”, “Q”]3种结果:现将结果转成列表,再从列表中取出对应的索引(数字)
- Sex字段中存在[“male”, “female”]2种结果:只有两个结果的情形,通过bool值来解决
1 | # 方法1 |
特征属性和标签的分离
根据某个属性将数据分成特征数据和标签数据(最后的预测值或者输出值)
1 | x = data.iloc[:, data.columns != "Survived"] |
随机划分数据后的索引还原
1 | # 划分训练集和测试集 |
决策树的建模过程
1 | clf = DecisionTreeClassifier(random_state=25) |
学习曲线
1 | tr = [] # 两个空列表用来存储训练得到的两个分数 |
网格搜索demo
1 | gini_threholds = np.linspace(0, 0.5, 20) # gini:0-0.5 |