【问题标题】:How to classify String Data into Integers?如何将字符串数据分类为整数?
【发布时间】:2019-05-08 18:07:54
【问题描述】:

我需要对我的数据集的一个特征的字符串值进行分类,以便我可以进一步将其用于其他事情,比如预测或绘图。

如何转换?

我找到了这个解决方案,但在这里我必须手动输入该功能的每个唯一值的代码。对于 2-3 个唯一值,没关系,但是我有一个具有 50 多个国家/地区唯一值的功能,我无法为每个国家/地区编写代码。

def sex_class(x):
    if x == 'male':
        return 1
    else:
        return 0

这会将特征 - 性别中的男性值更改为 1,将女性值更改为 0。

【问题讨论】:

    标签: python pandas dataframe machine-learning classification


    【解决方案1】:

    您可以使用 scikit-learn LabelEncoder

    #given a list containing all possible labels sex_classes = ['male', 'female'] from sklearn import preprocessing le = preprocessing.LabelEncoder() le.fit(sex_classes)

    这将为给定列表中的所有唯一值分配标签。您也可以将此标签编码器对象保存为 pickle 文件以供以后使用。

    【讨论】:

      【解决方案2】:

      rankpd.factorize

      df['ID_int'] = df['id'].rank(method='dense').astype(int)
      df['ID_int2'] = pd.factorize(df['id'])[0]
      

      输出:

        id  ID_int  ID_int2
      0  a       2        0
      1  b       3        1
      2  c       4        2
      3  a       2        0
      4  b       3        1
      5  c       4        2
      6  A       1        3
      7  b       3        1
      

      标签不同,但一致。

      【讨论】:

        【解决方案3】:

        您可以改用字典。

        sex_class = {'male': 1, 'female': 0}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-19
          • 1970-01-01
          • 2021-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多