IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 决策树cart算法实战 -> 正文阅读

[数据结构与算法]决策树cart算法实战

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

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

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:27:46  更:2021-08-30 12:29:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:16:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码