决策树

认识决策树

决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法
怎么理解这句话?通过一个对话例子
在这里插入图片描述

决策树分类原理详解

为了更好理解决策树具体怎么分类的,我们通过一个问题例子?
在这里插入图片描述
如何对这些客户进行分类预测?你是如何去划分?
有可能你的划分是这样的

在这里插入图片描述
那么我们怎么知道这些特征哪个更好放在最上面,那么决策树的真实划分是这样的
在这里插入图片描述

信息和消除不确定性是相联系的
当我们得到的额外信息越多的话,那么我们猜测的代价越小(猜测的不确定性减小)
回到我们前面的贷款案例,怎么去划分?可以利用当得知某个特征(比如是否有房子)之后,我们能够减少的不确定性大小。越大我们可以认为这个特征很重要。那怎么去衡量减少的不确定性大小呢?

这里引入一个信息论的概念,信息增益
信息增益表示得知特征X的信息而息的不确定性减少的程度使得类Y的信息熵减少的程度
这样根据信息增益的大小,对特征进行排列,可以得到我们的决策树.

示例

这里我们读取约会集中的数据,使用决策树进行预测

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np
def tree_demo():
    # 读取数据
    data=pd.read_csv("datingTestSet2.txt",sep="\t")
    # 划分特征值和目标值
    feature_names=data.iloc[:,0:3].columns.values
    # 标准化
    transfer=StandardScaler()
    target=data.iloc[:,-1:]
    new_data=transfer.fit_transform(data.iloc[:,0:3])
    target=np.array(target["target"])
    
    x_train,x_test,y_train,y_test=train_test_split(new_data,target,random_state=20)
    
    print(x_test,x_test.shape)
    print(x_train,x_train.shape)
    
    estimator=DecisionTreeClassifier(criterion="entropy")
    estimator.fit(x_train,y_train)

    print("准确度",estimator.score(x_test,y_test))
	#可视化决策树    
    export_graphviz(estimator,out_file="./dating.dot",feature_names=feature_names)

在线可视化决策树的链接
http://graphviz.herokuapp.com/
将dot文件中的内容拷贝到网站中,效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值