【问题标题】:How to tackle classification with string features?如何使用字符串特征处理分类?
【发布时间】:2015-01-26 19:34:55
【问题描述】:

我正在开发一个广告点击推荐系统,我必须在该系统中预测用户是否会点击广告。我总共有 98 个功能,同时具有 USER 功能和 ADVERTISEMENT 功能。一些对预测非常重要的特征具有这样的字符串值。

**FEATURE**
Inakdtive Kunmden
Stammkfunden
Stammkdunden
Stammkfunden
guteg Quartialskunden
gutes Quartialskunden
guteg Quartialskunden
gutes Quartialskunden

整个数据列中有 14 个不同的字符串值。我的模型不能将字符串值作为输入,因此我必须将它们转换为分类 int 值。我不知道如何做到这一点并使这些功能有用。我正在使用 K-MEANS 聚类和随机森林算法。

【问题讨论】:

  • 为什么不给每个特征值分配一个唯一的值呢?
  • @AshokaLella 正如下面的回答中所解释的那样,我的模型可能会将这些唯一整数值​​解释为具有数值意义的值。

标签: machine-learning scikit-learn k-means random-forest


【解决方案1】:

在将字符串值列表转换为分类整数时要小心,因为模型可能会将整数解释为在数值上有意义,但它们可能不是。

例如,如果:

'Dog'=1,'Cat'=2,'Horse'=3,'Mouse'=4,'Human'=5

那么您的聚类算法中的距离度量会认为人类更像老鼠而不是狗。将它们转换为 14 个二进制值通常更有用,例如

转动这个:

'Dog'
'Cat'
'Human'
'Mouse'
'Dog'

进入这个:

'Dog'  'Cat'  'Mouse'  'Human'
  1      0       0        0
  0      1       0        0
  0      0       0        1
  0      0       1        0
  1      0       0        0

不是这个:

'Species'
    1
    2
    5
    4
    1

但是,如果数据将成为您要分类的“目标”而不是数据“特征”,您可以在 SciKit-Learn 的大多数多分类算法中将它们保留为整数。

【讨论】:

  • 这真是太好了。谢谢。这肯定会提高我的准确性结果。但这将为我的数据集增加 14 个特征。 M 已经在为过度拟合而苦苦挣扎。我希望这不会增加它。
【解决方案2】:

我喜欢 user1745038 的answer,它应该会给你带来相当好的结果。但是,如果您想从字符串中提取更有意义的特征(特别是在字符串数量显着增加的情况下),请考虑使用一些 NLP 技术。例如,“Dog”和“Cat”比“Dog”和“Mouse”更相似。

祝你好运

【讨论】:

    猜你喜欢
    • 2014-02-17
    • 1970-01-01
    • 2015-11-25
    • 2018-11-06
    • 1970-01-01
    • 2020-09-20
    • 2018-12-26
    • 2018-04-03
    • 2016-05-08
    相关资源
    最近更新 更多