决策树系列目录(文末有大礼相送
决策树①——信息熵&信息增益&基尼系数
决策树②——决策树算法原理(ID3,C4.5,CART)
决策树③——决策树参数介绍(分类和回归)
决策树④——决策树Sklearn调参(GridSearchCV)
决策树⑤——Python代码实现决策树
决策树应用实例①——泰坦尼克号分类
决策树应用实例②——用户流失预测模型
决策树应用实例③——银行借贷模型
决策树应用实例④——淘宝&京东白条(回归&均方差&随机森林)


泰坦尼克号是二分类问题,今天尝试用决策树进行分类

步骤如下:

1、导入数据集
2、数据清洗:
① 删除对分类无帮助的特征
② 将某些字符串特征数值化
③ 填补缺失值或删除
3、对数据集用train_test_split切割成训练集和验证集
4、用sklearn默认参数生成一棵普通的决策树,看训练集和验证集的评分
5、通过GridSearchCV进行调参,得到最优的参数并生成最终的树

6、用混淆矩阵得出此决策树的各项评判分值

代码如下:

# 导入库
import pandas as pd
import numpy as np
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
from sklearn import metrics# 导入数据并清洗
def read_dataset(data_link):data = pd.read_csv(data_link, index_col=0)  # 读取数据集,取第一列为索引data.drop(['Name', 'Ticket', 'Cabin'], axis=1, inplace=True) # 删除掉三个无关紧要的特征labels = data['Sex'].unique().tolist()data['Sex'] = [*map(lambda x: labels.index(x), data['Sex'])] # 将字符串数值化labels = data['Embarked'].unique().tolist()data['Embarked'] = data['Embarked'].apply(lambda n: labels.index(n)) # 将字符串数值化data = data.fillna(0) # 将其余缺失值填充为0return datatrain = read_dataset('train.csv')
y = train['Survived'].values  # 类别标签
x = train.drop(['Survived'], axis=1).values # 所有样本特征# 对样本进行随意切割,得到训练集和验证集
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2)clf = DecisionTreeClassifier()  # 先不进行调参,看训练样本和测试样本分数如何
clf.fit(x_train, y_train)
print('train score:', clf.score(x_train, y_train))
print('test score:', clf.score(x_test, y_test))


可以看出训练集拟合非常好,但是测试集拟合较差,说明过拟合了,要调参

param = [{'criterion':['gini'],'max_depth': np.arange(20,50,10),'min_samples_leaf':np.arange(2,8,2),'min_impurity_decrease':np.linspace(0.1,0.9,10)},{'criterion':['gini','entropy']},{'min_impurity_decrease':np.linspace(0.1,0.9,10)}]clf = GridSearchCV(DecisionTreeClassifier(),param_grid=param,cv=10)clf.fit(x_train,y_train)print(clf.best_params_,clf.best_score_)


经过调参,最佳的参数如图所示,生成决策树如下:

# 按最优参数生成决策树
model = DecisionTreeClassifier(max_depth=20,min_impurity_decrease=0.1, min_samples_leaf=2)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
print('train score:', clf.score(x_train, y_train))
print('test score:', clf.score(x_test, y_test))
print("查准率:", metrics.precision_score(y_test,y_pred))
print('召回率:',metrics.recall_score(y_test,y_pred))
print('f1分数:', metrics.f1_score(y_test,y_pred)) #二分类评价标准


调完参数后分值并无太大变化,从查准率、召回率和f1分数来看,也处于一般水平,说明泰坦尼克号问题可能并不适合用决策树进行分类


本人互联网数据分析师,目前已出Excel,SQL,Pandas,Matplotlib,Seaborn,机器学习,统计学,个性推荐,关联算法,工作总结系列。


微信搜索并关注 " 数据小斑马" 公众号,回复“机器学习”就可以免费领取下方机器学习—周志华、统计学习方法-李航等9本经典书籍

