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

时间:2015-02-25 00:29:01

标签: machine-learning scikit-learn decision-tree

我是机器学习的新手!

现在我在决策树/随机森林的应用上遇到了一些问题。我试图适应一个问题,其中包含数字和字符串(如国家/地区名称)作为功能。现在的库,scikit-learn只将数字作为参数,但我想注入字符串以及它们带来了大量的知识。

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

2 个答案:

答案 0 :(得分:5)

1)如何添加“字符串”作为功能。

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

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

对于国家/地区,这是没有意义的,因为您以错误的方式表示您的功能。一个国家更类似于一个分类变量。只有X个国家/地区,您必须拥有X中的值(这可能不是绝对正确的,但这超出了这一点)。 scikit-learn不支持分类变量。您可以使用one-hot-encoding“伪造”它,但它可能不会完全支持完全支持分类变量的库。

请注意,仅仅因为国家/地区可以表示为类别并不意味着它是处理它们的最佳方式。它在很大程度上取决于您的数据是什么以及您在做什么。没有人知道所有的细节,没有人能为你解答。

答案 1 :(得分:1)

处理问题的方法是在R中使用Breiman的randomForest实现。此实现允许您使用实际字符串作为输入。例如,您可以在输入数据框中包含字符串country列。假设country的唯一值是训练数据中的值,将构建生成的模型。 R中randomForest可以提供的另一个很酷的事情是称为部分依赖图。 R函数称为partialPlot,它会生成一个图表,显示您的响应变量(即您尝试预测的变量)如何取决于某个预测变量。如果是country,您实际上可以根据您选择的country生成一个图表,显示您的回复的变化情况。

在你不想直接使用琴弦的情况下,Raff Edward的回答也很有意义。这方面的一个例子可能是您将人们的姓名作为字符串输入。但是,您真正感兴趣的(无论出于何种原因)个人姓名的长度会影响您的响应变量。在这种情况下,您只需要nchar(name),其中name是包含名称字符串的向量。

要开始使用R中的randomForest,您可以访问this site进行下载。它是免费供个人使用的,我不相信我们在几年前在工作中使用它时付了钱。

您还需要一个步骤才能开始。您必须将randomForest包安装到R控制台中。你可以输入:

来做到这一点
install.packages("randomForest")

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

有很多关于如何使用Google randomForestpartialPlot的网站,您可以通过Google搜索这些条款。