2017-12-01 2 views
0

Es gibt ein bekanntes Problem in Tom's Mitchell Machine Learning Buch, um Entscheidungsbaum basierend auf den folgenden Daten zu bauen, wobei Play Ball die Zielvariable ist.Scikit Entscheidung Baum kategorische Funktionen

enter image description here

Der resultierende Baum folgt

enter image description here

Ich frage mich, ob es möglich ist, diesen Stammbaum mit Scikit-Learn zu bauen. Ich fand einige Beispiele wo Entscheidungsbaum als

export_graphviz(clf) 
Source(export_graphviz(clf, out_file=None)) 

dargestellt werden aber es sieht aus wie scikit nicht gut funktioniert mit kategorischen Daten, müssen die Daten in mehrere Spalten digitalisiert werden. Als Ergebnis ist es unmöglich, den Baum genau wie im Bild zu bauen. Ist es richtig?

+0

Textform der Daten verfügbar? – Dark

+1

Etikettencodierung? – Adorn

+0

Ich habe es selbst nicht benutzt, aber ein schnelles Suchergebnis ist hier, aus den Kommentaren sieht es vielversprechend aus. https://github.com/scikit-learn/scikit-learn/pull/4899 – Adorn

Antwort

1

Ja, es ist richtig, dass es unmöglich ist, einen solchen Baum mit scikit-learn zu bauen.

Der Hauptgrund ist, dass dies ein ternärer Baum (Knoten mit bis zu drei Kindern), aber scikit-learn implements only binary trees - Knoten haben genau zwei oder keine Kinder:

cdef class Tree: 
    """Array-based representation of a binary decision tree. 
... 

Allerdings ist es möglich, eine bekommen äquivalenter Binärbaum des Formulars

Outlook == Sunny 
    true => Humidity == High 
     true => no 
     false => yes  
    false => Outlook == Overcast 
     true => yes 
     false => Wind == Strong 
      true => no 
      false => yes 
+1

@com Das war, was ich gesagt habe, wenn gesagt wird, die Ergebnisse von One-Hot-codierten Funktionen zu interpretieren. –

Verwandte Themen