数据挖掘 决策树

# 编码声明,并不是注释,而是一种特殊的源文件指令,用于指定文件的字符编码格式
# -*- coding: utf-8 -*-import pandas as pd  # 提供了DataFrame等数据结构
from sklearn.tree import DecisionTreeClassifier, export_graphviz  # 决策树分类器和可视化决策树的模块
from sklearn.model_selection import train_test_split  # 划分训练集和测试集
from sklearn.feature_extraction import DictVectorizer  # 将字典形式的特征转换成向量形式# 读入并选择
data = pd.read_csv("lenses.txt", encoding="gbk", sep="\t")
features = data[['age', 'prescript', 'astigmatic', 'tearRate']]  # 使用两层括号是为了创建一个包含多个列名的列表
targets = data['eye_types']
# 获取所有属性的同步属性值的名字
feature_name = []
# 遍历 features 数据框的每一列,对每一列的 unique 值进行提取,并将这些 unique 值添加到 feature_name 列表中
features.apply(lambda x: feature_name.extend(x.unique()), axis=0)# 特征提抽取one-hot编码
vect = DictVectorizer()  # 将字典数据转换为特征矩阵,如果某个样本缺少某个特征,会用默认值(通常为0)进行填充,形成稀疏矩阵。
# 生成一个列表,其中每个元素是一个字典,字典的键是列名,值是对应行的值。	
features = vect.fit_transform((features.to_dict(orient="records")))# 划分数据集
# 训练集特征数据赋值给 X_train,测试集特征数据赋值给 X_test,训练集目标数据赋值给 y_train,测试集目标数据赋值给 y_test
X_train, X_test, y_train, y_test = train_test_split(features, targets, test_size=0.25)# #构建模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
score = clf.score(X_test, y_test)
print(f"决策树模型的分类准确率为{score:.3f}")# 将模型保存至dot文件
with open("tree_model.dot", 'w') as f:f = export_graphviz(clf, out_file=f, feature_names=feature_name, class_names=targets.unique())# #将模型输出至目标文件
# import os
# os.system(f"dot -Tpng {'tree_model.dot'} -o {'tree_model'}.jpg")from sklearn.datasets import load_iris
from sklearn import tree
import graphviz# ----------------数据准备----------------------------
iris = load_iris()  # 加载数据# ---------------模型训练----------------------------------
clf = tree.DecisionTreeClassifier()  # sk-learn的决策树模型
clf = clf.fit(iris.data, iris.target)  # 用数据训练树模型构建()
r = tree.export_text(clf, feature_names=iris['feature_names'])
dot_data = tree.export_graphviz(clf, out_file=None,feature_names=iris.feature_names,class_names=iris.target_names,filled=True, rounded=True,special_characters=True)
graph = graphviz.Source(dot_data)  # 将存储在 dot_data 中的图形数据加载到对象中
graph  # 显示图形。(如果没显示,则需要独立运行这一句)
# graph.render("iris") #将图形保存为iris.pdf文件。
# graph.view()        # 直接打开pdf文件展示# 关于使用的文件编码:
#     GBK编码主要用于简化汉字编码,通常在中国大陆被使用。如果你确定你的文本数据是中文并且使用了GBK编码,那么使用GBK编码是合适的。
#     但是如果你不确定数据的编码方式,或者数据中包含多种语言的字符,那么使用UTF-8编码会更加安全,因为它是一种通用的、兼容性很好的编码方式,能够支持几乎所有的字符和符号,并且在全球范围内被广泛应用。# 每次运行准确度差距较大,主要是因为数据量太小# 熵(entropy)是用来衡量一个随机变量的不确定性的度量,如果计算出的熵值较高,表示该数据集的不确定性也较高;而熵值较低则表示数据集的不确定性较低,即包含的信息量较少。# "tearRate"特征是指眼泪流失率(tear rate),用于描述眼睛的泪液排出速度或眼泪的分泌量。
# "soft"通常指代软性隐形眼镜或软性眼镜镜片,而"hard"可能指代硬性隐形眼镜或硬性眼镜镜片。

