2016-07-19 14 views
1

Von R haben wir die Funktion factors(). Ich möchte diese Funktion parallel mit Spark R verwenden.Spark R - Was ist äquivalent zu `factors()` in Spark R?

Meine Version von Spark ist 1.6.2, und ich finde kein Äquivalent in der documentation. Ich dachte, ich könnte es mit einer Karte machen, aber ich bin mir nicht sicher, ob ich this answer verstehe, und es sollte einen einfacheren Weg geben.

Also um es einfach auszudrücken: Was ist das Äquivalent von factors() in Spark R?

+0

Ist [diese Antwort] (http://stackoverflow.com/questions/25038294/how-do-i-run-the-spark-decision -tree-mit-einem-kategorischen-Feature-Set-using-scala) hilfreich? –

+1

Oder mit Spark [Ein-Hot-Encoder] (http://stackoverflow.com/questions/32277576/spark-ml-categorical-features) Dummy-Variablen zu erstellen –

+0

Ich verstehe aus der 2. Antwort, dass es auf eine Karte zeigt- wie Lösung, aber mir ist nicht klar, wie dies in SparkR zu erreichen ist. Ich bin mir nicht sicher, wie ich die map Funktion in SparkR 3 Spalten zurückgeben würde. –

Antwort

1

Es gibt keine direkte Entsprechung. Spark codiert jeden Typ von Variablen unter Verwendung von Zahlen mit doppelter Genauigkeit und verwendet Metadaten, um zwischen verschiedenen Typen zu unterscheiden. Für ML-Algorithmen können Sie Formeln verwenden, die Spalten automatisch kodieren.

+0

Eigentlich habe ich eine SQL-Abfrage wie diese verwendet: http://stackoverflow.com/questions/13309947/categorizing-data-based-on-the-value-of-a-field :) –

0

Es gibt 2 Möglichkeiten der Umwandlung von kategorischen Variablen -

  1. StringIndexer(): Diese werden String-Werte in numerische konvertieren und Sie können die ursprünglichen Werte mit IndextoString zurück(). StringIndexer ist ein Estimator, daher müssen wir fit() und dann transform() verwenden, um die konvertierten Werte zu erhalten.

  2. Verwenden Sie OneHotEncoder(): Dadurch werden die Kategorien in Sparse-Vektor konvertiert. Sie können steuern, ob der letzte Kategorie gelöscht werden soll oder nicht, indem Sie DropLast auf false setzen. Dies ist ein Transformer, daher ist transform() ausreichend.

Siehe diesen Link für weitere Informationen: http://spark.apache.org/docs/latest/ml-features.html#stringindexer

Verwandte Themen