决策树算法实战

本实战主要目标是讲解如何使用sklearn库来构造决策树,包括其中的一些参数的使用,以及参数调优对模型精确度的影响。

1. 数据处理

导入Pandas和Matplotlib两个库。

# 导入Pandas和Matplotlib两个库
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd

此次实验没有CSV数据文件,我们采用sklearn模块中的内置数据集,直接加载内置的房价数据集,根据房子的价格和一些影响因素,来预测最终的结果。

from sklearn.datasets.california_housing import fetch_california_housing
housing = fetch_california_housing()
print(housing.DESCR)# 内置数据集

可以简单打印一下数据信息,具体代码与结果如图5-33所示。第一条代码中.shape表示数据的维度,输出的信息表示整个文件有8个特征及20640条数据。第二条代码表示打印数据集中的第一行数据信息。

2. 模型的建立

从sklearn中导入tree模块,在tree模块里可以用决策树分类或者回归,预测类别值或连续值都是可以的。使用sklearn分两步,第一步是将树模型实例化出来,传入参数max_depth控制树的最大深度。第二步是用实例出来的变量来进行训练,相当于构造一个树模型。其中,传入两个参数x,y,这里的x取数据集中的第6列和第7列,相当于指定某些特征来建模;y相当于label,即结果值。

# 实例化树模型
from sklearn import tree
print(housing.target)
dtr = tree.DecisionTreeRegressor(max_depth=2) # 控制深度
dtr.fit(housing.data[:,[6,7]],housing.target) # 取第6列和第7列

执行语句输出模型的参数,如图5-34所示,除了设定的参数,有些参数是默认的,一般情况下我们只需要调整部分参数即可。

3. 模型可视化

模型可视化显示需要借助第三方工具。首先要安装graphiviz,其官方网站地址是http://www.graphviz.org/,进入页面后单击Download按钮,根据计算机版本选择安装文件,安装后将bin目录下的路径添加到环境变量即可使用。

接下来要构造可视化树模型,代码结构差不多,唯一需要调整的是构造对象的变量名字,以及图中的特征名字,就是dataframe中用什么名字就指定那个名字,代码如下:

# 可视化构造树模型
dot_data = \
tree.export_graphviz(dtr,# 变量名out_file=None,feature_names=housing.feature_names[6:8],# 名字filled=True,impurity=False,rounded=True
)

另外,还需要安装一个pydotplus库,使用pip install pydotplus命令即可安装。把数据参数传进去并指定画图的颜色,代码如下:

import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data)
graph.get_nodes()[7].set_fillcolor("#FFF2DD")
from IPython.display import Image
Image(graph.create_png())

结果如图5-35所示。如此就完成了决策树的可视化的过程。

所以说,调用Python的内置模块还是很方便的,不需要在cmd命令窗口上去进行一些操作,构造好的决策树图还可以保存到本地,方便查看,操作也很简单。

graph.write_png("dtr_white_backgroud.png")

本文节选自《机器学习实战(视频教学版)》,获出版社和作者授权发布。

