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

决策树

上一篇博客中,介绍了决策树的构建过程,以及为了预防过拟合进行的剪枝操作和数据缺失值处理,这篇博客简单以代码的形式展示如何应用决策树,主要是应用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

猜你喜欢

转载自blog.csdn.net/ProQianXiao/article/details/106286181
今日推荐