categorical:机器学习分类数据转换

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

用法

  categorical(vars, outputKind = "ind", maxNumTerms = 1e+06, terms = "",
    ...)

参数

vars

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

outputKind

指定输出类型的字符串。

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

maxNumTerms

指定字典中要包含的最大类别数的整数。 默认值为 1000000。

terms

条件或类别的可选字符向量。

...

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

详细信息

categorical 转换通过数据集传递,在文本列上操作,从而生成类别字典。 对于每一行,输入列中显示的整个文本字符串均定义为类别。 分类转换的输出是一个指示器向量。 此向量中的每个槽对应于字典中的一个类别,因此其长度为生成的字典的大小。 分类转换可以应用于一个或多个列,在这种情况下,它将为它所应用到的每个列生成一个单独的字典。

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

一个 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 transform: the entire string is treated as a category
 outModel1 <- rxLogisticRegression(like~reviewCat, data = trainReviews, 
     mlTransforms = list(categorical(vars = c(reviewCat = "review"))))
 # Note that 'I hate it' and 'I love it' (the only strings appearing more than once)
 # have non-zero weights
 summary(outModel1)

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