首页 > 编程语言 >sklearn 决策树算法

sklearn 决策树算法

时间:2022-11-22 17:22:39浏览次数:43  
标签:None sklearn leaf min max 算法 默认值 节点 决策树

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中

 

标签:None,sklearn,leaf,min,max,算法,默认值,节点,决策树
From: https://www.cnblogs.com/pass-ion/p/16915789.html

相关文章

  • 快慢指针算法
      <script>varstr='aaaaaaaaaaaabababbbbbbbbbbbbcccccccccccccccccdddd'varfir=0,maxLen=0for(vari=1;i<str.length;i++){......
  • 代码随想录算法训练营第六天 | 242.有效的字母异位词 349. 两个数组的交集 202.
    今日任务●哈希表理论基础●242.有效的字母异位词●349.两个数组的交集●202.快乐数●1.两数之和详细布置哈希表理论基础了解哈希表的内部实......
  • TensorFlow算法一般流程
    今天看微信公众号,TensorFlow马上更新2.0版本。TensorFlow算法一般流程:导入/生成要本数据集转换和归一化数据data=tf.nn.batch_norm_with_global_normalization(...)......
  • 查找算法总结
    顺序查找基本思想intsearch(inta[],intn,intkey){for(inti=0;i<n;i++)if(a[i]==key)returni+1;return0;}经典查找——设......
  • 【Core Java Volume 5】集合算法---查找数组、集合最大值的通用方法
    一、查找数组的最大值1 笔试的时候通常查找数组的最大值,数组类型通常是int类型,可以这样直接写出getMax()代码://数组(int类型)publicstaticintgetMax(int[]nums){......
  • 【Core Java Volume 6】集合算法--二分查找法
    在数组中查找一个对象,当数组是有序的时候可以采用二分查找法。即可以直接查看位于数组中间的元素,看一看是否大于查找的元素。如果大于,用同样的方法在数组的前半部分继续查找......
  • golang算法-链表逆序
    前言链表逆序,表述的场景为:A->B->C->D逆序后:D->C>B>A分析需要插入数据,Insert方法需要打印数据,Print方法插入数据时,需要定位最后一个节点,LastNode方法最少需要两个偏移量......
  • golang算法-判断链表是否有环
    前言链表有环,体现为:A->B->C->D->B…分析需要将遍历过的节点存入map,以址为key,空struct为值遍历时,当前节点是否已存在,存在即有环。实现链表//链表的长度,不包过头typeNode......
  • 排序算法(实践篇)
    排序算法(实践篇)插入排序直接插入voidinsert_sort(intq[],intn){ inti,j; for(i=2;i<=n;i++) { if(q[i]<q[i-1])//q[i]<q[i-1]说明要将q[i]插入前面的有......
  • 排序算法(理论篇)
    排序算法(理论篇)插入排序直接插入:时间:O(n2);空间:O(1)比较次数分析最好情况(全正序):n-1次最坏情况(全逆序):n(n-1)/2次一般情况分析举例:对于21,32,46,40的序列从小......