1

Standardmäßig gibt ein scikit-learn DecisionTreeRegressor den Mittelwert aller Zielwerte aus dem Trainingssatz in einem bestimmten Blattknoten zurück.Ermitteln der Verteilung von Werten am Blattknoten für einen DecisionTreeRegressor in scikit-learn

Ich bin jedoch daran interessiert, die Liste der Zielwerte aus meinem Trainingssatz, der in den vorhergesagten Blattknoten fiel, zurückzuerhalten. Dies erlaubt mir, die Verteilung zu quantifizieren und auch andere Metriken wie die Standardabweichung zu berechnen.

Ist das mit scikit-learn möglich?

Antwort

0

Ich denke, was Sie suchen, ist die apply Methode des tree Objekts. See here for the source. Hier ein Beispiel:

import numpy as np 
from sklearn.tree import DecisionTreeRegressor 

rs = np.random.RandomState(1234) 
x = rs.randn(10,2) 
y = rs.randn(10) 

md = rs.randint(1, 5) 
dtr = DecisionTreeRegressor(max_depth=md) 
dtr.fit(x, y) 

# The `tree_` object's methods seem to complain if you don't use `float32. 
leaf_ids = dtr.tree_.apply(x.astype(np.float32)) 

print leaf_ids 
# => [5 6 6 5 2 6 3 6 6 3] 

# Should be probably be equal for small depths. 
print 2**md, np.unique(leaf_ids).shape[0] 
# => 4, 4