决策树主文件 tree.py
[python] view plain copy
# coding: utf-8
from math import log
import json
from plot import createPlot
class DecisionTree():
def __init__(self,criterion = "entropy"):
self.tree = None
self.criterion = criterion
def _is_continuous_value(self,a):
# 判断一个值是否是连续型变量
if type(a).__name__.lower().find('float')>-1 or \
type(a).__name__.lower().find('int')>-1:
return True
else:
return False
def _calc_entropy(self,dataset):
# 计算数据集的香农熵
classes = dataset.ix[:,-1]
total = len(classes)
cls_count = {}
for cls in classes:
if cls not in cls_count.keys():
cls_count[cls] = 0
cls_count[cls] += 1
entropy = 1.0
for key in cls_count:
prob = float(cls_count[key]) / total
entropy -= prob * log(prob, 2)
return entropy
def _calc_gini(self,dataset):
# 计算数据集的Gini指数
classes = dataset.ix[:,-1]
total = len(classes)
cls_count = {}
for cls in classes:
if cls not in cls_count.keys():
cls_count[cls] = 0
cls_count[cls] += 1
gini = 1.0
for key in cls_count:
prob = float(cls_count[key]) / total
gini -= prob ** 2
return gini
def _split_data_category(self, dataset, feature, value):
# 对分类变量进行拆分
# 将feature列的值为value的记录抽取出来,同时删除feature列
Python中的运算符主要分为六大类,其中包含算术运算符、赋值运算符、比较/关系运算符、逻辑运算符、位运算符以及三目运算符。1、Python算术运算符
是对数值类型的变量进行运算的,比如说:加、减、乘、除、取模和乘方运算等
2、Python赋值运算符
是对已存在的变量进行重新设置新值的运算符
3、Python关系运算符(也被称为比较运算符)
关系运算符结果一般包含bool、True、False等,而关系表达式经常用在if结构的条件中或循环结构的条件中
4、Python逻辑运算符
是用于连接多个条件,一般来讲就是关系表达式
5、Python位运算符
主要是用于数值类型的二进制的运算
6、Python三目运算符
在Python中,没有其他语言的三目运算符,可以借助if语言实现类似的三目运算符。