узел индивидуального дерева случайного лесного классификатора дает нецелые числа каждого класса - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь извлечь количество классов каждого узла из дерева RandomForestClassifier. У меня есть 3 класса в моем наборе данных, поэтому я ожидаю увидеть результаты, такие как [30,50,100] (30 для первого класса, 50 для второго класса и 100 для 3-го класса. Само число не имеет значения, но оно должно быть целым), но вместо этого я получаю результаты типа [80.353,60.123,85.357]. Почему я получаю двойной? Это также не имеет никакого смысла, так как если вы будете следовать этому срезу отдельных узлов дерева, не будет возможности получить недискретные результаты для 3 классов.

Я пробовал одно дерево решений, и результаты всегда целочисленные. Это хорошо и ожидаемо.

clf=tree.DecisionTreeClassifier(max_depth=3,min_samples_split=0.05,min_samples_leaf=0.05)
clf=clf.fit(X_train,y_train)
clf.tree_.value

Я получаю

Результат

array([[[ 168., 1296.,  261.]],
       [[ 120.,  734.,   87.]], etc

все хорошие целые числа.

Если я попытаюсь получить одно дерево из RandomForest

from sklearn.ensemble import RandomForestClassifier
rfClf=RandomForestClassifier(n_estimators=100,max_depth=3,random_state=0,min_sample
                        s_split=0.05,min_samples_leaf=0.05,class_weight='balanced')

rfClf.fit(X_train,y_train)
clf=rfClf.estimators_[0]
clf.tree_.value 

Результат:

array([[[602.38095238, 570.5632716 , 579.40613027]],
       [[136.9047619 ,  96.72067901,  33.04597701]],

Почему я получаю нецелые числа и как мне интерпретировать результат. В узле 0 у меня 602 и 1/3 исхода A, и 570 половина исхода B?

Я действительно ценю любую помощь. Заранее спасибо

...