机器学习实战——3.3 测试和存储分类器

目录

1. 测试算法:使用决策树执行分类

2. 使用算法:决策树的存储


1. 测试算法:使用决策树执行分类

        在执行数据分类时,需要使用决策树以及用于构造决策树的标签向量。然后,程序比较测试数据与决策树上的数值,递归执行该过程直到进入叶子节点;最后将测试数据定义为叶子节点所属的类型。

def classify(inputtree, featlabels, testvec):
    firststr = list(inputtree.keys())[0]
    seconddict = inputtree[firststr]
    featindex = featlabels.index(firststr)
    for key in seconddict.keys():
        if testvec[featindex] == key:
            if type(seconddict[key]).__name__ == 'dict':
                classlabel = classify(seconddict[key], featlabels, testvec)
            else: classlabel = seconddict[key]
    return classlabel
mydata, labels = trees.createDataSet()
print("labels:", labels)
mytree = treePlotter.retrieveTree(0)
print("mytree:", mytree)
print(classify(mytree, labels, [1, 0]))
print(classify(mytree, labels, [1, 1]))

输出结果:

2. 使用算法:决策树的存储

        为了节省时间,最好能够在每次执行分类时调用已经够造好的决策树。需要使用Python模块pickle序列化对象。序列化对象可以在磁盘上保存对象,并在需要的时候读取出来。任何对象都可以执行序列化操作,字典对象也不例外。

"使用pickle模块存储决策树"
def storetree(inputtree, filename):
    import pickle
    fw = open(filename, 'wb')
    pickle.dump(inputtree, fw)
    fw.close()
def grabtree(filename):
    import pickle
    fr = open(filename, 'rb')
    return pickle.load(fr)

storetree(mytree, 'classifierstorage.txt')
grabtree('classifierstorage.txt')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值