0
当在决策树中访问节点的tree_.threshold
时,类型似乎是float
。有没有办法将阈值的“精度”设置为整数? 在我的情况下,这些特征是所有的整数值,所以不需要在以这种精度定义的值上分割。是否可以在scikit-leanr决策树中设置拆分值的精度?
当在决策树中访问节点的tree_.threshold
时,类型似乎是float
。有没有办法将阈值的“精度”设置为整数? 在我的情况下,这些特征是所有的整数值,所以不需要在以这种精度定义的值上分割。是否可以在scikit-leanr决策树中设置拆分值的精度?
不,scikit-learn树在编译时使用double
类型的阈值(请参阅https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_tree.pyx)。固定的数据类型允许生成高效的C代码。您必须更改scikit-learn源代码,从Cython .pyx文件重建C扩展,然后安装修改后的scikit-learn以使用整数阈值。
在引用的_tree.pyx文件中:'从numpy导入float32作为DTYPE'。所以它现在是'float'而不是'double' – user1808924
DTYPE是一种内部用于输入数据的类型,而不是用于阈值的类型;如果您在此文件中搜索“阈值”,则可以看到它使用了双精度。也许更好的链接可以是https://github.com/scikit-learn/scikit-learn/blob/fc2f24927fc37d7e42917369f17de045b14c59b5/sklearn/tree/_tree.pxd#L25 –