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