决策树系列文章从理论说到Python实现,终于到了最后一篇,使用决策树算法库。
1.scikit-learn决策树算法库
scikit-learn决策树算法库包含分类决策树DecisionTreeClassifier和回归决策树DecisionTreeRegressor,下面对这两个决策树类的一些重要参数进行介绍:
DecisionTreeClassifier:
criterion:特征选择标准,'gini'/'entropy'分别表示基于基尼系数和信息增益选择特征;
splitter:特征划分点选择标准,'best'表示在特征的所有划分点中找出最佳的划分点;'random'表示随机地在部分划分点中找最佳划分点;样本数据量很大时适合使用'random';
max_depth:决策树的最大深度,默认为None表示不会限制决策树深度;
min_samples_split:子树再划分所需的最小样本数,如果内部节点的样本数小于该阈值,则不再对该节点进行划分;
in_samples_leaf:叶子节点的最小样本数,如果叶子节点中的样本个数小于该阈值,该叶子节点及其兄弟节点会被剪枝;
min_weight_fraction_leaf:叶子节点最小样本权重和,如果叶子节点所有样本权重和小于该阈值,则该叶子节点及其兄弟节点会被剪枝;如果样本分布类别差别很大或者样本缺失值较多则考虑使用该参数;
max_features:划分时考虑的最大特征数,默认None表示考虑所有特征数;'log2'表示划分时考虑log2N个特征;'sqrt'/'auto'表示划分时考虑sqrt(N)个特征;整数表示考虑的特征绝对数;浮点数表示考虑特征数的百分比。
random_state:如果是int,表示随机数字发生器的种子;如果是RandomState,表示随机数字发生器;如果是None,随机数字发生器是np.random使用的RandomState instance;
max_leaf_nodes:最大叶子节点数,默认None表示不限制最大叶节点数,如果特征较大的话可以考虑使用该参数,防止过拟合;
min_impurity_decrease:节点划分的不纯度减小阈值,如果节点划分后不纯度减小量大于该阈值,则对该节点进行划分;
min_impurity_split:节点划分最小不纯度,如果节点的不纯度小于该阈值,则该节点不再进行划分;
class_weight:指定样本类别的权重,防止偏向于样本数据过多的类别,如果样本类别分布没有明显的偏差,可以使用默认值None;使用'balanced'表示算法会自行计算权重,样本数少的类别权重会高;也可以自行指定权重;
presort:是否预分类数据以加速训练时最好分类的查找。
DecisionTreeRegressor
criterion:特征选择标准,'mse'/'mae'分别表示基于均方差、均值差绝对值之和来选择特征;
其余参数的意义与DecisionTreeClassifier中的一致。
2.DecisionTreeClassifier演练
下面以鸢尾花数据集为样本,使用scikit-learn决策树算法库,拟合决策树模型并对其进行可视化。
最后得到样本数据的分类图以及可视化后的决策树如下所示:
看到这里,关于决策树的分享就全部结束了,希望你我都有收获,下次再见了!
Coding Your Ambition!
领取专属 10元无门槛券
私享最新 技术干货