VectorIndexer
VectorIndexer是一个Estimator,用来将某个一组数字类型的属性值转化成数字编码index,以便后续其他适用于数字编码的算法使用。多个属性值被组合成一个Vector字段作为输入。
在fit期间如果某一个属性中出现的属性值<=最大分组阈值,则该属性会被认为是离散属性(categorical feature)并进行编码,编码规则是对该属性每个出现的离散数值给出从0~离散数值数量-1的数字,属性数值越小,给出的编码数字就越小(和StringIndexer算法类似,但编码规则不同);属性值>分组阈值的属性被认为是连续属性(continuous feature),输出中将保留原数值。
在transform阶段,VectorIndexer并不像StringIndexer那样具备处理fit时没有碰到过的离散属性值(连续值不影响)或者Null值的能力,如果出现就会抛出 java.util.NoSuchElementException: key not found: xx
异常,后续spark应该会加上处理这些未知值的选项。