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 –