Как мне сделать первый обход в обход дерева решений sklearn?
В своем коде я пробовал библиотеку sklearn.tree_ и использовал различные функции, такие как tree_.feature и tree_.threshold, чтобы понять структура дерева. Но эти функции выполняют обход дерева dfs, если я хочу сделать bfs, как мне это сделать?
Предположим,
clf1 = DecisionTreeClassifier( max_depth = 2 )
clf1 = clf1.fit(x_train, y_train)
, это мой классификатор, и полученное дерево решений
Затем я прошел по дереву, используя следующую функцию
def encoding(clf, features):
l1 = list()
l2 = list()
for i in range(len(clf.tree_.feature)):
if(clf.tree_.feature[i]>=0):
l1.append( features[clf.tree_.feature[i]])
l2.append(clf.tree_.threshold[i])
else:
l1.append(None)
print(np.max(clf.tree_.value))
l2.append(np.argmax(clf.tree_.value[i]))
l = [l1 , l2]
return np.array(l)
, и был получен результат
array([['address', 'age', None, None, 'age', None, None],
[0.5, 17.5, 2, 1, 15.5, 1, 1]], dtype=object)
где 1-й массив - это особенность узла, или, если он является листовым, тогда он помечается как none, а 2-й массив - это порог для узла-объекта, а для узла класса - это класс, но это обход dfs дерева, я хочу сделать обход bfs, что я должен делать?
Поскольку я новичок в переполнении стека, пожалуйста, предложите, как улучшить описание вопроса и какую дополнительную информацию я должен добавить, если таковая имеется, чтобы объяснить мою проблему дальше.
X_train (sample)
y_train (образец)