《图神经网络基础、模型与应用实战(人工智能技术丛书)》(兰伟,叶进,朱晓姝)【摘要 书评 试读】- 京东图书 (jd.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/843093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划part02 Day42

LC62不同路径 LC63不同路径II(超时10min) 超时原因分析:思路想错了,即便是正确思路初始化也有点问题,应该将不必要的判断逻辑引入初始化的过程中初始化: 从左上角到[i][0]和[0][j]都只有一条路径dp[i][0]1和dp[0][j]1引入故障&am…

URL跳转

1.URL介绍 开放重定向(Open Redirect),也叫URL跳转漏洞,是指服务端未对传入的跳转url变量进行检查和控制,导致诱导用户跳转到恶意网站,由于是从可信的站点跳转出去的,用户会比较信任。 2.URL跳…

监控云安全的9个方法和措施

如今,很多企业致力于提高云计算安全指标的可见性,这是由于云计算的安全性与本地部署的安全性根本不同,并且随着企业将应用程序、服务和数据移动到新环境,需要不同的实践。检测云的云检测就显得极其重要。 如今,很多企业…

公司预防文件泄密的常见手段 | 文件防泄密软件推荐排行榜

在当今信息化社会,企业面临着越来越多的文件泄密风险。为了保护企业的核心信息和资产,公司需要采取一系列手段来预防文件泄密。本文将介绍公司预防文件泄密的常见手段,并推荐五款优秀的防泄密软件,帮助企业构建更为严密的数据安全…

二零二四充能必读 | 618火热来袭,编程书单助你提升代码力

文章目录 📘 Java领域的经典之作🐍 Python学习者的宝典🌐 前端开发者的权威指南🔒 并发编程的艺术🤖 JVM的深入理解🏗 构建自己的编程语言🧠 编程智慧的结晶🌟 代码效率的提升 亲爱的…

VUE3+TS+elementplus+Django+MySQL实现从数据库读取数据,显示在前端界面上

一、前言 前面通过VUE3和elementplus创建了一个table,VUE3TSelementplus创建table,纯前端的table,以及使用VUE3TSelementplus创建一个增加按钮,使用前端的静态数据,显示在表格中。今天通过从后端获取数据来显示在表格…

学习信号和槽(1)

信号和槽函数 一、了解信号和槽的概念二、信号和槽的使用2.1、第一种方法2.2、第二种方法2.3、第三种方法2.4、第四种方法2.5、第五种方法 一、了解信号和槽的概念 信号(Signal):就是在特定条件下被发射的事件,比如QPushButton 最…

美国西储大学(CRWU)轴承故障诊断——连续小波(CWT)变换

1.数据集介绍 2.代码 import random import matplotlib matplotlib.use(Agg) from scipy.io import loadmat import numpy as npdef split(DATA):step = 400;size = 1024;data = []for i in range(1, len(DATA) - size, step):data1 = DATA[i:i + size]data.append(data1)rand…

内网穿透初步探索实践

内网穿透初步 正常来说两台Linux设备只有在同一局域网下才可以进行互相的ssh远程登录 那么如果不在一个网段下,比方说一台在家里连着家里的WIFI,一台在学校连着实验室的WIFI,这种情况要想实现ssh远程登录则需要用到内网穿透 这就需要用到一…

什么是期权内在价值?怎么计算?

今天期权懂带你了解什么是期权内在价值?怎么计算?内在价值,也称为内涵价值、内在价格,指的是若期权合约到期,权利方能够赚到的市场价与行权价之间的差价收益。 什么是期权内在价值? 期权的内在价值是指期权…

java项目——图书管理系统

文章目录 前言图书管理系统整体框架:book包user包Main包:iooperation包总结: 前言 针对这些天所学的javaSE的知识,用一个小项目来实践一下。 图书管理系统 整体框架: 采取面向对象的思想实现此项目,首先…

从华为云OBS到AWS云上S3:迁移及相关事项

随着云计算的快速发展,企业越来越倾向于将数据存储和管理移到云端。华为云的对象存储服务(OBS)和亚马逊云服务(AWS)上的简单存储服务(S3)是两个备受欢迎的选择。对于那些考虑从华为云OBS迁移到A…

安全攻防三

一、IDS: 当黑客绕过了防火墙,你该如何发现? IDS (Intrusion Detection System,入侵检测系统) NIDS 内网中检测网络流量攻击 黑客如果已经进去内网,防火墙就没办法保护了 NIDS部署在交换机和路由器这些路…

从零开始实现自己的串口调试助手(1) - ui界面搭建

UI 界面搭建 ui界面整体演示 ui对象拆分 更多的细节就不方便展开了,下面有提示完成ui设计的提示 在创建工程前 记得把编码改为utf-8 ui设计技巧: ctrl 鼠标左键实现拖动实现复制粘贴 groupBox : 带标题的文本框 栅格布局 -- 只有一个控件的时候会铺满…

vue系列之 插槽(Slot) 详解

插槽在vue中是一种很常见的写法,让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式。一共有三种分类:默认插槽、具名插槽、作用域插槽,下面一一结合案例详细说明。原创不易,需要的小伙伴 收藏关注 哦…

基于Vue的自定义服务说明弹窗组件的设计与实现

基于Vue的自定义服务说明弹窗组件的设计与实现 摘要 随着技术的不断发展,前端开发面临着越来越高的复杂性和不断变化的需求。传统开发方式往往将整个系统构建为整块应用,这导致对系统的任何微小改动都可能触发整体的逻辑变更,从而增加了开发…

B站pink老师HTML5基础(一)

文章目录 一、网页1.什么是网页2.什么是HTML二、常用浏览器 三、Web标准四、HTML标签1.HTML基本结构标签 五、快捷键六、常用标签1.标题标签2.段落和换行标签3.文本格式化标签4.div标签和span标签5.图像标签6.图像路径7.超链接标签8.特殊字符 一、网页 1.什么是网页 2.什么是H…

什么是领导力?如何提高领导能力?

什么是领导能力? 简单来说,领导力就是通过自身的影响力,让他人服从自己的想法行动,在一个组织和集体中,领导力的作用十分重要。对于一个公司的管理层来说,领导能力是不可或缺的一部分,公司存在…

黑马python-面向对象程序设计

1.定义类 class 类名: 代码 ….. 注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯 2.self: self指调用该函数的对象 3.创建对象 对象名类() 4.添加获取对象属性 对象名.属性名值 5._init_()方法&…

Hadoop+Spark大数据技术 实验8 Spark SQL结构化

9.2 创建DataFrame对象的方式 val dfUsers spark.read.load("/usr/local/spark/examples/src/main/resources/users.parquet") dfUsers: org.apache.spark.sql.DataFrame [name: string, favorite_color: string ... 1 more field] dfUsers.show() -----------…