导包
1 | import numpy as np |
读取数据
1 | data = pd.read_csv(r"data.csv") |
探索数据
1 | data.info() |
1 | # output |
1 | data.head(10) |
1 | # 将标签类移动到最后一列 |
数据预处理
1 | # 筛选特征,删除缺失值过多的列,和观察判断来说和预测的y没有关系的列 |
1 | # 处理缺失值 ==> 'Age',用均值填充 |
1 | # output |
1 | # 删除有缺失值的行,缺失较少时才直接删除,否则填充 |
1 | # output |
1 | # 字符串特征转数值特征,这里只是简单的情况,详细的要再多多学习 |
划分训练集和测试集
1 | # 获取训练姐和测试集 |
1 | # output |
1 | X_train.head() |
1 | # 重新调整行索引 |
构建模型训练
1 | clf = tree.DecisionTreeClassifier(random_state=25) |
1 | # 使用交叉验证 |
1 | # 循环搜索树的深度 |
1 | # 网格搜索 |
1 | # 最佳组合 |
1 | # output |
1 | # 网格搜索后的模型评价 |
注:网格搜索比较慢,而且不一定能得到最好的结果