如果不能生成决策树图片,可以参考这篇文章

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

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

相关文章

浪涌防护器件要选对,布局布线更重要!|深圳比创达电子EMC(上)

浪涌测试,作为最常见的EMC抗干扰测试项目之一,基本上是家用消费电子必测的项目;其测试目的是为了验证产品在承受外部的浪涌冲击时能否正常工作。 一、浪涌冲击产生机理及其防护设计 浪涌冲击主要包括雷击浪涌冲击、电力系统内部的开关噪声冲…

笔记本电脑没有声音?几招恢复声音流畅!

笔记本电脑已经成为我们日常生活和工作的重要工具,而其中的声音是其功能之一。然而,有时您可能会遇到笔记本电脑没有声音的问题,这可能是由多种原因引起的。在本文中,我们将深入探讨笔记本电脑没有声音的常见原因,并提…

MCTS蒙特卡洛树搜索(The Monte Carlo Tree Search)

1、简介 蒙特卡罗树搜索是一类树搜索算法的统称,简称MCTS。它是一种用于某些决策过程的启发式搜索算法,且在搜索空间巨大的游戏中会比较有效。从全局来看,蒙特卡洛树搜索的主要目标是:给定一个游戏状态来选择最佳的下一步。等常见…

中小企业如何最大程度地利用CRM系统的潜力?

在当今竞争激烈的商业世界中,客户关系管理(CRM)数字化转型已经成为大企业成功的重要秘诀。大型跨国公司如亚马逊、苹果和微软等已经在CRM数字化方面走在了前列,实现了高度个性化的客户体验,加强了客户忠诚度。 然而&a…

景联文科技入选量子位智库《中国AIGC数据标注产业全景报告》数据标注行业代表机构

量子位智库《中国AIGC数据标注产业全景报告》中指出,数据标注处于重新洗牌时期,更高质量、专业化的数据标注成为刚需。未来五年,国内AI基础数据服务将达到百亿规模,年复合增长率在27%左右。 基于数据基础设施建设、大模型/AI技术理…

使用手机作为电脑的麦克风和摄像头外设

工具 Iriun Iriun 电脑端安装:Iriun Android: Iriun 4K Webcam for PC and Mac - Apps on Google Play Apple: Iriun Webcam for PC and Mac on the App Store 基础功能免费,普通使用足够了。 付费功能: 使用 这里有介绍&#xff1a…

腾讯待办是什么?关停之后如何继续提醒待办事项?

由于业务方向调整,腾讯待办将于2023年的12月20日全面停止运营并下架。那么腾讯待办是什么呢?它是一款以微信小程序呈现的待办事项和日程管理工具,旨在帮助用户更好地管理自己的待办事项和日程安排。用户可以在该小程序中创建待办事项、设置提…

XD6500S— LoRa SIP模块芯片 集成了射频前端和LoRa射频收发器SX1262 应用温湿度传感器 资产跟踪等

XD6500S是一系列LoRa SIP模块,集成了射频前端和LoRa射频收发器SX1262系列,支持LoRa和FSK调制。 收发器SX1262系列,支持LoRa和FSK调制。LoRa技术是一种扩频协议,针对LPWAN 应用的低数据速率、超远距离和超低功耗通信进行了优化。通…

【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

目录 一、SSH基础 1、什么是ssh服务器 2、对比一下ssh协议与telnet协议 3、常见的底层为ssh协议的软件: 4、拓展 二、SSH软件学习 1、ssh服务软件学习 2、sshd公钥传输的原理: 3、ssh命令学习: 4、学习解读sshd服务配置文件&#x…

gin索引 btree索引 gist索引比较

创建例子数据 postgres# create table t_hash as select id,md5(id::text) from generate_series(1,5000000) as id; SELECT 5000000postgres# vacuum ANALYZE t_hash; VACUUMpostgres# \timing Timing is on. postgres# select * from t_hash limit 10;id | …

