Я пытаюсь извлечь количество классов каждого узла из дерева 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?
Я действительно ценю любую помощь. Заранее спасибо