如何使用字符串功能解决分类问题?

时间:2014-11-28 07:11:04

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

例如,如果:

'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中大多数多分类算法的整数。

答案 1 :(得分:1)

我喜欢user1745038' answer它应该会给你相当不错的结果。但是,如果要从字符串中提取更有意义的功能(特别是如果字符串数量显着增加),请考虑使用一些NLP技术。例如,' Dog'和#Cat;#比“狗狗”更相似和'鼠标'。

祝你好运