美文网首页
数据科学 9 机器学习: 决策树2

数据科学 9 机器学习: 决策树2

作者: 她即我命 | 来源:发表于2018-11-22 11:27 被阅读10次
  • g(D2,A1) = H(D2) - H(D2 | A1) = 0.251
  • g(D2,A2) = H(D2) - H(D2 | A2) = 0.918
  • g(D2,A3) = H(D2) - H(D2 | A3) = 0.474



# 构建出来的结果
{'有自己的房子': {0: {'有工作': {0: 'no', 1: 'yes'}}, 1: 'yes'}}
"""
函数说明:统计classList中出现此处最多的元素(类标签)
Parameters:
    classList - 类标签列表
Returns:
    sortedClassCount[0][0] - 出现此处最多的元素(类标签)
"""
def majorityCnt(classList):
    classCount = {}
    for vote in classList: #统计classList中每个元素出现的次数
        if vote not in classCount.keys():classCount[vote] = 0
        classCount[vote] += 1
    sortedClassCount = sorted(classCount.items(), key = operator.itemgetter(1), reverse = True) #根据字典的值降序排序
    return sortedClassCount[0][0] #返回classList中出现次数最多的元素
"""
函数说明:创建决策树
Parameters:
    dataSet - 训练数据集
    labels - 分类属性标签
    featLabels - 存储选择的最优特征标签
Returns:
    myTree - 决策树
"""
def createTree(dataSet, labels, featLabels):
    classList = [example[-1] for example in dataSet] #取分类标签(是否放贷:yes or no)
    if classList.count(classList[0]) == len(classList): #如果类别完全
相同则停止继续划分
        return classList[0]
    if len(dataSet[0]) == 1: #遍历完所有特征时返回出现次数最多的类标签
        return majorityCnt(classList)
    bestFeat = chooseBestFeatureToSplit(dataSet) #选择最优特征
    bestFeatLabel = labels[bestFeat] #最优特征的标签
    featLabels.append(bestFeatLabel)
    myTree = {bestFeatLabel:{}} #根据最优特征的标签生成树
    del(labels[bestFeat]) #删除已经使用特征标签
    featValues = [example[bestFeat] for example in dataSet] #得到训练集中所有最优特征的属性值
    uniqueVals = set(featValues) #去掉重复的属性值
    for value in uniqueVals: #遍历特征,创建决策树。
        myTree[bestFeatLabel][value] = createTree(splitDataSet(dataSet,bestFeat, value), labels, featLabels)
    return myTree

if __name__ == '__main__':
    dataSet, labels = createDataSet()
    featLabels = []
    myTree = createTree(dataSet, labels, featLabels)
    print(myTree)
"""
函数说明:使用决策树分类
Parameters:
    inputTree - 已经生成的决策树
    featLabels - 存储选择的最优特征标签
    testVec - 测试数据列表,顺序对应最优特征标签
Returns:
    classLabel - 分类结果
"""
def classify(inputTree, featLabels, testVec):
    firstStr = next(iter(inputTree))
    #获取决策树结点
    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

if __name__ == '__main__':
    dataSet, labels = createDataSet()
    featLabels = []
    myTree = createTree(dataSet, labels, featLabels)
    testVec = [0,1] #测试数据
    result = classify(myTree, featLabels, testVec)
    if result == 'yes':
        print('放贷')
    if result == 'no':
        print('不放贷')
import pickle
"""
函数说明:存储决策树
Parameters:
    inputTree - 已经生成的决策树
    filename - 决策树的存储文件名
Returns:
    无
"""
def storeTree(inputTree, filename):
    with open(filename, 'wb') as fw:
        pickle.dump(inputTree, fw)

if __name__ == '__main__':
    myTree = {'有自己的房子': {0: {'有工作': {0: 'no', 1: 'yes'}}, 1: 'yes'}}
    storeTree(myTree, 'classifierStorage.txt')
import pickle
"""
函数说明:读取决策树
Parameters:
    filename - 决策树的存储文件名
Returns:
    pickle.load(fr) - 决策树字典
"""
def grabTree(filename):
    fr = open(filename, 'rb')
    return pickle.load(fr)

if __name__ == '__main__':
    myTree = grabTree('classifierStorage.txt')
    print(myTree)

相关文章

  • 数据科学 9 机器学习: 决策树2

    g(D2,A1) = H(D2) - H(D2 | A1) = 0.251 g(D2,A2) = H(D2) - ...

  • 数据科学(机器学习: 决策树)

    决策树(decision tree)是一种基本的分类与回归方法。 上面的那个流程图就是一个决策树,长方形代表判断模...

  • 数据科学 8 机器学习: 决策树

    决策树(decision tree)是一种基本的分类与回归方法。 流程图就是一个决策树,长方形形代表判断模块(de...

  • 决策树算法

    决策树 决策树也是经常使用的数据挖掘算法,其不用了解机器学习的知识,就能搞明白决策树是如何工作的。 决策树算法能够...

  • 决策树算法总结

    一、什么是决策树 决策树是一类常见的机器学习方法,通过历史数据得到的树结构模型对新数据进行分类决策。 决策树是一种...

  • 成都大数据学习:数据科学,数据分析和机器学习之间的差异

    机器学习,数据科学和数据分析是未来的发展方向。机器学习,数据科学和数据分析不能完全分开,因为它们起源于相同的...

  • 机器学习实战Py3.x填坑记—决策树

    在输入完程序清单3-5之后运行命令: 遇到问题搜索如下参考:[机器学习&数据挖掘]机器学习实战决策树plotTre...

  • Python - 机器学习

    什么是机器学习 机器学习在许多方面都可以看作是数据科学能力延伸的主要手段。机器学习是用数据科学的计算能力和算法能力...

  • 《机器学习实战》读书笔记3

    决策树算法概述 简单的说,决策树算法可以从训练数据集中提取出一系列规则,这种根据数据集创建规则的过程,就是机器学习...

  • [机器学习]决策树

    决策树 @(技术博客)[机器学习, 决策树, python] 学习决策树首先要搞清楚决策树是什么(what),在弄...

网友评论

      本文标题:数据科学 9 机器学习: 决策树2

      本文链接:https://www.haomeiwen.com/subject/lhokqqtx.html