决策树(三)测试和存储分类器
程序员文章站
2024-02-15 09:40:40
...
决策树(三)测试和存储分类器
1.测试算法:使用决策树执行分类
def classify(inputTree,featLabels,testVec):
# 得到树的第一个特征
firstStr=list(inputTree.keys())[0]
# 得到第一个对应的值
secondDict=inputTree[firstStr]
# 得到树中第一个特征对应的索引
# index方法查找当前列表中第一个匹配firstStr变量的元素的
featIndex = featLabels.index(firstStr)
# 遍历树
for key in secondDict.keys():
# 如果在secondDict[key]中找到testVec[featIndex]
if testVec[featIndex]==key:
# 判断secondDict[key]是否为字典
if type(secondDict[key]).__name__=='dict':
# 若为字典,递归的寻找testVec
classLabel=classify(secondDict[key],featLabels,testVec)
else:
# 若secondDict[key]为标签值,则将secondDict[key]赋给classLabel
classLabel=secondDict[key]
# 返回类标签
return classLabel
运行结果:
2.使用算法:决策树的储存
构造决策树是很耗时的任务,即使处理很小的数据集,如前面的样本数据,也要花费几秒的时间,如果数据集很大,将会耗费很多计算时间。然而用创建好的决策树解决分类问题,则可以很快完成。
因此,为了节省计算时间,最好能够在每次执行分类时调用已经构造好的决策树。
为了解决这个问题,需要使用Python模块pickle序列化对象,序列化对象可以在磁盘上保存对象,并在需要的时候读取出来。
任何对象都可以执行序列化操作,字典对象也不例外。
# 决策树的序列化
def storeTree(inputTree,filename):
# 导入pickle模块
import pickle
# 打开文件,pickle采用二进制读写
fw=open(filename,'wb')
# 决策树序列化
pickle.dump(inputTree,fw)
#关闭文件
fw.close()
# 读取序列化的树
def grabTree(filename):
import pickle
fr=open(filename,'rb')
# 返回读到的树
return pickle.load(fr)
运行结果:
将分类器储存在硬盘上这是决策树的优点之一,像knn就做不到。
END
推荐阅读
-
决策树(三)测试和存储分类器
-
如何测试mysql触发器和存储过程
-
锐龙AMD Ryzen 1800X处理器和i7 6700K存储性能对比测试
-
锐龙AMD Ryzen 1800X处理器和i7 6700K存储性能对比测试
-
存储器和游戏卡带哪种读取速度最快呢?Switch游戏加载速度测试视频
-
mysql创建存储过程和触发器测试的实例讲解
-
前端学习笔记三:JavaScript(2)变量的分类和作用域+利用浏览器调试模式测试+HTML事件+表示特殊字符(+运算符+各种循环和条件语句【略】)
-
ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 12 测试消息发布器和订阅器
-
如何测试mysql触发器和存储过程_MySQL
-
mysql触发器和存储过程小测试_MySQL