机器学习之决策树算法

使用决策树训练红酒数据集

完整代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import tree, datasets
from sklearn.model_selection import train_test_split# 准备数据,这里使用前两个特征
data = datasets.load_wine()
X, y = data.data[:,:2], data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)# 训练模型
clf = tree.DecisionTreeClassifier(max_depth=1)
clf.fit(X, y)print(clf.score(X_test, y_test))

输出:

0.7555555555555555

绘制决策树的图形

完整代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import tree, datasets
from sklearn.model_selection import train_test_split# 准备数据,这里使用前两个特征
data = datasets.load_wine()
X, y = data.data[:,:2], data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)# 训练模型
clf = tree.DecisionTreeClassifier(max_depth=1)
clf.fit(X, y)# 画图
cmap_light = ListedColormap(["#FFAAAA", "#AAFFAA", "#AAAAFF"])
cmap_bold = ListedColormap(["#FF0000", "#00FF00", "#0000FF"])x_min, x_max = X_train[:,0].min() - 1, X_train[:,0].max() + 1
y_min, y_max = X_train[:,1].min() - 1, X_train[:,1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))
z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)plt.figure()
plt.pcolormesh(xx, yy, z, cmap=cmap_light)plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor="k", s=20)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier: (max_depth = 1)")
plt.show()

输出:
在这里插入图片描述

从结果来看,分类器的表现并不是特别好,我们可以加大深度试试。

调整决策树的深度

完整代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import tree, datasets
from sklearn.model_selection import train_test_split# 准备数据,这里使用前两个特征
data = datasets.load_wine()
X, y = data.data[:,:2], data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)# 训练模型
clf = tree.DecisionTreeClassifier(max_depth=3)
clf.fit(X, y)
print(clf.score(X_test, y_test))# 画图
cmap_light = ListedColormap(["#FFAAAA", "#AAFFAA", "#AAAAFF"])
cmap_bold = ListedColormap(["#FF0000", "#00FF00", "#0000FF"])x_min, x_max = X_train[:,0].min() - 1, X_train[:,0].max() + 1
y_min, y_max = X_train[:,1].min() - 1, X_train[:,1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))
z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)plt.figure()
plt.pcolormesh(xx, yy, z, cmap=cmap_light)plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor="k", s=20)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier: (max_depth = 3)")
plt.show()

输出:
在这里插入图片描述

从结果来看,分数变成了0.84,已经是一个比较能够接受的分数了。

另外,从图像来看,不同的点大致都能落入到自己的区域中,相比深度为1的时候更加的准确一点。

继续加大决策树的深度

完整代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import tree, datasets
from sklearn.model_selection import train_test_split# 准备数据,这里使用前两个特征
data = datasets.load_wine()
X, y = data.data[:,:2], data.target
X_train, X_test, y_train, y_test = train_test_split(X, y)# 训练模型
clf = tree.DecisionTreeClassifier(max_depth=5)
clf.fit(X, y)
print(clf.score(X_test, y_test))# 画图
cmap_light = ListedColormap(["#FFAAAA", "#AAFFAA", "#AAAAFF"])
cmap_bold = ListedColormap(["#FF0000", "#00FF00", "#0000FF"])x_min, x_max = X_train[:,0].min() - 1, X_train[:,0].max() + 1
y_min, y_max = X_train[:,1].min() - 1, X_train[:,1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))
z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)plt.figure()
plt.pcolormesh(xx, yy, z, cmap=cmap_light)plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor="k", s=20)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title("Classifier: (max_depth = 5)")
plt.show()

输出:
在这里插入图片描述

从结果来看,分数从0.84变成了0.93,明显更加的准确了。

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

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

相关文章

【云原生】Kubernetes 核心概念

什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“k8s”,它…

科大讯飞笔试题---删除数字

1、 题目描述: 给定一个长度为 n 的数组,数组元素为 a1, a2, . . , an,每次能删除任意 a 的任意一位,求将所有数字变成 0 最少需要几步。例如 103 若删除第 1 位则变成 3; 若删除第 2 位则变成13; 若删除第 3 位则变成 10。 输入…

AWS容器之Amazon ECS

Amazon Elastic Container Service(Amazon ECS)是亚马逊提供的一种完全托管的容器编排服务,用于在云中运行、扩展和管理Docker容器化的应用程序。可以理解为Docker在云中对应的服务就是ECS。

c语言如何将一个文本内容复制到另外一个文本里

c语言如果要把一个文本文件的文件复制到另外一个文件里&#xff0c;代码如下 #include<stdio.h>int main() {FILE *fp1,*fp2;char a;fp1fopen("D://cyy//aaa.txt","r");fp2fopen("ccc.cpu","w");while(a!EOF){afgetc(fp1);fput…

linux:切分大文件

文章目录 1. 前言2. 用法3. 例子 1. 前言 如果传输、存储过程中出现大文件&#xff0c;希望切分成小文件。在 Linux 中&#xff0c;可以使用多种工具来切分大文件&#xff0c;最常用的是 split 命令。split 命令可以将一个大文件按照指定大小切分成多个小文件。 2. 用法 spl…

ImageMagick入门教程(免费图片格式转换)

起因是因为我不会图片转换,且发现很多图片转换都要钱,尤其是pdf转jpg,于是我就是找到了这个包,自己处理.当然包时不会导的,所以只能用它提供的命令了. 准备工作 下载imagemagick:ImageMagick – Download 我下载的这个,傻瓜式安装就行,把所有勾勾都勾上,然后要记住安装路径,然…

