sklearn 决策树算法
https://cloud.tencent.com/developer/article/1819247
主要阐述sklearn中分类决策树(tree.DecisionTreeClassifier)的参数,回归决策树类似,不再赘述。
DecisionTreeClassifier(*, criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort='deprecated', ccp_alpha=0.0)
部分参数详解:
criterion:构建决策树寻找最佳节点和最佳分枝时可选的两种衡量标准,【“entropy”,“gini”】,默认采用“gini”作为划分标准。
splitter:特征划分标准,【“best”,“random”】。默认值best,即在特征的所有划分点中找出最优划分点,random指随机地在部分特征中找局部最优划分点。
max_depth:控制树的最大深度,若节点的深度超过最大深度则剪枝,防止过拟合。默认值None,即节点将展开到所有叶子都是纯的或直到所有叶子都含有少于最小分割的样本。
min_samples_split:拆分内部节点所需的最小样本数,默认值2。
min_samples_leaf:一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分枝就不会发生,或者分枝会朝着满足每个子节点都包含min_samples_leaf个样本的方向去建树。
min_weight_fraction_leaf:叶子节点最小的样本权重和,如果小于这个值,则会和兄弟节点一起被剪枝。默认值0,即不考虑权重问题,所有样本权重相同。
max_feature:分枝时考虑的最大特征数,默认值None,即考虑所有特征。如果数据类型为int,该值为每次分枝的最大特征数。如果数据类型为float,(max_features*n_features)为每次分枝的最大特征数。
random_state:设置分枝中随机模式的参数,默认值None。输入任意整数,会一直长出同一棵树,让模型稳定下来,类似随机种子。
max_leaf_nodes:最大叶子节点个数,默认值None,即不限制最大的叶子节点数。
min_impurity_split:节点划分最小不纯度,默认值None,
class_weight:设置样本各类别的权重,为了防止训练集中某些类别的样本过多,导致训练的决策树过于偏向这些类别。默认值None,自动给数据集中的所有标签相同的权重。可以自己指定各个样本的权重,如果使用“balanced”,则算法会自己计算权重,样本量少的类别所对应的样本权重会高。
presort:拟合之前对数据进行预排序来加快树的构建。如果数据集非常庞大,预排序反而会导致整个分类变得缓慢,当数据集较小,且树的深度有限制时,采取预排序才会加速。
决策树可视化工具 graphviz
from sklearn import tree #导入sklearn中的树模块 clf = tree.DecisionTreeClassifier(criterion='gini', max_depth=3, min_samples_split=100) clf = clf.fit(Xtrain, Ytrain) score = clf.score(Xtest, Ytest) import graphviz dot_data = tree.export_graphviz(clf, out_file =None, feature_names = columns_model, filled = True, rounded = True ) print("criterion=",'entropy',"score=",score) graph = graphviz.Source(dot_data.replace('helvetica','"Microsoft YaHei"'), encoding='utf-8') graph.render(filename='MyPicture',view=True) #结果保存在MyPicture.pdf中
可视化工具安装:
1.官网下载graphviz 安装包 进行安装
2.conda下载安装 python-graphviz(调用接口)
conda install python-graphviz
https://blog.csdn.net/weixin_43848614/article/details/106462676