决策树初识
来源:互联网 发布:孙志刚事件的网络舆论 编辑:程序博客网 时间:2024/06/05 07:41
信息熵越小,混乱度越低,纯度越高。
信息熵 : Ent(D)= - ∑Pk (log2 Pk)
信息增益: Gain(D,a) = Ent(D) - ∑ Dv/D * Ent(Dv) 信息增益对 多值属性有偏好
设 节点信息熵 K = -∑ Dv/D * Ent(Dv)
设 根节点信息熵 为 A //因此先取大于平均的信息增益,再运用信息增益率
信息增益率: Gain_ratio(D,a)= (A-K)/K 信息增益率对 少值属性有偏好
基尼指数: Gini(D)= 1- ∑ Pk^2 //从数据集D中随机抽取两个样本,其类别标记不一致的概率。 此Gini越小,纯度越高。
Gini_index(D,a)=∑ Dv/D Gini(Dv) 按Gini最小者划分
剪枝处理: 对付过拟合,比如一片叶子有锯齿,训练集过度拟合: 将有锯齿这一特性划分是否为叶子,那么没有锯齿的叶子就被视为 非叶子。
预剪枝:每个节点在划分前先进行估计,若当前节点划分不能提升泛化性能,则不再划分,直接归为叶子结点
后剪枝:先生成完整决策树,后自下而上的进行考察,若该子树替换为叶子结点后泛化能力提升,则替换。
代码编写准备工作:
anaconda集成科学环境
Graphviz pdf生成器
数据集
from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing
from sklearn import tree
from sklearn.externals.six import StringIO
#read the data and save in right place
allElectronicInformationGainOri =open(r"E:\AI\video\AllElectronics.csv")
reader=csv.reader(allElectronicInformationGainOri)
headers=reader.__next__()
print(headers)
featureList=[]
labelList=[]
for row in reader:
labelList.append(row[len(row)-1])
rowDict={}
for i in range(1,len(row)-1):
rowDict[headers[i]]=row[i]
featureList.append(rowDict)
print(featureList)
#vectorize feature
vec = DictVectorizer()
dummyX=vec.fit_transform(featureList).toarray()
print("dummyX:"+str(dummyX))
print(vec.get_feature_names())
print("labelList:"+str(labelList))
#vectorize class label
lb=preprocessing.LabelBinarizer()
dummyY=lb.fit_transform(labelList)
print("dummyY:"+str(dummyY))
#using decision tree for classification
clf=tree.DecisionTreeClassifier(criterion="entropy")
clf=clf.fit(dummyX, dummyY)
print("clf:"+str(clf))
#visualize model
#with open(
with open("AllElectronicsInformationgain.dot","w") as f:
f=tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file=f)
oneRowX=dummyX[0,:]
print("oneRowX:"+str(oneRowX))
oneRowX[0]=1
oneRowX[2]=0
predictedY=clf.predict(oneRowX)
print("predictedY:"+str(predictedY))
- 决策树初识
- 初识人工智能--决策树算法
- python机器学习决策树初识
- 初识机器学习之决策树对鸢尾花进行分类
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- 决策树
- MySQL5.7的复制(一)
- 生成逆波兰表达式
- Andriod 应用开发初步----Andriod Studio的使用
- linux c setitimer用法说明
- C++——NOIP提高组——转圈游戏
- 决策树初识
- JAVA基础
- 基于深度学习的计算机视觉学习资料汇编(英)
- centos 6.5和centos7防火墙1
- 应用机器学习(六):决策树
- 判断访问WEB的平台是电脑还是手机
- 系统编程 01 进程基础
- Mars老师安卓开发全系列教程全集下载(1~4季)
- 微信小程序中的循环列表,在点击时改变当前项的背景颜色