一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)

目录 ​编辑 引言 一、RDMA的基本原理 二、RDMA的主要特点 三、RDMA的编程接口 四、RDMA的代码演示 服务器端代码&#xff1a; 客户端代码&#xff1a; 五、总结 引言 RDMA&#xff0c;全称Remote Direct Memory Access&#xff0c;即远程直接内存访问&#xff0c;是…

客户机/服务器交互模式

目录 概述 网络应用软件的地位和功能 C/S 模式的特性 容易混淆的术语 C/S 模式的通信过程 网络协议与 C/S 模式的关系 错综复杂的 C/S 交互 总结 概述 客户机/服务器&#xff08;Client/Server&#xff0c;简称 C/S&#xff09;交互模式是一种常见的网络应用软件架构&a…

【ChatGPT】 Microsoft Edge 浏览器扩展使用 GPT

【ChatGPT】添加 Microsoft Edge 浏览器插件免费使用 GPT 文章目录 准备工作添加扩展注意事项 使用 ChatGPT 可以更高效的搜索到想要的内容&#xff0c;有效节约在搜索引擎中排查正确信息的时间。 准备工作 准备一台可上网的电脑电脑上安装有 Windows 自带的 Microsoft Edge …

二.常见算法--贪心算法

&#xff08;1&#xff09;单源点最短路径问题 问题描述&#xff1a; 给定一个图&#xff0c;任取其中一个节点为固定的起点&#xff0c;求从起点到任意节点的最短路径距离。 例如&#xff1a; 思路与关键点&#xff1a; 以下代码中涉及到宏INT_MAX,存在于<limits.h>中…

python+selenium - UI自动框架之封装查找元素

单一的元素定位方法不能满足所有元素的定位&#xff0c;可以根据每个元素的特点来找到合适的方法&#xff0c;可以参考下图的方法&#xff1a; elementFind.py from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_con…

Vue filter实战详解

在 Vue.js 中&#xff0c;filter 是一种用于在模板中对数据进行格式化的功能。它可以用来对数据进行处理、过滤或格式化&#xff0c;然后在模板中直接使用。 filter 是一种全局的 Vue 实例方法&#xff0c;可以在任何组件的模板中使用。 1.定义全局过滤器&#xff1a; 在 Vue…

InnoDB如何解决幻读的

InnoDB 使用一种称为 Next-Key Locking 的锁机制来解决幻读问题。幻读发生在一个事务在读取某个范围内的记录时&#xff0c;另一个事务在这个范围内插入新的记录。InnoDB 的 Next-Key Locking 结合了行锁&#xff08;Row Lock&#xff09;和间隙锁&#xff08;Gap Lock&#xf…

MavLinK协议

由于在公司需要使用这个&#xff0c;我就写一个文章用于入门级别 简单介绍 MAVSDK是PX4开源团队贡献的基于mavlink通信协议的用于无人机应用开发的SDK&#xff0c;其可以部署在Windows、Linux、Android等多种平台&#xff0c;并且支持多种语言如c/c、python、Java等。 在官网…

GIS读研与求职准备:GNSS专业研0

本文介绍GIS方向研究生入学初期&#xff0c;为将来转码、从事开发类工作所作求职准备的规划路径、方向选择等方面的建议。 最近&#xff0c;有很多师弟师妹询问关于研究生方向选择、求职准备、就业方向选择等方面的问题。首先非常感谢大家的盲目信任&#xff08;开个玩笑&#…

基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本

基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本 预先准备 准备三台debian 12的虚拟机&#xff0c;配置如下&#xff1a; HostnameIP配置k8s-master1192.168.31.604vCPU、8GiB 内存、50GiB 硬盘k8s-worker1192.168.31.614vCPU、8GiB 内存、50GiB 硬盘k8s-worker2192.168.31.6…

python从0开始学习(九)

前言 上一篇文章我们介绍了python中的序列类型和元组类型&#xff0c;本篇文章将接着往下将。 1、字典类型 字典类型是根据一个信息查找另一个信息的方式所构成的“键值对”&#xff0c;它表示索引用的键和对应的值构成的成对关系。它是一个可变数据类型&#xff0c;也就是说它…

Leetcode 3154. Find Number of Ways to Reach the K-th Stair

Leetcode 3154. Find Number of Ways to Reach the K-th Stair 1. 解题思路2. 代码实现 题目链接&#xff1a;3154. Find Number of Ways to Reach the K-th Stair 1. 解题思路 这一题思路上就是一个动态规划&#xff0c;我们只需要确定一下运行的终止条件&#xff0c;然后写…

React中显示数据

SX 会让你把标签放到 JavaScript 中。而大括号会让你 “回到” JavaScript 中&#xff0c;这样你就可以从你的代码中嵌入一些变量并展示给用户。例如&#xff0c;这将显示 user.name&#xff1a; return (<h1>{user.name}</h1> ); 你还可以将 JSX 属性 “转义到 …

《web应用技术》第9次课后作业

一、将前面的代码继续完善功能 1、采用XML映射文件的形式来映射sql语句&#xff1b; 2、采用动态sql语句的方式&#xff0c;实现条件查询的分页。 二、学习git的使用。 1、每个小组将自己的项目上传到gitee&#xff0c;学会协作开发&#xff1b; 2、学会从gitee上拉取项目…