Frage

Ich arbeite mit Entscheidungsbäumen in Pythons Scikit Learn. Im Gegensatz zu vielen Anwendungsfällen dafür bin ich an dieser Stelle nicht so sehr an der Genauigkeit des Klassifikators interessiert, als ich den spezifischen Pfad extrahiere, den ein Datenpunkt durch den Baum nimmt, wenn ich aufrufe .predict() darauf. Hat jemand das schon einmal gemacht? Ich möchte einen Datenrahmen erstellen, der ($ x_ {i} $, Pfad $ _ {i} $) Pairs für die Verwendung in einer Down-Stream-Analyse enthält.

War es hilfreich?

Lösung

Es sieht so aus rpart Bibliothek in Kombination mit dem partykit Bibliothek. Ich würde idealerweise gerne einen Weg finden, dies in Python zu tun, aber hier ist der Code für alle, die interessiert sind (genommen von genommen von hier):

pathpred <- function(object, ...){
    ## coerce to "party" object if necessary
    if(!inherits(object, "party")) object <- as.party(object)

    ## get standard predictions (response/prob) and collect in data frame
    rval <- data.frame(response = predict(object, type = "response", ...))
    rval$prob <- predict(object, type = "prob", ...)

    ## get rules for each node
    rls <- partykit:::.list.rules.party(object)

    ## get predicted node and select corresponding rule
    rval$rule <- rls[as.character(predict(object, type = "node", ...))]

    return(rval)
}

Abbildung unter Verwendung der IRIS -Daten und der RPART ():

library("rpart")
library("partykit")
rp <- rpart(Species ~ ., data = iris)
rp_pred <- pathpred(rp)
rp_pred[c(1, 51, 101), ]

Nachgeben,

       response prob.setosa prob.versicolor prob.virginica
 1       setosa  1.00000000      0.00000000     0.00000000
 51  versicolor  0.00000000      0.90740741     0.09259259
 101  virginica  0.00000000      0.02173913     0.97826087
                                           rule
 1                          Petal.Length < 2.45
 51   Petal.Length >= 2.45 & Petal.Width < 1.75
 101 Petal.Length >= 2.45 & Petal.Width >= 1.75

Das scheint etwas zu sein, was ich zumindest verwenden könnte, um gemeinsame Informationen zur gemeinsamen übergeordneten Knoten abzuleiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top