如何处理 ML 分类中的字符串数据

Tah*_*que 3 python machine-learning keras

您好,我是机器学习的初学者,我之前曾处理过一些数据为数值的二进制机器学习任务。现在我面临一个问题,我必须找到特定组合的概率。目前我无法透露数据集或代码。我的数据是 10 列的数据框。我必须在 8 列上训练我的模型并预测最后 2 列的可能性。那是我的标签是最后两列的组合。我面临的问题是,这些列值不是数字。我已经尝试了遇到的所有方法,但找不到任何合适的方法将其转换为数值。我尝试过 sklearn 中的 LabelEncoder,它适用于标签,但如果再次使用它,则会引发内存错误。我尝试从 pandas 读取 to_numeric,它将所有值读取为 Nan。这些值的格式为“2be74fad-4d4”。任何有关如何处理此问题的建议将不胜感激。

Shw*_*del 7

要将分类数据转换为数值数据,您可以在 sklearn 中尝试以下方法:

  1. 标签编码
  2. 标签二值化器
  3. 热编码

现在,对于您的问题,您可以使用 LabelEncoder。但是有一个问题!在其他 sklearn 模型中,您可以声明一次,然后使用它来拟合并转换多个列。

在 LabelEncoding 中,您必须fit_transform在训练数据中的一列上建立模型,然后transform在测试数据中的同一列上建立模型。然后对下一个分类列进行相同的过程。

您可以迭代分类列的列表以使其变得简单。考虑下面的代码片段:

cat_cols = ['Item_Identifier', 'Item_Fat_Content', 'Item_Type', 'Outlet_Identifier', 
         'Outlet_Size', 'Outlet_Location_Type', 'Outlet_Type', 'Item_Type_Combined']
enc = LabelEncoder()

for col in cat_cols:
    train[col] = train[col].astype('str')
    test[col] = test[col].astype('str')
    train[col] = enc.fit_transform(train[col])
    test[col] = enc.transform(test[col])
Run Code Online (Sandbox Code Playgroud)