areadetector ADURL模块应用在面探测控制的初步应用

本章中讨论了使用ADURL控制面探测器Lambda的过程&#xff1a; ADURL的使用请见&#xff1a; EPICS -- areaDetector URL驱动程序-CSDN博客 需要启动一个ADURL的IOC程序&#xff0c;并且设置相关的插件中参数的值&#xff1a; # st.cm < envPaths < st_base.cmddbpf 1…

一个22届被裁前端思想上得转变

距离上篇文章已经过去了三个多月&#xff0c;这个三个月&#xff0c;经历了技术攻坚&#xff0c;然后裁员&#xff0c;退房&#xff0c;回老家&#xff0c;找工作。短短的几个月&#xff0c;就经历社会的一次次毒打&#xff0c;特别是找工作&#xff0c;虽然算上实习我也有两年…

[Android]设置颜色

1.XML资源文件 在 res/values/colors.xml 中定义颜色资源&#xff1a; <color name"my_color">#FFC107</color> 在布局文件中使用&#xff1a; android:background"color/my_color" 在代码中使用&#xff1a; val color: Int ContextCo…

安卓播放解码后的byte字节视频

参考文章&#xff1a;安卓播放解码后的byte字节视频 - 简书 wlmedia播放器集成&#xff08;4&#xff09;— 实现视频播放 一个很棒的库&#xff0c; github地址&#xff1a;https://github.com/wanliyang1990/wlmedia About Android 音视频播放SDK&#xff0c;几句代码即可实…

MAC地址_MAC地址格式_以太网的MAC帧_基础知识

MAC地址 全世界的每块网卡在出厂前都有一个唯一的代码,称为介质访问控制(MAC)地址 一.网络适配器(网卡) 要将计算机连接到以太网&#xff0c;需要使用相应的网络适配器(Adapter)&#xff0c;网络适配器一般简称为“网卡”。在计算机内部&#xff0c;网卡与CPU之间的通信&…

dewarp:数据变换

一. 效果 输入图片&#xff1a;test.jpg 前向场:test.npy 输出图片&#xff1a;dewarp_img.jpg 二. 代码 import os import cv2 import numpy as npdef align_flow(image, flow):"""flow: -1~1, 非文本区域是nanbm_flow: 对齐的bm&#xff0c;可以直接对图…

LeetCode算法练习top100:(4)链表

package top100.top链表;import top100.ListNode; import top100.Node;import java.util.ArrayDeque; import java.util.ArrayList; import java.util.HashMap;public class TOP {//160. 相交链表//hashmap方法太low了//判断链表是否相交//双指针遍历两个相交链表,如果有相遇点…

OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76

microsoft/Web-Dev-For-Beginners Stars: 71.5k License: MIT 这个开源项目是一个为期 12 周的全面课程&#xff0c;由微软云倡导者团队提供。它旨在帮助初学者掌握 JavaScript、CSS 和 HTML 的基础知识。每一节都包括预习和复习测验、详细的书面指南、解决方案、作业等内容。…

图解分布式事务实现原理(一)

参考 本文参考https://zhuanlan.zhihu.com/p/648556608&#xff0c;在小徐的基础上做了个人的笔记。 分布式事务场景 事务核心特性 在聊分布式事务之前&#xff0c;我们先理清楚有关于 “事务” 的定义. 事务 Transaction&#xff0c;是一段特殊的执行程序&#xff0c;其需…

OceanBase杨冰:完全自研,才能逢山开路遇水搭桥

11月16日&#xff0c;在OceanBase2023年度发布会上&#xff0c;OceanBase CEO杨冰介绍&#xff0c;中国数字经济的蓬勃发展催生了对分布式数据库的强大需求&#xff0c;这种需求也牵引了OceanBase坚定投入自主研发&#xff0c;从而推动树立了分布式数据库的四项新标准。 据了解…