朴素贝叶斯文本分类算法

功能介绍

  • 朴素贝叶斯文本分类是一个多分类算法
  • 朴素贝叶斯文本分类组件支持稀疏、稠密两种数据格式
  • 朴素贝叶斯文本分类组件支持带样本权重的训练

参数说明

名称 中文名称 描述 类型 是否必须? 默认值
modelType 模型类型 取值为 Multinomial 或 Bernoulli String “Multinomial”
labelCol 标签列名 输入表中的标签列名 String
weightCol 权重列名 权重列对应的列名 String null
vectorCol 向量列名 向量列对应的列名 String
smoothing 算法参数 光滑因子,默认为1.0 Double 1.0

脚本示例

运行脚本

  1. data = np.array([
  2. ["$31$0:1.0 1:1.0 2:1.0 30:1.0","1.0 1.0 1.0 1.0", '1'],
  3. ["$31$0:1.0 1:1.0 2:0.0 30:1.0","1.0 1.0 0.0 1.0", '1'],
  4. ["$31$0:1.0 1:0.0 2:1.0 30:1.0","1.0 0.0 1.0 1.0", '1'],
  5. ["$31$0:1.0 1:0.0 2:1.0 30:1.0","1.0 0.0 1.0 1.0", '1'],
  6. ["$31$0:0.0 1:1.0 2:1.0 30:0.0","0.0 1.0 1.0 0.0", '0'],
  7. ["$31$0:0.0 1:1.0 2:1.0 30:0.0","0.0 1.0 1.0 0.0", '0'],
  8. ["$31$0:0.0 1:1.0 2:1.0 30:0.0","0.0 1.0 1.0 0.0", '0']])
  9. dataSchema = ["sv", "dv", "label"]
  10. df = pd.DataFrame({"sv": data[:, 0], "dv": data[:, 1], "label": data[:, 2]})
  11. batchData = dataframeToOperator(df, schemaStr='sv string, dv string, label string', op_type='batch')
  12. ns = NaiveBayesTextTrainBatchOp().setVectorCol("sv").setLabelCol("label")
  13. model = batchData.link(ns)
  14. predictor = NaiveBayesTextPredictBatchOp().setVectorCol("sv").setReservedCols(["sv", "label"]).setPredictionCol("pred")
  15. predictor.linkFrom(model, batchData).print()

运行结果

sv label pred
“$31$0:1.0 1:1.0 2:1.0 30:1.0” 1 1
“$31$0:1.0 1:1.0 2:0.0 30:1.0” 1 1
“$31$0:1.0 1:0.0 2:1.0 30:1.0” 1 1
“$31$0:1.0 1:0.0 2:1.0 30:1.0” 1 1
“$31$0:0.0 1:1.0 2:1.0 30:0.0” 0 0
“$31$0:0.0 1:1.0 2:1.0 30:0.0” 0 0
“$31$0:0.0 1:1.0 2:1.0 30:0.0” 0 0