机器人技术第四次作业:生成决策树,Python实现
样本数据
ID3生成决策树基本算法
- 计算数据整体的香农信息熵
- 对每个属性,分别计算条件熵
- 计算条件增益
- 选择最有条件增益作为决策树的根节点
- 重复上述步骤,直到信息熵降为0.达到根节点
使用sklearn生成ID3决策树
Python第三方库sklearn
提供了决策树生成算法,此次作业便是用sklearn
完成
对信息的处理
sklearn
在datasets类之中提供了wine数据集,其中wine.data
和wine.terget
的类型均是numpy.ndarrray
,也就是numpy的多维矩阵.在导入数据时也同样使用ndarray
.
源代码
import pandas
from sklearn import tree
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
import graphviz
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz/bin'
"""
用1.2.3来表示价格的高低
使用1代表中餐,2代表法式,3代表快餐,4代表意大利式
0代表没人,1代表有人,2代表客满
等待时间分为四个级别,0代表0-10,1代表10-30,2代表30-60,3代表>60
其他均使用0或者1代表
"""
data = np.array([[1,1,3,2,1,1]
,[1,1,1,1,2,2]
,[0,0,1,3,1,1]
,[1,1,1,1,3,1]
,[1,0,3,2,2,3]
,[0,1,2,4,1,1] #6
,[0,0,1,3,0,0]
,[0,1,2,1,1,0]
,[0,0,1,3,2,3]
,[1,1,3,3,2,1]
,[1,0,1,1,0,0]
,[0,1,1,3,2,2]])
#### 初始化数据
DecisionData = pandas.read_csv(
"E:\documents\DecisionTree.csv"
)
targetData = DecisionData[['ShouldWeight']]
targetDataArray = targetData.to_numpy()
print(targetDataArray)
#### 拟合
featureName = ['HasOtherChoices?','isHungry','Price','RestaurantType','isCrowded','TimeToWait']
clf = tree.DecisionTreeClassifier(criterion='entropy')
clf = clf.fit(data, targetData)
score = clf.score(data,targetData)
#### 调用Graphviz生成决策树
dot_data = tree.export_graphviz(
clf
,out_file=None
,feature_names=featureName
,filled=True
,rounded=True
)
graph = graphviz.Source(dot_data)
graph.render('DecisionTree')
DecisionData其实就是最后的是否决定等待的Bool值。可以替换为DecisionData = np.array([1,0,1,1,0,1,0,1,0,0,0,1])
。1表示继续等待,否表示不想继续等待。文章来源:https://www.toymoban.com/news/detail-734661.html
图像
Graphviz
生成图像使用中文会涉及到编码问题从而中文乱码,所以使用了英文😄
不保证生成决策树模型的正确性
文章来源地址https://www.toymoban.com/news/detail-734661.html
到了这里,关于合肥工业大学机器人技术第四次作业:生成决策树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!