目录

一、分类决策树

1.决策树的划分依据

2.剪枝(对付"过拟合"的主要⼿段)

3.案例(泰坦尼克号乘客⽣存预测)

4.利弊

二、回归决策树


决策树思想的来源⾮常朴素,程序设计中的条件分⽀结构就是if-else结构。

一、分类决策树

1.决策树的划分依据

信息增益

信息增益率

基尼值和基尼指数

2.剪枝(对付"过拟合"的主要⼿段)

在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分⽀过多,这时就可能 因训练样本学得"太好"了,以致于把训练集⾃身的⼀些特点当作所有数据都具有的⼀般性质⽽导致过拟合。因此,可通 过主动去掉⼀些分⽀来降低过拟合的⻛险。

可以通过限制内部节点再划分所需最⼩样本数和决策树最⼤深度来达到剪枝的目的

3.案例(泰坦尼克号乘客⽣存预测)

import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
#1.获取数据
data = pd.read_csv("F:/数学建模/机器学习/数据/data.csv")
# print(data)
# print(data.describe())
#2.数据基本处理
#2.1确定的特征值和目标值
data_x=data[["Pclass","Age","Sex"]]
data_y=data["Survived"]
# print(data_x)
# print(data_y)
# 2.2确实值得处理
data_x['Age'].fillna(data_x['Age'].mean(), inplace=True) #取平均值处理
# 2.3 数据集划分
x_train,x_test,y_train,y_test=train_test_split(data_x,data_y,random_state=22)
# 3.特征⼯程(字典特征抽取)特征中出现类别符号,需要进⾏one-hot编码处理(DictVectorizer)
transfer=DictVectorizer(sparse=False)
print(x_train.to_dict(orient="records"))
x_train = transfer.fit_transform(x_train.to_dict(orient="records")) #转化为字典类型x_train.to_dict(orient="records")
x_test = transfer.fit_transform(x_test.to_dict(orient="records"))
# 4.决策树模型训练和模型评估
estimator=DecisionTreeClassifier()
estimator.fit(x_train, y_train)
# 4.2评估
print(estimator.score(x_test, y_test))
print(estimator.predict(x_test))
export_graphviz(estimator, out_file="D:/迅雷下载/demo/machineLearnCode/decisionTreeTest/tree.dot", feature_names=['Age', 'Pclass', '⼥性', '男性'])

决策树的图:

打开cmd到first.dot目录下,运行:
dot -Tpng first.dot -o first.png
可以得到画好的图形。
解释:dot表示使用的是dot布局,其他布局相应的修改即可,-T表示格式,即画成png格式,-o表示重命名为first.png。

samples属性统计出它应用于多少个训练样本实例

value属性告诉你这个节点对于每一个类别的样例有多少个

4.利弊

优点:简单的理解和解释,树⽊可视化。

缺点 决策树学习者可以创建不能很好地推⼴数据的过于复杂的树,容易发⽣过拟合。

改进: 减枝cart算法

随机森林(集成学习的⼀种)

二、回归决策树

案例

from cProfile import label
import numpy as np
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor
from sklearn.linear_model import LinearRegression
from sympy import plot# ⽣成数据
x=np.array(list(range(1,11))).reshape(-1,1) #列表转换为矩阵
# print(x)
y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])# 训练模型
m1=DecisionTreeRegressor(max_depth=1)
m2=DecisionTreeRegressor(max_depth=3)
m3=LinearRegression()
m1.fit(x,y)
m2.fit(x,y)
m3.fit(x,y)# 模型预测
x_test=np.arange(0,10,0.01).reshape(-1,1)
# print(x_test)
y1=m1.predict(x_test)
y2=m2.predict(x_test)
y3=m3.predict(x_test)
#显示
# matplotlib.rcParams['font.sans-serif'] = ['SimHei']     # 显示中文
# # 为了坐标轴负号正常显示。matplotlib默认不支持中文,设置中文字体后,负号会显示异常。需要手动将坐标轴负号设为False才能正常显示负号。
# matplotlib.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif'] = ['SimHei']     # 显示中文
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(10,6),dpi=100)
plt.scatter(x,y,label="数据")
plt.plot(x_test,y1,label="max_depth=1")
plt.plot(x_test,y2,label="max_depth=3")
plt.plot(x_test,y3,label="LinearRegression")
plt.xlabel("数据")
plt.ylabel("预测值")
plt.legend()
plt.show()

