one-hot编码组件

算法介绍

one-hot编码,也称独热编码,对于每一个特征,如果它有m个可能值,那么经过 独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。 因此,数据会变成稀疏的,输出结果也是kv的稀疏结构。

参数说明

名称 中文名称 描述 类型 是否必须? 默认值
selectedCols 选择的列名 计算列对应的列名列表 String[]
reservedCols 算法保留列名 算法保留列 String[] null
outputCols 输出结果列列名数组 输出结果列列名数组,可选,默认null String[] null
handleInvalid 未知Token处理策略 未知Token处理策略,”keep”, “skip”, “error” String “keep”
encode 编码方式 编码方式,”INDEX”, “VECTOR”, “ASSEMBLED_VECTOR” String “ASSEMBLED_VECTOR”
dropLast 是否删除最后一个元素 是否删除最后一个元素 Boolean true

脚本示例

运行脚本

  1. import numpy as np
  2. import pandas as pd
  3. data = np.array([
  4. [1.1, True, "2", "A"],
  5. [1.1, False, "2", "B"],
  6. [1.1, True, "1", "B"],
  7. [2.2, True, "1", "A"]
  8. ])
  9. df = pd.DataFrame({"double": data[:, 0], "bool": data[:, 1], "number": data[:, 2], "str": data[:, 3]})
  10. inOp1 = BatchOperator.fromDataframe(df, schemaStr='double double, bool boolean, number int, str string')
  11. inOp2 = StreamOperator.fromDataframe(df, schemaStr='double double, bool boolean, number int, str string')
  12. onehot = OneHotTrainBatchOp().setSelectedCols(["double", "bool", "number", "str"]).setDiscreteThresholds(2)
  13. predictBatch = OneHotPredictBatchOp().setSelectedCols(["double", "bool"]).setEncode("ASSEMBLED_VECTOR").setOutputCols(["pred"]).setDropLast(False)
  14. onehot.linkFrom(inOp1)
  15. predictBatch.linkFrom(onehot, inOp1)
  16. [model,predict] = collectToDataframes(onehot, predictBatch)
  17. print(model)
  18. print(predict)
  19. predictStream = OneHotPredictStreamOp(onehot).setSelectedCols(["double", "bool"]).setEncode("ASSEMBLED_VECTOR").setOutputCols(["vec"])
  20. predictStream.linkFrom(inOp2)
  21. predictStream.print(refreshInterval=-1)
  22. StreamOperator.execute()

运行结果

  1. double bool number str pred
  2. 0 1.1 True 2 A $6$0:1.0 3:1.0
  3. 1 1.1 False 2 B $6$0:1.0 5:1.0
  4. 2 1.1 True 1 B $6$0:1.0 3:1.0
  5. 3 2.2 True 1 A $6$2:1.0 3:1.0