Hallo, Datenrahmen mit großen kategorialen Werten über 1600 Kategorien gibt es eine Möglichkeit, Alternativen zu finden, damit ich nicht über 1600 Spalten habe.
Ich fand diesen unten interessanten Link http://amunategui.github.io/feature-hashing/#sourcecode
Aber sie konvertieren zu Klasse / Objekt, was ich nicht will. Ich möchte meine endgültige Ausgabe als Datenrahmen, damit ich mit verschiedenen Modellen für maschinelles Lernen testen kann. Oder kann ich die genetrierte Matrix verwenden, um andere Modelle des maschinellen Lernens als logistische Regression oder XGBoost zu trainieren?
Kann ich das überhaupt implementieren?
Antworten:
Eine Möglichkeit besteht darin, seltene Werte 'anderen' zuzuordnen. Dies geschieht üblicherweise beispielsweise bei der Verarbeitung natürlicher Sprache. Die Intuition ist, dass sehr seltene Etiketten nicht viel statistische Aussagekraft haben.
Ich habe auch Leute gesehen, die 1-heiße kategoriale Werte auf niederdimensionale Vektoren abbilden, wobei jeder 1-heiße Vektor als Zeichnung aus einem multivariaten Gaußschen dargestellt wird. Siehe z. B. das Papier Deep Knowledge Tracing, in dem es heißt, dass dieser Ansatz durch die Idee der komprimierten Wahrnehmung motiviert ist:
BARANIUK, R. Compressive Sensing. IEEE Signal Processing Magazine 24, 4 (2007).
Insbesondere ordnen sie jeden Vektor der Länge N einem kürzeren Vektor der Länge log2 (N) zu. Ich habe das nicht selbst gemacht, aber ich denke, es wäre einen Versuch wert.
quelle
Sie können die Daten lesen und zunächst eine Liste aller eindeutigen Werte Ihrer kategorialen Variablen abrufen. Anschließend können Sie ein Hot-Encoder-Objekt (wie den sklearn.preprocessing.CategoricalEncoder) in Ihre Liste eindeutiger Werte einfügen.
Diese Methode kann auch in einem Zugtest-Framework oder beim Lesen Ihrer Daten in Blöcken hilfreich sein. Ich habe ein Python-Modul erstellt, das dies alles selbst erledigt. Sie finden es in diesem GitHub-Repository - dummyPy
Ein kurzes Tutorial dazu - Wie man kategoriale Variablen in Python heiß codiert?
quelle
Sie können ähnliche Werte in Buckets speichern, sodass Werte (oder Spalten), die das Muster mit dem nächsten Wert (oder einem ähnlichen Muster) enthalten, durch einen Wert (oder eine Spalte) ersetzt werden können und Ihre 1600-Werte daher auf 400 (oder sogar 400) sinken können weniger).
Ex. für Werte wie (wolkenartig - Nimbuswolken, Nieselregen, leichter Regen, Regen, starker Regen können in (leichter Regen, Regen, starker Regen) umgewandelt werden.
quelle
Verweisen Sie auf diesen Link (dies bezieht sich auch auf kategoriale Merkmale mit einigen eindeutigen Werten):
/datascience//a/64021/67149
Zum Einbetten können Sie auf den folgenden Link verweisen (nicht von mir geschrieben, aber einmal lesenswert ): https://medium.com/@satnalikamayank12/on-learning-embeddings-for-categorical-data-using-keras-165ff2773fc9
quelle