sklearn模块里的DecisionTreeClassifier为什么每次结果不同(数据相同的情况下)

  统计/机器学习 监督式学习 Python    浏览次数:13038        分享
2

我用sklearn里的DecisionTreeClassifier,发现每次结果(预测结果和score)都有稍微不同,模型参数和数据每次都是一样的。这是bug么?源代码不稳定?

 

机器小白   2017-04-11 12:18



   1个回答 
5

sklearn.tree.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_split=1e-07, class_weight=None, presort=False)

这个是sklearn.tree.DecisionTreeClassifier的全部参数,其中有一项是random_state,如果你没有特地设定这个数值的话,决策树是有随机性的。


-------------------------来个分界线--------------------------


在sklearn的记录文档里是这么写的,考虑到数值特征的存在,训练一个最优的决策树是NP-complete。因此比较实际的做法是努力去找一个比较优的,而不是最优的。比如用贪婪算法,随机地从一些特征开始建立次优化的决策树,再从这些树中选择最好的,这样的树能达到较优。


SofaSofa数据科学社区DS面试题库 DS面经

起个好名字   2017-04-12 09:16



  相关讨论

sklearn里怎么获得adaboost中每棵树的权重?

怎么得到sklearn里的RandomForestClassifier训练好之后每棵树的叶节点的个数?

sklearn随机森林设置每棵树的权重

sklearn DecisionTreeRegressor模型中为什么会有随机种子random_state?

对sklearn的决策树进行剪枝

sklearn里的RandomForestClassifier怎么选样本的数量

sklearn里的RandomForestClassifier和ExtraTreesClassifier有什么区别吗?

lightgbm.LGBMModel和lightgbm.LGBMClassifier该用哪个?

怎么获得sklearn里决策树的实际深度?

可视化sklearn决策树的结构

  随便看看

numpy array里怎么用fillna填充nan的值?

分类特征的目标编码是什么意思?

机器学习算法的鲁棒性是什么意思?

怎么直观理解ROC AUC的概率统计意义?

matplotlib画图怎么确保横坐标和纵坐标的单位长度一致?