决策树的生成(该函数是一个递归的过程)CreateTree
输入:数据集、特征
输出:字典型数据——决策树
a、判断是否满足停止划分的条件
若当前数据集的属性值为空,则投票表决当前样本中最多的类别
若当前所有的样本类别相同,则返回当前数据的类别。
b、寻找当前数据的最佳划分特征
c、将最佳特征作为关键字,保存到字典中
d、从当前的属性集合中删除该最佳特征
e、遍历该最佳划分特征的所有属性值feat,循环调用函数 CreateTree(输入参数为:最佳特征值为feat的所有数据集,去除最佳特征的属性集合)
代码注意:
1、生成的决策树用字典保存,并且每个关键字的值是一个字典;
2、生成的决策树可以用 pickle 序列化对象保存;
3、ID3 算法适用于标称型数据,在函数的输入、输出中,数据类型为 listlist。
代码:
#-*- coding:utf-8 -*-
import numpy as np
from numpy import *
import pandas as pd
from math import *
import operator
import pickle # 使用该模块实现对决策树的保存
# 数据导入
def loadData(fileName):
dataSet = []
fr = open(fileName)
for featVector in fr.readlines():
line