机器学习:决策树算法案例(西瓜数据集3.0)
python代码如下
from sklearn.feature_extraction import DictVectorizer
from sklearn import tree
from sklearn import preprocessing
import csv
import graphvizDtree = open('西瓜数据集3.0.csv', 'r')
reader = csv.reader(Dtree)
"""
色泽 1-3代表 浅白 青绿 乌黑
根蒂 1-3代表 稍蜷 蜷缩 硬挺
敲声 1-3代表 清脆 浊响 沉闷
纹理 1-3代表 清晰 稍糊 模糊
脐部 1-3代表 平坦 稍凹 凹陷
触感 1-2代表 硬滑 软粘
好瓜 1代表 是 0 代表 不是
"""# 获取第一行数据
headers = reader.__next__()
print(headers)
# 特征和标签列表
featureList = []
labelList = []for row in reader:labelList.append(row[-1])rowDict = {}for i in range(1, len(row)-3):rowDict[headers[i]] = row[i]featureList.append(rowDict)
print(featureList)
# 将特征列表转换为01表示
vec = DictVectorizer()
x_data = vec.fit_transform(featureList).toarray()
print("x_data: " + str(x_data))
# 将标签列表转换为01表示
lb = preprocessing.LabelBinarizer()
y_data = lb.fit_transform(labelList)
print("y_data: " + str(y_data))# 创建决策树模型
model = tree.DecisionTreeClassifier(criterion='entropy')
# 输入数据建立模型
model.fit(x_data, y_data)# 测试
x_test = x_data[0]
predict = model.predict(x_test.reshape(1,-1))
print("predict: " + str(predict))# 导出决策树
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=True)
graph = graphviz.Source(dot_data)
graph.render('Tree')
西瓜数据集3.0数据如下
number | colour and lustre | root and base | Knock | venation | umbilical region | touch | density | sugar content | good |
1 | 2 | 2 | 2 | 1 | 3 | 1 | 0.697 | 0.46 | 1 |
2 | 3 | 2 | 3 | 1 | 3 | 1 | 0.744 | 0.376 | 1 |
3 | 3 | 2 | 2 | 1 | 3 | 1 | 0.634 | 0.264 | 1 |
4 | 2 | 2 | 3 | 1 | 3 | 1 | 0.608 | 0.318 | 1 |
5 | 1 | 2 | 2 | 1 | 3 | 1 | 0.556 | 0.215 | 1 |
6 | 2 | 1 | 2 | 1 | 2 | 2 | 0.403 | 0.237 | 1 |
7 | 3 | 1 | 2 | 2 | 2 | 2 | 0.481 | 0.149 | 1 |
8 | 3 | 1 | 2 | 1 | 2 | 1 | 0.437 | 0.211 | 1 |
9 | 3 | 1 | 3 | 2 | 2 | 1 | 0.666 | 0.091 | 0 |
10 | 2 | 3 | 1 | 1 | 1 | 2 | 0.243 | 0.267 | 0 |
11 | 1 | 3 | 1 | 3 | 1 | 1 | 0.245 | 0.057 | 0 |
12 | 1 | 2 | 2 | 3 | 1 | 2 | 0.343 | 0.099 | 0 |
13 | 2 | 1 | 2 | 2 | 3 | 1 | 0.639 | 0.161 | 0 |
14 | 1 | 1 | 3 | 2 | 3 | 1 | 0.657 | 0.198 | 0 |
15 | 3 | 1 | 2 | 1 | 2 | 2 | 0.36 | 0.37 | 0 |
16 | 1 | 2 | 2 | 3 | 1 | 1 | 0.593 | 0.042 | 0 |
17 | 2 | 2 | 3 | 2 | 2 | 1 | 0.719 | 0.103 | 0 |
结果PDF如下:
随后可以进行预剪枝和后剪枝来使结构变得更加清晰简单。
机器学习:决策树算法案例(西瓜数据集3.0)相关推荐
- Python数据分析实战【十二】:机器学习决策树算法案例实战【文末源码地址】
文章目录 构造数据 决策树解决 报错解决 源码地址 构造数据 我们用pandas生成20条数据,其中标签为bad的数据有6条,标签为good的数据有14条,代码如下: import pandas as ...
- 机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类
机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类 问题如下: 使用sklearn的决策树算法对葡萄酒数据集进行分类,要求: ①划分训练集和测试集(测试集占20%) ②对测试集的预测类 ...
- 周志华《机器学习》3.5答案-编程实现线性判别分析,并给出西瓜数据集3.0α上的结果
#机器学习线性判别分析3.5题 import numpy as np import matplotlib.pyplot as plt data = [[0.697, 0.460, 1],[0.774, ...
- 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。
1.运行结果:(注:图中方块标注的点为随机选取的初始样本点) k=2时: 本次选取的2个初始向量为[[0.243, 0.267], [0.719, 0.103]] 共进行61轮 共耗时0.10s k= ...
- 机器学习 决策树算法
4.1 决策树算法简介 学习目标 知道什么是决策树 能够通过sklearn实现决策树分类,进一步认识决策树 1 概念 决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决 ...
- [飞桨机器学习]决策树算法
[飞桨机器学习]决策树算法 一.简介 1.概述 决策树算法是一种逼近离散函数值的方法.它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析.本质 ...
- 机器学习算法笔记--------建立西瓜数据集
西瓜书里面常用的三个数据集,西瓜数据集2.0,3.0,4.0整理如下,注意中文容易出现乱码. 西瓜数据集2.0 西瓜数据集3.0 西瓜数据集4.0 import pandas as pddef cre ...
- 机器学习——决策树算法原理及案例
机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响.决策树是机器学习中最基础且应用最广泛的算法模型.本文介绍了机器学习的相关概念.常见的算法分类和决策树模型及应用.通过一个决策树案例, ...
- 机器学习——决策树算法
文章目录 一.决策树介绍 二.利用信息增益选择最优划分属性 三.ID3代码实现 1.jupyter下python实现 2. 使用sklearn实现ID3 四.C4.5算法实现 五.CART算法实现 六 ...
- 机器学习决策树算法泰坦尼克号乘客生存预测
目录 1 决策树算法api 2 泰坦尼克号乘客案例背景 2.1 步骤分析 2.2 代码实现 2.3 决策树可视化 2.3.1 保存树的结构到dot文件 2.3.2 网站显示结构 3 决策树总结 4 小 ...
最新文章
- 韦世东:计划 35 岁「退休」的资深爬虫工程师
- 4月书讯(下)| 美亚4.8星评,又一本口碑相传的著作来了
- 前端学习(1797):前端调试之css伪元素
- Spark 之 故障排除(二)
- 云计算教程学习入门视频课件:常用数据库排名
- 5款Windows 界面原型设计工具
- Honeywell 扫描枪安装
- 计算机网络基础知识框架
- 万卷书 - 如何在股市中赚钱 How to Make Money in Stocks
- 基于multisim的zcs电路仿真
- 数据库内容:用于园林施工与养护的学习软件系统
- 一般描绘性形容词_描绘性形容词和限制性形容词
- 美团旅游召回系统设计
- Syzmlw蜗居在线播放
- Unity3D 参数曲线 实现曲线上的匀速运动
- 大型施工程机械设备资产管理融资租赁方案
- 服务器安全证书更新失败怎么回事,手机安全证书更新失败怎么办
- 必备技能06:UML类图要素及解析
- vue后台系统管理项目-openlayers地图定位、港口数据标记功能
- three.js 07-06 之 Sprite 一幅图片多个精灵