03-04 算法学习2(决策树)

1、定义

决策树是一种非参数的有监督学习方法,它能从一系列有特征和标签的数据中总结出决策规则,
并用树状图的结构来呈现这些规则,已解决分类和回归问题。

非参数-

 不限制参数的结构和类型,适用于各种各样的数据。

自我理解:

决策树就是 一种分类方法,即如何将数据进行分类和回归的规则。

但是如何依据数据总结出最合适的规则,又是需要研究的。

2、决策树算法的核心是要解决两个问题:

①如何从数据表中找出最佳节点和最佳分支

②如何让决策树停止生产,防止过拟合

3、sklearn中的决策树模块
模块 sklearn.tree

tree.DecisionTreeclassifier     --分类树
tree.DecisionTreeRegressor      --回归树
tree.export_graphviz            --将生成的决策树导出为DOT格式,画图专用

4、sklearn建模的基本流程(对所模型都通用)

① 实例化:建立评估模型对象
	-实例化式用到的参数

②通过模型接口训练模型
	数据属性和数据接口	(fit)

③通过模型接口提取需要的信息
	数据属性和数据接口

例如这个流程下,分类树对应的代码是:

from sklearn import tree

clf=tree.DecisionTreeclassifier()   #实例化
clf=clf.fit(x_train,y_train)        #用训练数据集训练模型 ,fit 接口
									#几乎使用所有模型
result=clf.score(x_test,y_test)     #打入测试集,从接口中调用需要的信息

 

4-2 分类树的参数(重要的8个参数)

① criterion

	为了将表格转化为一棵树,决策树需要找出最佳节点和最佳分支方法,对于分类来
说,衡量这个最佳的指标叫做“不纯度”,不纯低越低,决策树对训练集拟合的效果
越好,同一棵树上,叶子结点的不纯度肯定是最低的。

criterion用来决定不纯度的计算方法的,主要有两种:

1) 'entropy' ,使用信息熵
2)	'gini' 使用基尼系数

信息熵和基尼系数代表两种数学计算方法,sklearn内置的计算过程,无法干涉。

实际过程中,两种系数的效果基本相同。

creterion 一般默认为 基尼系数,但信息熵对不纯度更敏感,数分支更精细。

当拟合效果不够的时候,可以两个都试试。

4-3 决策树基本流程总结:

计算全部特征的不纯度指标->选取不纯度指标最有的特征来分支-> 在第一个特征的分支下计算全部特征的不纯度指标-> 选取不纯度指标最优的特征继续分…

具体实践如下:

from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

wine=load_wine() #加载内置的红酒数据

wine.feature_names #特征的名字查看
wine.target_names #标签的名字

Xtrain,Xtest,Ytrain,Ytest=train_test_split(wine.data,wine.target,test_size=0.3)
# wine_data  数据   wine_target 标签   test_size=0.3 表示将数据中的30%做测试集,其余做训练集

#决策树三步骤
clf=tree.DecisionTreeClassifier(criterion='entropy')
clf=clf.fit(Xtrain,Ytrain)
score=clf.score(Xtest,Ytest)

score   #值表是预测的准确度

#绘制树
import graphviz
dot_data=tree.export_graphviz(clf   #训练好的模型
                              ,feature_names=feature_name
                              ,class_names=['茅台','五粮液','黄台']
                              ,filled=True
                              ,rounded=True
                             )
graph=graphviz.Source(dot_data)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值