Dummy-Variablen, wenn nicht alle Kategorien vorhanden sind

Habe ich eine Reihe von dataframes, wo eine der Spalten enthält einen kategorischen Variablen. Ich möchte konvertieren, um mehrere dummy-Variablen, in dem Fall würde ich normalerweise verwenden get_dummies.

Was passiert, ist, dass get_dummies schaut auf die Daten, die in jeder dataframe, um herauszufinden, wie viele Kategorien es gibt, und schaffen so die entsprechende Anzahl von dummy-Variablen. Jedoch in dem problem, das ich jetzt arbeite, habe ich eigentlich im Voraus wissen, was die möglichen Kategorien sind. Aber wenn man bei jeder dataframe individuell, nicht alle Kategorien zwangsläufig erscheinen.

Meine Frage ist: gibt es eine Möglichkeit zu passieren, um get_dummies (oder eine gleichwertige Funktion) die Namen der Kategorien, so dass für die Kategorien, die nicht in einem bestimmten dataframe, es würde nur zu erstellen, die eine Spalte 0EN?

Etwas damit wäre dieses:

categories = ['a', 'b', 'c']

   cat
1   a
2   b
3   a

Werden diese:

  cat_a  cat_b  cat_c
1   1      0      0
2   0      1      0
3   1      0      0
  • Sie sind auf der Suche für die sklearn.OneHotEncoder. Schau mal hier: scikit-learn.org/stable/modules/generated/...
  • get_dummies implementiert die gleiche Funktionalität wie OneHotEncoder, mit dem zusätzlichen Vorteil, dass der Ausgang ist leicht zu verstehen, pandas dataframe mit beschrifteten Spalten anstatt einem einfachen ndarray.
  • Hatte ich falsch verstanden, die Frage. Danke!
  • Ich denke, für das Modell-training, es ist nicht notwendig, um diesen Schritt durchführen. Wenn eine Kategorie fehlt, die in den Trainingsdaten, wenn Sie porivde eine Spalte mit Nullen, oder nicht, Ihr Modell wird nicht lernen, was hilfreich, um Vorhersagen für die test-Instanzen enthalten, die variable.
  • Die Anzahl der Fälle, in denen dies nicht notwendig ist, ist ziemlich klein. Für die ersten Prototypen, die es vielleicht nicht werden, aber für jede Produktions-code, den Sie wollen würde, um sicherzustellen, dass alle Modell-Eingänge haben die gleichen Spalten.
  • Dies hängt davon ab, die Daten, die sagen, Sie haben ein Modell, sondern für eine einzelne Kategorie einen neuen Wert scheint ziemlich plötzlich. In diesem Fall wird Ihr Modell noch in der Lage sein, um Vorhersagen für solche Werte. Allerdings, wenn Sie Kodieren die Kategorien manuell, Ihr Modell wird Fehler produzieren. Die Frage ist, was gewünscht wird. Alles was ich sage ist: wissen Sie vielleicht noch nicht alle Eingabe-Werte vorher. Darüber hinaus, wenn die Umschulung das Modell, die neuen Werte für die Kategorien sind natürlich behandelt das Modell.
  • Gerade über jedes Modell, das ich kennen erfordert die konsequente Dimensionalität der Eingangsdaten. Wenn Sie nicht Kodieren die Kategorien als unten, müssen Sie eine änderung in der Räumlichkeit, wenn "ein neuer Wert erscheint ziemlich plötzlich".
  • Zumindest bei diese Methode, wenn ein Wert angezeigt wird, das war unbekannt vor, es wird keine neue Spalte für die es - Zeile werden alle Nullen. Das garantiert die konsequente Dimensionalität. Als ein beiseite, ist es wahrscheinlich eine gute Idee, dass nur Kategorien angezeigt, die in einem Trainings-set, wie die Behandlung von neuen Kategorien, die unvorhersehbar sein können in zahlreichen Modellen.
  • genau, zusätzlich z.B. piRSquared Lösung haben den gleichen Vorteil. Es gibt keine Notwendigkeit, im Vorbeigehen das Potenzial der Kategorie Ebenen, um get_dummies. Allerdings, wenn dataframes kombiniert werden müssen und get_dummies muss aufgerufen werden, aus welchem Grund auch immer, bevor die Kombination, ich gebe zu, es kann notwendig sein, um zu wissen, die Kategorie-Ebenen Voraus. Wenn die get_dummies Aufruf geschieht in einem späten pipeline wird es im Allgemeinen nicht erforderlich sein, übergeben Sie die Kategorie Ebenen durch das Verhalten, das du oben beschrieben
  • Das Verhalten, die ich oben beschrieben habe ist genau das ein Grund, um passieren die Kategorien - wenn Sie nicht, eine zusätzliche Spalte erstellt werden, für neue Spalten, die wahrscheinlich einen Fehler auslösen, es sei denn, Sie absichtlich fallen lassen, an welcher Stelle könnten Sie genauso gut bestanden haben, die Kategorien ausdrücklich.

InformationsquelleAutor Berne | 2016-05-25
Schreibe einen Kommentar