1 代码结构图

2  源码下载地址

下载源码

3  代码实现

from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import tree
from sklearn import preprocessing
from sklearn.externals.six import StringIO
import numpy as np# csv文件里面的数据
csvData = open(r'D:\workspace\MachineLearning\07stage\1-fundamental\01\DecisionTree\AllElectronics.csv','r')
# 解析csv文件数据
readerData = csv.reader(csvData)
# 将csv数据转为list数据
sourceData = []
for row in readerData:sourceData.append(row)
headers = sourceData[0] # 得到表头数据
labelList = [] # 分类结果
featureList = [] # 特征值数据
coreData = sourceData[1:]
for data in coreData:rowDict = {}labelList.append(  data[ len(data)-1 ]   )for i in range(1,len(data)-1):rowDict[ headers[i] ] = data[i]featureList.append(rowDict)
"""
将特征值数据进行向量化
比如:
featureList = [{'age': 'youth'},{'age': 'old'},{'age': 'mid'}]
进行向量化后得到结果:
[[0. 0. 1.][0. 1. 0.][1. 0. 0.]]
各维度的解释为:
['age=mid', 'age=old', 'age=youth']
"""
vec = DictVectorizer() # 特征值向量化工具类
featureArray = vec.fit_transform(featureList).toarray() #进行向量化
featureNames = vec.get_feature_names();#得到各个维度的含义"""
将[[no],[no],[yes],[yes],[yes] ]
转为[ [0],[0],[1],[1],[1] ]
"""
lb = preprocessing.LabelBinarizer()
labels = lb.fit_transform(labelList)
"""
采用信息熵来做决策树
"""
classifier = tree.DecisionTreeClassifier(criterion='entropy')
classifier = classifier.fit(featureArray,labels)#将算好的信息熵保存到文件中
with open('AllElectronicsDot.dot','w') as f:f = tree.export_graphviz(classifier,feature_names=featureNames,out_file=f)"""
使用graphviz绘图工具将AllElectronicsDot.dot转为pdf格式
使用命令: dot -Tpdf AllElectronicsDot.dot -o AllElectronicsPdf.pdf
""""""
预测数据
[ youth,high,no,fair ]
"""
newData = featureArray[0,:]; # 拷贝csv文件中第一行数据
newData[0] = 1
newData[1] = 0
newData[2] = 0
predictParam = []
predictParam.append(newData)predictValue = classifier.predict(predictParam)
print("predictValue " + str(predictValue))

1.2 决策树代码实现相关推荐

  1. 【机器学习】决策树代码练习

    本课程是中国大学慕课<机器学习>的"决策树"章节的课后代码. 课程地址: https://www.icourse163.org/course/WZU-146409617 ...

  2. python决策树代码实现

    python决策树代码实现 实现一个简单的决策树,可以同时处理属性值是连续和离散的情况. 使用sklearn里面的鸢尾花等数据集验证,正确率还不错(90%+) Github地址:https://git ...

  3. 决策树代码代码——python源代码,看完你就完全懂了

    决策树 决策树在周志华的西瓜书里面已经介绍的很详细了(西瓜书P73-P79),那也是我看过讲的最清楚的决策树讲解了,我这里就不献丑了,这篇文章主要是分享决策树的代码. 在西瓜书中介绍了三种决策树,分别 ...

  4. 机器学习:决策树过拟合与剪枝,决策树代码实现(三)

    文章目录 楔子 变量 方法 数据预处理 剪枝 获取待剪集: 针对ID3,C4.5的剪枝 损失函数的设计 基于该损失函数的算法描述 基于该损失函数的代码实现 针对CART的剪枝 损失函数的设计 基于该损 ...

  5. 机器学习:结点的实现,决策树代码实现(二)

    文章目录 楔子 定义变量: 定义方法 获得划分的feature 生成结点 停止条件及其处理 fit() 生成树剪枝 楔子 前面已经实现了各种信息量的计算,那么我们划分的基本有了,那么我们需要使用这个基 ...

  6. 机器学习:信息熵,基尼系数,条件熵,条件基尼系数,信息增益,信息增益比,基尼增益,决策树代码实现(一)

    文章目录 初始化,涉及到使用的变量: 信息熵 定义公式,经验公式 代码: 基尼系数 定义公式,经验公式 代码: 条件熵,条件基尼系数 条件熵定义公式,经验公式 条件基尼系数定义公式,经验公式 代码: ...

  7. python决策树代码解读_建模分析之机器学习算法(附pythonR代码)

    0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来 ...

  8. 自己尝试使用简单数据集实现决策树 代码——《机器学习实战》

    记录学习过程,每天学会一点点,早日玩转机器学习......(手动呵呵微笑). 一.核心代码 1.数据集部分 上图为所给的海洋生物数据,则以1代表可以付出水面.有脚蹼:0代表无法浮出水面.无脚蹼:yes ...

  9. 读书笔记:机器学习实战(2)——章3的决策树代码和个人理解与注释

    首先是对于决策树的个人理解: 通过寻找最大信息增益(或最小信息熵)的分类特征,从部分已知类别的数据中提取分类规则的一种分类方法. 信息熵: 其中,log底数为2,额,好吧,图片我从百度截的.. 这里只 ...

最新文章

  1. golang源码分析:调度器chan调度
  2. wordpress ajax 调用wpdb_莫名其妙的调用Roboto字体又莫名其妙的恢复的过程
  3. MYSQL查看和修改存储引擎
  4. 用新语法写更简洁的ABAP代码
  5. 线程队列,线程池和协程
  6. Spring Boot Spring MVC 异常处理的N种方法 1
  7. 趣味故事嘛的facebook中文网
  8. 解决: service endpoint with name xxx already exists
  9. JDK源码(14)-Error、Exception
  10. 数据科学包4-pandas核心数据结构
  11. IDCC2018|北京福通四维科技有限公司副总经理胡海山:顺鑫集团智慧农业领域深耕的数据化转型之路...
  12. 无法读源文件或磁盘的处理
  13. 桌面计算机地址栏在哪,我的电脑地址栏不见了怎么办 地址栏不见了如何解决...
  14. 2022-05-05随手更新文章,以及记录一下新的微信步数接口
  15. 总结:机器学习中的基本数学知识
  16. 5 封装性和private关键字
  17. 调度生产过程的思路、原则、方法
  18. 高德地图Demo,生成apk发布到手机签名不一致
  19. Vue3 修改 ref的值,不触发watchEffect的原因
  20. ‘今年找工作太难了,真的是卷到我想哭!’,一个疫情就业季下的毕业生艰辛IT求职道路上的经验分享!见识入社会的不容易!

热门文章

  1. 【Java音频操作】调用有道词典语音接口,生成单词MP3文件,支持自定义重复次数
  2. ES9的新特性:异步遍历Async iteration
  3. 小师妹学JavaIO之:NIO中那些奇怪的Buffer
  4. JUC原子类-框架(一)
  5. 剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】
  6. 【双100%解法】剑指 Offer 24. 反转链表
  7. 【详细解析】基础实验4-2.6 目录树 (30 分)
  8. Dev-Cpp 常用的快捷键(持续更新)
  9. 【详细解析】7-1 两个有序序列的中位数 (25 分)
  10. stm32 led屏控制卡_室内LED显示屏如何安装?