决策树cart算法实战

article/2025/10/15 0:05:29

1、使用决策树预测隐形眼镜类型,隐形眼镜数据集(lenses.csv)是非常著名的数据集,它包含很多患者眼部状况的观察
条件以及医生推荐的隐形眼镜类型。隐形眼镜类型包括硬材质、软材质以及不适合佩戴隐形眼镜。
要求:读取lenses.csv中的隐形眼镜数据集,构造决策树和画出决策树.(采用cart算法构造决策树)
预测[‘young’,‘hyper’,‘no’,‘normal’]适合戴那种隐形眼镜

from sklearn import tree
import csv
from sklearn.feature_extraction import DictVectorizer
from sklearn import preprocessing
featureList = []
labels = []# 使用DictReader创建的reader是一个字典对象,遍历后,不包含第一行数据
reader = csv.DictReader(open('lenses.csv','r'))
for x in reader:
#     print(x)value = {"age":x["age"],"prescript":x["prescript"],"astigmatic":x["astigmatic"],"tearRate":x["tearRate"]}labelV = x["class"]featureList.append(value)labels.append(labelV)
# print(featureList)
# print('labels:',labels)
#下面将字符转化为数据,因为决策树只能分许数据,不能分析字符
vec = DictVectorizer()#这个类是专门将这种形式的字符转化为数字,Vectorizer向量化
featureData = vec.fit_transform(featureList).toarray()#利用fit_transform方法将featureList传进去
#然后利用toarray转化为数组
print('特征名称:',vec.get_feature_names())
# print('dataSet:',featureData)
#把标签换成0、1、2表示
# lb = preprocessing.LabelEncoder()
# labels = lb.fit_transform(labels)
# print(lb.classes_)
# print(labels)
#建立模型
model = tree.DecisionTreeClassifier(criterion='gini',max_depth=3)#创建决策树以信息熵为主要考虑因素
# print(model)
#训练模型
model.fit(featureData,labels)
# model.predict([['young','hyper','no','normal']])
#画出决策树
import graphviz
dot_data = tree.export_graphviz(model,out_file=None,feature_names=vec.get_feature_names(),class_names=['hard','no lenses','soft'],
#                                 class_names=['no lenses','hard','soft'],
#                                 class_names=lb.classes_,filled=True,rounded=True,special_characters=False)
graph = graphviz.Source(dot_data)
# graph.render('computer')
graph

在这里插入图片描述
在这里插入图片描述

prediction = model.predict([[0,0,1,1,0,1,0,1,0]])
print(prediction)

[‘soft’]

2、读取play.csv文件的内容(outlook(天气),TEMPERATURE(温度)、HUMIDITY(湿度),WINDY(风)代表四个特征。
最后一列(play)代表类别,即是否出去打球),根据play.csv的数据构造决策树以及训练模型,画出决策树。

from sklearn import tree
import csv
from sklearn.feature_extraction import DictVectorizer
from sklearn import preprocessing
import numpy as np
featureList = []
labels = []# 使用DictReader创建的reader是一个字典对象,遍历后,不包含第一行数据
reader = csv.DictReader(open('play.csv','rt'))
dataset0 = np.zeros((14,2))
i=0
for x in reader:
#     print(x)value = {"outlook":x["outlook"],"WINDY":x["WINDY"]}labelV = x["PLAY"]featureList.append(value)labels.append(labelV)dataset0[i]=[x['TEMPERATURE'],x['HUMIDITY']]i = i+1
# print(featureList)
print('labels:',labels)
print(dataset0)
#下面将字符转化为数据,因为决策树只能分许数据,不能分析字符
vec = DictVectorizer()#这个类是专门将这种形式的字符转化为数字,Vectorizer向量化
featureData = vec.fit_transform(featureList).toarray()#利用fit_transform方法将featureList传进去
#然后利用toarray转化为数组
print('特征名称:',vec.get_feature_names())
vec.get_feature_names().append('TEMPERATURE')
vec.get_feature_names().append('HUMIDITY')
print(vec.get_feature_names())
# print('dataSet:',featureData)
x_data = np.append(featureData,dataset0,axis=1)#e=np.append(a,b,axis=1)行拼接
print(x_data)
#把标签换成01表示
lb = preprocessing.LabelBinarizer()
y_data = lb.fit_transform(labels)
print(lb.classes_)
# print(y_data)
#建立模型
model = tree.DecisionTreeClassifier(criterion='gini')#创建决策树以信息熵为主要考虑因素
# print(model)
#训练模型
model.fit(x_data,y_data)
#画出决策树
import graphviz
dot_data = tree.export_graphviz(model,out_file=None,feature_names=vec.get_feature_names(),class_names=lb.classes_,filled=True,rounded=True,special_characters=False)
graph = graphviz.Source(dot_data)
# graph.render('computer')
graph

在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/dnFAmNxW.shtml

相关文章

人工智能决策树大作业

人工智能技术: 机器学习之决策树大作业 以西瓜集 2.0 为建模数据,采用交叉验证方法进行数据训练集和验证集的划分,实现决策树 “预剪枝”算法,要求:尽可能充分利用有限的西瓜集 2.0 数据所提供信息,建立泛化能力强的 决策树模型。…

决策树算法:原理与python实现案例

文章目录 决策树算法浅析决策树的介绍决策树最佳划分的度量问题决策树python案例 决策树算法浅析 决策树的介绍 决策树的定义: 决策树是一种逼近离散值目标函数的方法,学习到的函数使用树结构进行表示,完成决策任务。这里决策树可以是分类树…

决策树实例-ID3

决策树-ID3实例 参考书籍: 《机器学习》周志华,第1版 《统计学习方法》李航,第2版 用来记录自己对书中知识的理解,加强自己的理解和记忆,同时提出自己迷惑不解的地方,提高自己编辑的表达能力。 代码参考博…

决策树算法及Python 代码示例

决策树是一种基于树形结构的算法,用于在一系列决策和结果之间建立模型。它通过对特征和目标变量之间的关系进行划分,来预测目标变量的值。 决策树算法示例: 假设我们有一组数据,其中包含天气,温度,湿度和是否出门的特…

决策树一CART算法(第四部分)

决策树一CART算法(第四部分) CART树的剪枝:算法步骤 输入:CART算法生成的决策树。 输出:最优决策树T 设 K 0 , T T 0 K0,TT_0 K0,TT0​ ,从完整的决策树出发 ​ k代表迭代次数,先…

决策树算法

决策树 决策树(Decision Tree)首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析,本质上是通过一系列规则对数据进行分类的过程 决策树是一种典型的分类方法。其中: 每个内部结点表示一个属性上的判断每个分支代表一个判断结果的输出每…

决策树ID3、C4.5和CART算法例子详解

决策树 决策树是附加概率结果的一个树状的决策图,是直观的运用统计概率分析的图法。机器学习中决策树是一个预测模型,它表示对象属性和对象值之间的一种映射,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对…

决策树算法原理及案例

机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响。决策树是机器学习中最基础且应用最广泛的算法模型。本文介绍了机器学习的相关概念、常见的算法分类和决策树模型及应用。通过一个决策树案例,着重从特征选择、剪枝等方面描述决策树…

通过实例理解决策树算法(ID3,C4.5,Cart算法)

(一)实例:使用ID3算法给出“好苹果”的决策树 (二)决策树的工作原理 我们在做决策树的时候,会经历两个阶段:构造和剪枝。 构造原理——构造的过程就是选择什么属性作为节点的过程,…

数据挖掘之C4.5决策树算法

1.决策树算法实现的三个过程: 特征选择:选择哪些特征作为分类的标准是决策树算法的关键,因此需要一种衡量标准来进行特征的确定,不同的决策树衡量标准不同。例如C4.5决策树就是以信息增益率来作为衡量标准。决策树的生成&#xf…

决策树ID3例题

表格里统计了14天的气象数据,特征属性包括outlook,temperature,humidity,windy,类别属性为是否打球(play),用ID3算法生成决策树。 解答过程:

决策树算法与案例

决策树算法介绍 树模型 决策树:从根节点开始一步步走到叶子节点(决策)。所有的数据最终都会落到叶子节点,既可以做分类也可以做回归 树的组成 根节点:第一个选择点;非叶子节点与分支:中间过程…

数据挖掘--决策树ID3算法(例题)

决策树分类算法 决策树分类算法通常分为两个步骤:决策树生成和决策树修剪。 决策树生成算法的输入参数是一组带有类别标记的样本,输出是构造一颗决策树,该树可以是一棵二叉树或多叉树。二叉树的内部结点(非叶子结点)…

决策树算法原理+例题练习

一、决策树的优缺点 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失值不敏感,可以处理不相关特征数据。缺点:可能会产生过度匹配的问题。使用数据类型:数值型和标称型。 二、一个实例 一天&#…

高级管理学:计算题

题1:决策树和期望值 某企业拟开发新产品,现在有两个可行性方案需要决策。 方案一:开发新产品 A,需要追加投资 180 万元,经营期限为 5 年。此间,产品销路好每年可获利 170 万元;销路一般每年可获…

Nikto漏洞扫描工具简介

nikto漏洞扫描工具在我的靶场上测试报告如下: 测试时间会很长,我是在虚拟环境下做的,给的配置不高,吃尽CPU,最后不得不强制关闭虚拟机,通过-o参数将结果输出到文档中。 结果显示: 一些黑客比较感…

wed渗透:记录kali系统下扫描工具nikto的使用

目录 前言1 工具介绍2 使用场景3 使用方法3.1 查看帮助信息3.2 Nikto插件3.3 扫描3.3.1 常规扫描3.3.2 指定端口扫描3.3.3 指定协议扫描3.3.4 指定目录扫描3.3.5 多目标扫描3.3.6 配合namp利用管道输入扫描3.3.7 利用代理扫描 3.4 Nikto扫描过程中的交互参数3.5 修改nikto配置文…

Nikto安装及使用

系统要求如下(我自己使用的是linux,其它两个没有研究): 一、安装软件 第一步准备两个软件,如下: 1、nikto-master.zip(官网下载地址:https://cirt.net/nikto2) 2、libw…

Nikto详细使用教程

Nikto简介 基于perl语言开发的web页面扫描器。其特点扫描全面,速度快。 nikto常用命令 -upodate 升级,更新插件 -host 扫描目标URl -id username:password http认证接口 -list-plugins …

使用Nikto扫描网站漏洞

Nikto简介 Nikto是一个简单的开源Web服务器扫描程序,可以检查网站并报告它发现的可能用于利用或破解网站的漏洞。此外,它是业界使用最广泛的网站漏洞工具之一,并且在许多圈子中被认为是行业标准。 虽然这个工具非常有效,但它根本…