决策树(python)相关推荐

  1. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...

  2. id3决策树 鸢尾花 python_C4.5决策树Python代码实现

    C4.5决策树Python代码实现 我们知道C4.5决策树与ID3决策树最主要的区别就是C4.5使用信息增益率来划分最优属性.因为使用信息增益来划分属性的话会存在以下这些缺点:对可取属性多的特征有偏好 ...

  3. python建模 决策_决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:...

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizer import csv fro ...

  4. ID3西瓜决策树python实现

    ID3西瓜决策树python实现 前言 一.代码 运行截图 参考博客:https://blog.csdn.net/qq_45717425/article/details/120959148 前言 一. ...

  5. ID3决策树 Python实现 + sklearn库决策树模型的应用

    本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...

  6. 机器学习实验二---决策树python

    机器学习实验二---决策树python 一.了解一下决策树吧 决策树基本流程 信息增益 决策树的优缺点 二.数据处理 三.决策树的构建 计算给定数据集的香农熵 按照给定特征划分数据集 选择最好的数据划 ...

  7. 决策树 python 结果画图_scikit-learn决策树的python实现以及作图

    decsion tree(决策树) 其中每个内部结点表示在一个属性上的测试,每个分支代表一个属性的输出,而每个树叶结点代表类或类的分布.树的最顶层是根节点 连续变量要离散化 机器学习中分类方法的一个重 ...

  8. 决策树python实现及常见问题总结

    一.概述 决策树是一种基于树结构,使用层层推理来解决分类(回归)问题的算法 决策树由下面几种元素构成: 决策树模型的三个步骤 特征选择 决策树生成 决策树剪枝 二.特征选择 根据特征选择不同方法有三种 ...

  9. 机器学习实战——决策树Python实现问题记录

    问题:NameError: name 'reload' is not defined import imp import trees imp.reload(trees) 结论:已经导入过的模块才能用r ...

  10. 实验三:CART分类决策树python实现(两个测试集)(一)|机器学习

    目录 python实现 分步 源代码(全部) 测试集1(鸢尾花集) 测试集2(红酒品类数据集) 总结 python实现 分步 划分数据子集(注意区分离散特征值和连续特征值) #获取数据子集,分类与回归 ...

最新文章

  1. Bugzilla使用手册及解决方案
  2. 异常记录: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError
  3. 【CV】目标检测入门和实现思路!
  4. app把信息添加到mysql_如何将数据库表中的数据添加到ListView C#Xamarin Android App
  5. mixin network_基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币...
  6. 那些基础不好的程序员,后来怎么样了?
  7. jquery access方法 有什么用
  8. 内固定取出术后护理_骨折术后康复治疗全知道!
  9. springboot开发者工具包,自动监听内容改变,自动更新重启
  10. 使用C#进行数据库增删改查(一)
  11. python复制上一条语句快捷键_pycharm快捷键及一些常用设置
  12. coalesce函数详解--判空三目表达式
  13. cad多段线画圆弧方向_【学员分享】CAD多段线用法
  14. 不采用Matlab函数,自行设计基于双线性插值的图像放大程序
  15. 男生追女生时的21个致命问题
  16. 硅谷火爆的云原生,你会玩吗?
  17. 很方便的密码加密算法BCrypt
  18. 网易云发送验证码短信,发送通知短信,java版
  19. 论文投稿指南——中文核心期刊推荐(航空、航天)
  20. 今晚直播,你该了解的MySQL 8.0 SQL优化新特性

热门文章

  1. python爬虫和数据分析的书籍_豆瓣书籍数据爬取与分析
  2. html魔方转动效果,html5+css3实现旋转魔方的点点滴滴
  3. Linux摄像头驱动第一篇之虚拟摄像头驱动vivi.c
  4. RV1126RV1109 buildroot 增加USB双摄支持(一)
  5. 使用python将任意张图片拼接成多张大图
  6. Ubuntu下噩梦搬的hud-service进程CPU直接爆炸
  7. Java基础知识系列之-抽象abstract
  8. 130道Python练习题,涵盖基础内容的方方面面
  9. Antd组件库的使用
  10. 第十三章 相关方管理 权利利益方格 凸显模式 相关方立方体 相关方登记册 相关方参与评估矩阵