目录

1 认识决策树

1.1 信息增益、信息熵的计算

1.2 举例计算​编辑

1.3 决策树的分类依据

1.4 sklearn决策树API

2 泰坦尼克号乘客生存分类

2.1 案例背景

2.2  数据描述

2.3 步骤分析

2.4 代码实现

2.4.1 调入包

2.4.1 数据处理

2.4.2 估计器流程

2.4.3 导出决策树的结构

3 决策树的优缺点及改进

4 集成学习方法——随机森林

4.1 集成学习方法

4.2 随机森林

4.3 随机森林建立多个决策树过程

4.4 随机森林API

4.5 随机森林进行预测(超参数调优)

4.6 随机森林的优点

1 认识决策树

1.1 信息增益、信息熵的计算

1.2 举例计算

1.3 决策树的分类依据

  • ID3 信息增益 最大的准则

  •  C4.5 信息增益比最大的准则

  • CART 回归树:平方误差最小 分类树:基尼系数 在sklearn中可以选择可以划分的默认原则

1.4 sklearn决策树API

2 泰坦尼克号乘客生存分类

2.1 案例背景

kaggkle决策树案例:泰坦尼克号沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并为船舶制定了更好的安全规定。 造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会。 在这个案例中,我们要求您完成对哪些人可能存活的分析。特别是,我们要求您运用机器学习工具来预测哪些乘客幸免于悲剧。

数据来源https://www.kaggle.com/c/titanic

2.2  数据描述

我们提取到的数据集中的特征包括票的类别是否存活,乘坐班次,年龄,登陆home.dest,房间,船和性别等

经过观察数据得到:

  • 1 乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。
  • 2 其中age数据存在缺失。

2.3 步骤分析

  • 1.获取数据                        pd读取数据
  • 2.数据基本处理
    • 2.1 确定特征值,目标值       选择有影响的特征[年龄]、[阶级]、[性别]
    • 2.2 缺失值处理            fillna()
    • 2.3 数据集划分
  • 3.特征工程(字典特征抽取)   pd转化字典,特征抽取
  • 4.机器学习            决策树估计器流程
  • 5.模型评估

2.4 代码实现

2.4.1 调入包

from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer#转换成one_hot代码
from sklearn.tree import DecisionTreeClassifier,export_graphviz#决策树、导出决策树

2.4.1 数据处理

  • DictVectorizer(sparse=False) 字典特征抽取返回one_hot编码

具体的做法看字典特征提取DictVectorizer(特征工程之特征提取)

  • x_test.to_dict(orient="records") 可以pandas DataFrame转换为词典列表,其中1个词典代表1行
ef decision():"""决策树对于泰坦尼克号进行预测生死:return:None"""#获取数据titan=pd.read_csv("C:\\Users\\zoutong\\Desktop\\programming\data\\machine learning\\train.csv")#处理数据,找出特征值和目标值x=titan[["Pclass","Age","Sex"]]y=titan["Survived"]# 缺失值处理x["Age"].fillna(x["Age"].mean(), inplace=True)#分割数据集到训练集和测试集x_train, x_test, y_train, y_test = train_test_split(x,y, test_size=0.25)#进行处理(特征工程) 特征->类别->one_hot代码dict=DictVectorizer(sparse=False)#DictVectorizer(sparse=False)会返回一个one-hot编码矩阵x_train=dict.fit_transform(x_train.to_dict(orient="records"))#pandas DataFrame转换为词典列表,其中1个词典代表1行print(dict.get_feature_names())x_test = dict.transform(x_test.to_dict(orient="records"))print(x_train)

这个是转换成one_hot代码的数据

2.4.2 估计器流程

#用决策树进行分类dec=DecisionTreeClassifier()dec.fit(x_train,y_train)#预测准确率print("预测的准确率:",dec.score(x_test,y_test))

预测的准确率: 0.8116591928251121

2.4.3 导出决策树的结构

安装graphiviz教程:Win / Mac安装Graphviz - 哔哩哔哩

  #导出决策树的结构export_graphviz(dec,out_file="./decision tree.dot",feature_names=["年龄","pclass","男性","女性"])

 Dot文档中的内容:

