Spark tubería ml - característica transformando - StringIndexer

En la tubería chispa ml etapa características de extracción y conversión , hay un transformador puede ser una cadena de caracteres que los datos de entrenamiento de aprendizaje de máquina común (por ejemplo, representados diversas clasificaciones) en la columna índice numérico con el fin de manejar el ordenador. Es StringIndexer . Es compatible con intervalo de índice es [0, numLabels ) (no compatibles se codificará como numLabels) , y soporta cuatro tipo, frequencyDesc (el más alto índice de asignación de frecuencia es 0), frequencyAsc, alphabetDesc, alphabetAsc .

 

Supongamos que tenemos trama de datos

Identificación | Categoría
 ---- | ----------
  0   | un
  1   | b
  2   | c
  3   | un
  4   | un
  5   | C

 

categoría indexador de aplicaciones como salida como entrada a categoryIndex

Identificación | categoría | categoryIndex
 ---- | ---------- | ---------------
  0   | a | 0.0 
 1   | b | 2.0 
 2   | c | 1.0 
 3   | a | 0.0 
 4   | a | 0.0 
 5   | c | 1.0

“A” consigue índice  0 debido a que es la más frecuente, seguido de “c” con el índice  1 y “b” con el índice  2.

 

Cuando StringIndexer encontró sin condiciones previamente tratadas por la estrategia de procesamiento de datos de tres nuevos

  • Lanza una excepción (por defecto)
  • Saltar la fila actual
  • colocación de la etiqueta Desconocido

 

Si utilizamos el generado previamente StringIndexer aplica a los datos siguientes

Identificación | Categoría
 ---- | ----------
  0   | un
  1   | b
  2   | c
  3   | d
  4   | mi

 

Si hay una política conocida, o la política se establece en el error, se producirá una excepción, y si se fija demasiado setHandleInvalid ( "skip") se omitirán D, E fila

Identificación | categoría | categoryIndex
 ---- | ---------- | ---------------
  0   | a | 0.0 
 1   | b | 2.0 
 2   | c | 1.0

 

Si llama setHandleInvalid ( "guardar") generará los siguientes datos

Identificación | categoría | categoryIndex
 ---- | ---------- | ---------------
  0   | a | 0.0 
 1   | b | 2.0 
 2   | c | 1.0 
 3   | d | 3.0 
 4   | e | 3.0

Nota: "D" o "E", donde las filas se asignan al índice "3.0", mantienen desconocido conjunto de codificación, en lugar de seguir para codificar

 

Scala Ejemplo de código:

importación org.apache.spark.ml.feature.StringIndexer
 
//创建表 val df
= spark.createDataFrame ( Seq ((0, " una " ), (1, " b " ), (2, " c " ), ( 3, " una " ), (4, " una " ), (5, " c " )) ) .toDF ( " ID " , " categoría " )
//创建新列索引器 val indexador
= nuevo StringIndexer () .setInputCol ( " categoría" ) .SetOutputCol ( " categoryIndex " )
// para adaptarse a dejar paso a paso la codificación df índice de una tabla a continuación es convertir en sí no lanzar una excepción o saltar Val indexado
= indexer.fit (df) .transform (df) indexed.show ()

 

Consulte la documentación detallada API  https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.ml.feature.StringIndexer

 

ref: https://spark.apache.org/docs/latest/ml-features.html#stringindexer

 

Supongo que te gusta

Origin www.cnblogs.com/lnas01/p/12630238.html
Recomendado
Clasificación