categoricalHash:机器学习分类哈希数据转换

可在训练模型之前对数据执行的分类哈希转换。

用法

  categoricalHash(vars, hashBits = 16, seed = 314489979, ordered = TRUE,
    invertHash = 0, outputKind = "Bag", ...)

参数

vars

要转换的字符向量或变量名称列表。 如果已命名,则名称表示要创建的新变量的名称。

hashBits

一个整数,指定要哈希到的位数。 必须介于 1 和 30 之间(含限值)。 默认值为 16。

seed

一个指定哈希种子的整数。 默认值为 314489979。

ordered

TRUE 表示包含每个条件在哈希中的位置。 否则为 FALSE。 默认值是 TRUE

invertHash

一个整数,指定可用于生成槽名称的键数限制。 0 表示无反转哈希;-1 表示无限制。 虽然零值提供更好的性能,但需要非零值才能获得有意义的系数名称。 默认值是 0

outputKind

指定输出类型的字符串。

  • "ind":输出指示器向量。 输入列是类别向量,而且输出在输入列中的每个槽中包含一个指示器向量。
  • "bag":输出一个多集向量。 如果输入列是类别向量,则输出将包含一个向量,其中每个槽中的值为该类别在输入向量中出现的次数。 如果输入列仅包含一个类别,则指示器矢量和包向量等效
  • "key":输出索引。 输出是一个类别的整数 ID(介于 1 和字典中的类别数之间)。
    默认值是 "Bag"

...

发送到计算引擎的其他参数。

详细信息

categoricalHash 通过将值哈希化并将哈希值用作包中索引,将分类值转换为指示器数组。 如果输入列是一个向量,则为其返回单个指示器包。

categoricalHash 当前不支持处理系数数据。

一个 maml 对象,用于定义转换。

作者

Microsoft Corporation Microsoft Technical Support

另请参阅

rxFastTreesrxFastForestrxNeuralNetrxOneClassSvmrxLogisticRegression

示例


 trainReviews <- data.frame(review = c( 
         "This is great",
         "I hate it",
         "Love it",
         "Do not like it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I kind of hate it",
         "I do like it",
         "I really hate it",
         "It is very good",
         "I hate it a bunch",
         "I love it a bunch",
         "I hate it",
         "I like it very much",
         "I hate it very much.",
         "I really do love it",
         "I really do hate it",
         "Love it!",
         "Hate it!",
         "I love it",
         "I hate it",
         "I love it",
         "I hate it",
         "I love it"),
      like = c(TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
         FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, 
         FALSE, TRUE, FALSE, TRUE), stringsAsFactors = FALSE
     )

     testReviews <- data.frame(review = c(
         "This is great",
         "I hate it",
         "Love it",
         "Really like it",
         "I hate it",
         "I like it a lot",
         "I love it",
         "I do like it",
         "I really hate it",
         "I love it"), stringsAsFactors = FALSE)


 # Use a categorical hash transform
 outModel2 <- rxLogisticRegression(like~reviewCatHash, data = trainReviews, 
     mlTransforms = list(categoricalHash(vars = c(reviewCatHash = "review"))))
 # Weights are similar to categorical
 summary(outModel2)

 # Use the model to score
 scoreOutDF2 <- rxPredict(outModel2, data = testReviews, 
     extraVarsToWrite = "review")
 scoreOutDF2