digraph Tree {
node [shape=box, fontname="helvetica"] ;
edge [fontname="helvetica"] ;
0 [label="女性 <= 0.5\ngini = 0.476\nsamples = 668\nvalue = [407, 261]"] ;
1 [label="pclass <= 2.5\ngini = 0.389\nsamples = 242\nvalue = [64, 178]"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="年龄 <= 2.5\ngini = 0.103\nsamples = 128\nvalue = [7, 121]"] ;
1 -> 2 ;
3 [label="pclass <= 1.5\ngini = 0.5\nsamples = 2\nvalue = [1, 1]"] ;
2 -> 3 ;
4 [label="gini = 0.0\nsamples = 1\nvalue = [1, 0]"] ;
3 -> 4 ;
5 [label="gini = 0.0\nsamples = 1\nvalue = [0, 1]"] ;
3 -> 5 ;
6 [label="年龄 <= 37.0\ngini = 0.091\nsamples = 126\nvalue = [6, 120]"] ;
2 -> 6 ;
7 [label="pclass <= 1.5\ngini = 0.044\nsamples = 88\nvalue = [2, 86]"] ;
6 -> 7 ;
8 [label="gini = 0.0\nsamples = 44\nvalue = [0, 44]"] ;
7 -> 8 ;
9 [label="年龄 <= 26.5\ngini = 0.087\nsamples = 44\nvalue = [2, 42]"] ;
7 -> 9 ;
10 [label="年龄 <= 25.5\ngini = 0.165\nsamples = 22\nvalue = [2, 20]"] ;
9 -> 10 ;
11 [label="年龄 <= 23.0\ngini = 0.091\nsamples = 21\nvalue = [1, 20]"] ;
10 -> 11 ;
12 [label="gini = 0.0\nsamples = 14\nvalue = [0, 14]"] ;
11 -> 12 ;
13 [label="年龄 <= 24.5\ngini = 0.245\nsamples = 7\nvalue = [1, 6]"] ;
11 -> 13 ;

Dot转化为PNG:

3 决策树的优缺点及改进

  • 优点

    • 简单的理解和解释,树木可视化。
    • 需要很少的数据准备,其他技术通常需要数据归一化
  • 缺点
    • 决策树学习者可以创建不能很好地推广数据的过于复杂的树,容易发生过拟合。
  • 改进
    • 减枝cart算法
    • 随机森林(集成学习的一种)
  • 注:企业重要决策,由于决策树有很好的分析能力,在决策过程应用较多。

4 集成学习方法——随机森林

4.1 集成学习方法

集成学习通过建立几个模型组合的来解决单一预测问题。他的工作原理是生成多个分类器/模型,各自独立的学习和做出预测。这些预测最后结合成但预测,因此优于任何一个单分类的做出预测。

4.2 随机森林

定义:在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。比如4个决策树结果是T,1个决策树结果是F,那么随机森林结果是T.

4.3 随机森林建立多个决策树过程

N个样本,M个特征

单个树建立过程:

  1. 随机在N个样本当中选择一个样本,重复N次            样本有可能重复
  2. 随机在M个特征当中选出m个特征                m取值
  3. 建立10棵决策树,样本、特征大多不一样      随机有放回的抽样bootstrap
  • 为什么要随机抽样训练集?

如果不进行随机抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样。

  • 为什么要有放回抽样?

如果不是有放回的抽样,那么每棵树的训练样本都是不同,都是没有交集的,这样每棵树都是“有偏”的,都是绝对”片面的”,也就是说每棵树训练出来的都是有很大的差异的;而随机森林最后分类取决于多棵树(弱2分类器)的投票表决。

4.4 随机森林API

  • n_estimator决策树的数量
  • max_depth每棵树的深度限制

4.5 随机森林进行预测(超参数调优)

rf=RandomForestClassifier()param={"n_estimators":[120,200,300,500,800,1200],"max_depth":[5,8,15,25,30]}#网格搜索与交叉验证gc=GridSearchCV(rf,param_grid=param,cv=2)gc.fit(x_train,y_train)print("准确率:",gc.score(x_test,y_test))print("查看选择的参数模型:",gc.best_params_)

准确率: 0.8071748878923767
查看选择的参数模型: {'max_depth': 5, 'n_estimators': 300}

4.6 随机森林的优点

  • 在当前所有算法中,有极好的准确率
  • 能够有效地运行在大数据集上
  • 能够处理具有高维特征的输入样本,而且不需要降维
  • 能够评估割让给特征在分类问题上的重要性

缺点基本上很少,有以下两点

  • 有一点就是要给定参数,参数选取很重要
  • 还有一点就是训练集特征提取

机器学习基础——分类算法之决策树、随机森林、Titanic乘客生存分类相关推荐

  1. 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  2. 机器学习实践之集成方法(随机森林和AdaBoost元算法提高分类性能)

       本文根据最近学习机器学习书籍网络文章的情况,特将一些学习思路做了归纳整理,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. (未添加文章标签,特此补上,2018.1.14记.) 一.概述 ...

  3. 机器学习基础(四)——决策树与随机森林

    决策树与随机森林 文章目录 决策树与随机森林 一.知识概要(一) 二.决策树使用的算法 三.sklearn决策树API 四.决策树的案例 1. 数据清洗 2. 特征工程 3. 调用决策树API 五.集 ...

  4. python与算法社区_【Python算法】分类与预测——Python随机森林

    [Python算法]分类与预测--Python随机森林 1.随机森林定义 随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务.同时,它也是一种数据降维手段,在处理缺失值.异常值以及其他数据探 ...

  5. 机器学习——决策树+随机森林

    目录 决策树 认识决策树 决策树的生成 信息的单位--比特 信息熵 决策树的划分依据之一--信息增益 例题--银行贷款分析 决策树的其他分类依据 案例--泰坦尼克号乘客生存分类 决策树的结构.本地保存 ...

  6. 机器学习算法篇(随机森林树)

    随机森林树: 1.定义: 随机森林只利用多颗决策树对样本进行训练并预测的一种分类器,可回归可分类:随机森林是基于多颗决策树的集成算法,常见决策树算法主要分为: ID3(利用信息增益进行特征选择),C4 ...

  7. 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...

  8. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  9. 决策树随机森林GBDTXGBoost学习笔记以及代码实现

    文章目录 1. 引入 1.1 决策树 1.2 随机森林 1.3 GBDT(Gradient Boosting Decision Tree)梯度提升决策树 1.4 XGBoost(eXtreme Gra ...

最新文章

  1. python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用
  2. deepin 15.11镜像下载地址
  3. 外卖匹配系统_“外卖智能算法”和大学生有啥关系?来自工科生的专业分析
  4. ORACLE查询保留字
  5. python下载-各种版本的Python下载安装教程
  6. 2022年Java常用的框架汇总,你常用哪一个?
  7. A315-56 Compal LA-H801P LA-J801P宏基笔记本点位图
  8. power bi数据分析_设置Power BI数据网关
  9. Matlab 根号的输入
  10. google浏览器截取长图
  11. 产品 • B端和C端产品经理有什么区别?
  12. 那些年,我开发过的软件
  13. 行为识别阅读笔记(paper + parted code):Beyond Frame-level CNN Saliency-Aware 3-D CNN with LSTM for Video Acti
  14. 智能门铃app开发的功能有哪些
  15. excel2016打开空白解决方法
  16. 2022-2028全球深海发电机控制器行业调研及趋势分析报告
  17. win8信息服务器不可用怎么办,win8系统rpc服务器不可用怎么办?提示rpc服务器不可用处理方法介绍...
  18. 百度搜索引擎中的特殊符号和搜索语句
  19. 如何下载Jason2测高数据
  20. 数据库编程加入transaction

热门文章

  1. 任天堂switch修改服务器,任天堂switch将退在线服务器 玩家似乎并不买账
  2. python从网址爬图片协程_python协程gevent案例 爬取斗鱼图片过程解析
  3. 乌克兰基辅一世遗修道院起火 现场火光照亮夜空
  4. word打印机显示服务器脱机,excel服务器-办公室常识——共享服务器文件报错,共享打印机无法打印的解决办法(解决word、excel不能打印))...
  5. 天馈线测试仪具备什么功能
  6. 屏幕尺寸,分辨率,ppi换算分析
  7. Groovy和Grails介绍(1)
  8. 坐标旋转公式-- 角度和弧度
  9. 1.【Linux】如何在Ubuntu18.04上安装微信
  10. 通俗易懂:非线性与线性的区别是什么?