【手把手机器学习入门到放弃】决策树ID3,C4.5,CART解析

本文详细介绍了决策树算法,包括ID3、C4.5和CART。ID3算法基于信息增益构建决策树,但存在过拟合和处理连续数据的局限。C4.5是ID3的优化版,自动处理连续变量并支持剪枝。CART则支持回归问题,生成二叉树结构。
摘要由CSDN通过智能技术生成

决策树

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。

本文将使用目前常用的几种决策树算法对美国人群收入数据进行建模,并比较几种不同决策树的特点。

  • ID3 Iterative Dichotomiser 3
  • C4.5
  • CART Classification and Regression Trees
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

ID3

ID3算法的核心是在决策树各个节点上应用 信息增益 准则选择特征,递归的构建决策树。具体方法是:从根结点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;再对子结点递归的调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止。ID3相当于用极大似然法进行概率模型的选择。

ID3算法的缺点:

  1. 不能对连续数据进行处理,只能通过连续数据离散化进行处理;
  2. 采用信息增益进行数据分裂容易偏向取值较多的特征,准确性不如信息增益率;
  3. 缺失值不好处理。
  4. 没有采用剪枝,决策树的结构可能过于复杂,出现过拟合。

https://blog.csdn.net/choven_meng/article/details/82878018

这里从https://blog.csdn.net/u011437229/article/details/53219435 引用了ID3的代码,

#!/usr/bin/python

#ID3.py created by lixin 20161118
from numpy import *
import math
import copy

class ID3DTree(object):
    def __init__(self):
        self.tree = {
   }   #generating tree
        self.dataSet = []
        self.labels = []
    def loadDataSet(self,path,labels):
        recordlist = []
        fp = open(path,"rb")#读取文件内容
        content = fp.read()
        rowlist = content.splitlines()#按行转为一维表
        recordlist = [row.split(','.encode()) for row in rowlist if row.strip()]
        self.dataSet = recordlist
        self.labels = labels
    def 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值