机器学习实战二(决策树)

2017-10-29  本文已影响0人  人机分离机

一. 决策树

  1. 概念: 决策树学习是根据数据的属性采用树状结构建立的一种决策模型,可以用此模型解决分类和回归问题。常见的算法包括 CART(Classification And Regression Tree), ID3, C4.5等。
  2. 优缺点

二. 决策树算法

  1. 概念:决策树算法主要是指决策树进行创建中进行树分裂(划分数据集)的时候选取最优特征的算法,他的主要目的就是要选取一个特征能够将分开的数据集尽量的规整,也就是尽可能的纯. 最大的原则就是: ==将无序的数据变得更加有序==
  2. 决策树学习算法主要由三部分构成:

三. 特征选择

  1. 常用方法:
  1. 代码实现
# 为所有可能的分类创建字典
def uniquecounts(rows):
    results = {}
    for row in rows:
        # 计数结果在最后一列
        r = row[len(row)-1]
        if r not in results:results[r] = 0
        results[r]+=1
    return results # 返回一个字典

# 熵
def entropy(rows):
    from math import log
    log2 = lambda x:log(x)/log(2)
    results = uniquecounts(rows)
    # 开始计算熵的值
    ent = 0.0
    for r in results.keys():
        p = float(results[r])/len(rows)
        # 以2为底求对数
        ent = ent - p*log2(p)
    return ent

四. 决策树的生成

  1. 经典的实现算法:
  1. ID3的算法思想(依据信息增益进行特征选取和分裂)
// 算法框架如下
class DecisionTree(object):
    def fit(self, X, y):
        # 依据输入样本生成决策树
        self.root = self._build_tree(X, y)

    def _build_tree(self, X, y, current_depth=0):
        #1. 选取最佳分割特征,生成左右节点
        #2. 针对左右节点递归生成子树
      
    def predict_value(self, x, tree=None):
        # 将输入样本传入决策树中,自顶向下进行判定
        # 到达叶子节点即为预测值
  1. C4.5算法
  1. CART算法

五. 决策树的剪枝

  1. 过拟合问题的解决方法:

六. 完整代码

  1. 完整代码
上一篇 下一篇

猜你喜欢

热点阅读