python决策树运用

什么是决策树?

决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。

决策树方法最早产生于上世纪60年代,到70年代末。由J Ross Quinlan提出了ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大改进,既适合于分类问题,又适合于回归问题。

决策树的目的(个人理解)

算出每一种情况发生的概率,从而进行最后的预测
里面涉及了一些优化方法

决策树相关算法

ID3:
ID3算法由Ross Quinlan发明,建立在“奥卡姆剃刀”的基础上:越是小型的决策树越优于大的决策树(be simple简单理论)。ID3算法中根据信息增益评估和选择特征,每次选择信息增益最大的特征作为判断模块建立子结点。
C4.5:
C4.5算法用信息增益率来选择属性,继承了ID3算法的优点。

决策树的实际运用

数据:
python决策树运用_第1张图片
代码:

import pandas as pd
#数据处理
file="E:/text.csv"
data=pd.read_csv(file,encoding="gbk")
x=data.iloc[:,0:3].as_matrix()
y=data.iloc[:,3].as_matrix()
for i in range(len(x)):
    for j in range(len(x[0])):
        if x[i][j]=='是' or x[i][j]=='多':
            x[i][j]=1
        else:
            x[i][j]=0
for i in range(len(y)):
    if y[i]=='高':
        y[i]=1
    else:
        y[i]=0
#格式转换
xf=pd.DataFrame(x)#框架化
yf=pd.DataFrame(y)
x2=xf.as_matrix().astype(int)
y2=yf.as_matrix().astype(int)
#决策树
from sklearn.tree import DecisionTreeClassifier as DTC
dtc=DTC(criterion="entropy")
dtc.fit(x2,y2)
#可视化
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
with open("E:/dtc.dot",'w') as file:
    export_graphviz(dtc,feature_names=["shixi","time","chuxiao"],out_file=file)


运行结果:
python决策树运用_第2张图片
python决策树运用_第3张图片
结果中的value是最终结果的类别
entropy是权值
samples是其夫节点判断结果的样本数
每一个框的第一个值是我们对数据处理后的一个判断。(就像判断一个人的年龄<30,如果是就根据指示跳到下一层,依次类推)
逐层判断,最终得到预测值

你可能感兴趣的:(python决策树运用)