决策树应用实例①——泰坦尼克号分类相关推荐

  1. 决策树和 K 近邻分类

    介绍 本次实验分别运用决策树和最近邻方法在分类任务上构建模型,并通过交叉验证对模型进行调优. 知识点 决策树 最近邻方法 交叉验证 机器学习介绍 在深入本次实验之前,首先了解一下什么是机器学习, Ma ...

  2. 决策树和K近邻分类随堂笔记(一)

    python3.6 pycharm 2019-8-10 文章性质:学习资料总结 1. 机器学习介绍 机器学习(Machine Learning):假设用 P 来评估计算机程序在某任务类 T 上的性能, ...

  3. 决策树模型之泰坦尼克号乘客是否生还预测

    泰坦尼克号乘客数据查验 import pandas as pd #利用pandas的read_csv模块直接从互联网收集泰坦尼克号乘客数据 titanic = pd.read_csv('http:// ...

  4. 决策树实战项目-鸢尾花分类

    决策树实战项目-鸢尾花分类 一.实验介绍 1.1 实验内容 决策树是机器学习中一种简单而又经典的算法.本次实验将带领了解决策树的基本原理,并学习使用 scikit-learn 来构建一个决策树分类模型 ...

  5. TensorFlow Lite 开发手册(5)——TensorFlow Lite模型使用实例(分类模型)

    TensorFlow Lite 开发手册(5)--TensorFlow Lite模型使用实例(分类模型) (一)新建CLion工程 (二)编写Cmakelist (三)编写main.cpp (四)下载 ...

  6. 【机器学习】决策树案例二:利用决策树进行鸢尾花数据集分类预测

    利用决策树进行鸢尾花数据集分类预测 2 利用决策树进行鸢尾花数据集分类预测 2.1 导入模块与加载数据 2.2 划分数据 2.3 模型创建与应用 2.4 模型可视化 手动反爬虫,禁止转载: 原博地址 ...

  7. 【Matlab】基于决策树DT实现多分类预测(Excel可直接替换数据)

    [Matlab]基于决策树DT实现多分类预测(Excel可直接替换数据)) 1.算法简介 1.1 算法原理 1.2 算法优点 1.3 算法缺点 1.4 算法步骤 2.测试数据集 3.替换数据 4.混淆 ...

  8. 机器学习中的特征选择——决策树模型预测泰坦尼克号乘客获救实例

    在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择.属性选择或变量子集选择.它是指:为了构建   模型而选择相关特征(即属性.指标)子集的过程.使用特征选择技术 ...

  9. CART分类决策树:kaggle泰坦尼克号存活率预测(不调库,手工推)

    一.数据来源 1.数据来源:kaggle-competitions 2.数据分析说明 该竞赛提供了两份文件,一份为训练集数据,另一份为测试集数据. 通过训练集数据训练模型,然后预测测试集里每一位乘客是 ...

最新文章

  1. java负载均衡框架_SpringCloud与Consul集成实现负载均衡功能
  2. 整合营销系统推荐乐云seo_做seo优化前需要考虑哪些
  3. C++11thread之detach()与join()的函数对比
  4. 5 table滑动固定_内滑动钢套钢蒸汽直埋保温钢管
  5. 有人问我,为什么1+1等于2
  6. ideahtml标签不提示_「系统自带标签」如何帮门店区分价值顾客?| 早8点141期
  7. ajax遍历数组对象数组对象数组,javascript - 从ajax json请求中,如何将对象动态添加到数组中,以便我可以遍历它们? - 堆栈内存溢出...
  8. Windows Server 2012 存储 (三)SMB 的高可用性
  9. 雷军立 Flag:小米 5 年 100 亿 All in AIoT
  10. PDF转CAD怎么弄?推荐两个转换方法
  11. 奉劝各位准大一的学弟学妹们,这个暑假只要作对一件事,大学的时候你就是王者!
  12. Pspice仿真实验 B-3
  13. 坚持连续背单词一年是什么体验
  14. 锁(synchronized和Lock)
  15. 设计一款照片一键加水印的小工具
  16. 双精度浮点数double
  17. 高考数学计算机题,高考数学题型全归纳汇总
  18. 江苏金丰机电有限公司参观考察
  19. 拖延的原因、误区、及建议
  20. NLP-D62-nlp比赛D31刷题D15

热门文章

  1. 超详细爬取bilibili视频数据
  2. 北大软件“软件成分分析与漏洞检测工具”(CoBOT—SCA)正式发布
  3. Java程序验证五子棋先手必胜,五子棋怎样下最厉害_五子棋先手必胜开局图
  4. 程序员裸辞全职接单一个月的感触
  5. 玩转华为数据中心交换机系列 | 配合Eth-Trunk接口流量本地优先转发
  6. Tableau参数:自定义周起始时间
  7. 无线通信安全作业1-无线通信安全最新消息
  8. swift uikit
  9. P4208 [JSOI2008]最小生成树计数
  10. 大数据可视化课程笔记 6