提问者:小点点

字符串作为决策树/随机森林中的特征


我是机器学习新手!

现在我正在做一些关于决策树/随机森林应用的问题。我正试图解决一个问题,这个问题有数字和字符串(比如国家名称)作为特征。现在,scikit learn库只将数字作为参数,但我想注入字符串,因为它们承载了大量的知识。

如何处理这种情况,我可以通过一些机制(如python中的哈希)将字符串转换为数字。但我想知道在决策树问题中如何处理字符串的最佳实践。


共2个答案

匿名用户

1)如何添加“字符串”作为特征。

很少有算法能够处理任何形式的字符串,决策树也不是其中之一。您必须将它们转换为决策树知道的内容(通常是数字或分类变量)。

如何将它们转换为功能:这在很大程度上取决于字符串的性质。如果字符串是句子,您可以使用单词包之类的东西将每个单词映射到数字特征。有许多不同的策略来确定要使用的数值,但仅使用0/1表示不存在/存在通常是一个不错的基线。

对于国家来说,这没有意义,因为您以错误的方式表示了您的功能。一个国家更类似于一个分类变量。只有X个国家,并且必须有一个X值(这可能不是绝对正确的,但这超出了重点)。scikit learn不支持分类变量。您可以通过使用一个热编码来“伪造”它,但它可能无法像完全支持分类变量的库那样工作。

请注意,仅仅因为国家可以表示为类别并不意味着这是处理它们的最佳方式。这高度取决于你的数据是什么,以及你在做什么。没有人能在不了解所有细节的情况下为你解答。

匿名用户

处理问题的方法是在R中使用Breiman的randomForest实现。此实现允许您使用实际字符串作为输入。例如,您可以在输入数据框中包含一个字符串country列。生成的模型将假定country的唯一值是您的培训数据中的值。在R中,randomForest可以提供的另一个很酷的东西是所谓的部分依赖图。R函数称为partialPlot,它生成一个曲线图,显示您的响应变量(即您试图预测的内容)如何依赖于某个预测值。在国家的情况下,您实际上可以生成一个曲线图,显示您的响应如何随您选择的国家而变化。

RaffEdward的回答在您不想直接使用字符串的情况下也有意义。这方面的一个例子可能是您将人名输入为字符串。然而,你真的对一个人名字的长度如何影响你的反应变量感兴趣(无论出于什么原因)。在这种情况下,您只需要nchar(name),其中name是包含name字符串的向量。

要开始使用R中的随机森林,您可以访问此网站下载它。它对个人使用是免费的,我相信几年前我在工作中使用它的时候我们也没有付钱。

你只需要再开始一步。您必须将randomForest软件包安装到R控制台中。您可以通过键入:

install.packages("randomForest")

如果您有一个活动的互联网连接,R控制台应该能够解决该请求,并向您提示一个可供选择的镜像列表。

有大量关于如何使用随机森林部分情节的网站,你可以通过谷歌搜索这些术语。