深入浅出决策树算法(三)

决策树

上一篇博客中,介绍了决策树的构建过程,以及为了预防过拟合进行的剪枝操作和数据缺失值处理,这篇博客简单以代码的形式展示如何应用决策树,主要是应用Python中的机器学习库sklearn。

代码如下:

'''
使用决策树模型完成分类问题
'''
# 用于数据处理和分析的工具包
import pandas as pd
# 引入用于数据预处理和特征工程的工具包
from sklearn import preprocessing
# import 决策树工具包
from sklearn import tree

# 读取数据
adult_data = pd.read_csv('./DecisionTree.csv')
# 打印数据的前5行,了解一下数据
print(adult_data.head(5))
# 打印数据相关信息
print(adult_data.info())
# 打印数据的shape
print(adult_data.shape)
# 打印数据的列名
print(adult_data.columns)


# 特征和标签进行区分
feature_columns = [u'workclass', u'education', u'marital-status', u'occupation', u'relationship', u'race', u'gender', u'native-country']
label_column = ['income']

#区分特征和目标列
features = adult_data[feature_columns]
label = adult_data[label_column]
# 打印特征的前两行查看
print(features.head(2))

# 特征处理/特征工程

# get_dummies将离散特征转化为one-hot编码形式
features = pd.get_dummies(features)

# 构建模型
# 初始化一个决策树分类器
clf = tree.DecisionTreeClassifier(criterion='entropy',max_depth=4)
# 用决策树分类器拟合数据
clf = clf.fit(features.values, label.values)
# 打印决策树分类器的结构/参数
print(clf)

# 进行预测
result = clf.predict(features.values)
print(result)


'''
决策树的可视化
'''
import graphviz
dot_data = tree.export_graphviz(clf,
                                out_file=None,
                                feature_names=features.columns,
                                class_names = ['<=50k', '>50k'],
                                filled = True,
                                rounded =True
                               )
graph = graphviz.Source(dot_data)
graph.render('adult_data')

参数说明:

在构建决策树的时候,使用如下语句进行初始化设置:

# 初始化一个决策树分类器
clf = tree.DecisionTreeClassifier(criterion='entropy',max_depth=4)

在sklearn中,tree.DecisionTreeClassifier函数参数较多,但通常参数都会有默认值,我们只需要调整其中较为重要的几个参数就行。通常来说,较为重要的参数有:

  1. criterion:用以设置属性选择时,是基于信息熵还是基尼系数(可选参数为'entropy'和'gini')。
  2. max_depth:最大深度,防止过拟合(实际使用时,建议从=3开始尝试,看看拟合的效果再决定是否增加设定深度)。
  3. min_samples_leaf:限定每个节点分枝后子节点至少有多少个数据,否则就不分枝(同样是为了防止过拟合)。

参考资料:

1、https://www.cnblogs.com/listenfwind/p/11310924.html

2、https://www.cnblogs.com/juanjiang/p/11003369.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值