Machine learning 如何处理字符串特征的分类?

Machine learning 如何处理字符串特征的分类?,machine-learning,scikit-learn,k-means,random-forest,Machine Learning,Scikit Learn,K Means,Random Forest,我正在开发一个广告点击推荐系统,在这个系统中,我必须预测用户是否会点击广告。我总共有98个功能,包括用户功能和广告功能。一些对预测非常重要的特征具有如下字符串值 **FEATURE** Inakdtive Kunmden Stammkfunden Stammkdunden Stammkfunden guteg Quartialskunden gutes Quartialskunden guteg Quartialskunden gutes Quartialskunden 在整个数据列中有14个

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

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

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

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

例如,如果:

'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中的大多数多分类算法中将其保留为INT

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

例如,如果:

'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中的大多数多分类算法中将其保留为INT

我喜欢user1745038,它应该会给您带来相当好的结果。然而,如果你想从字符串中提取更有意义的特征,特别是如果字符串的数量显著增加,考虑使用一些NLP技术。例如,“狗”和“猫”比“狗”和“老鼠”更相似

祝你好运

我喜欢用户1745038,它会给你带来相当好的结果。然而,如果你想从字符串中提取更有意义的特征,特别是如果字符串的数量显著增加,考虑使用一些NLP技术。例如,“狗”和“猫”比“狗”和“老鼠”更相似


祝你好运

为什么不给每个特征值分配一个唯一的值?@Ashokaella如下面的回答所述,我的模型可能会将这些唯一的整数值解释为具有数字意义的值。为什么不给每个特征值分配一个唯一的值?@Ashokaella如下面的回答所述,我的模型可能会将这些唯一的整数值解释为具有数值意义的值。这真的很好。谢谢这肯定会提高我的结果的准确性。但这将为我的数据集增加14个特征。我已经在为过度装修而挣扎了。我希望这不会增加它。这真的很好。谢谢这肯定会提高我的结果的准确性。但这将为我的数据集增加14个特征。我已经在为过度装修而挣扎了。我希望这不会增加它。