你好,我是机器学习的初学者,我以前曾处理过一些二进制的ml任务,这些任务中的数据都是数字的。现在,我面临一个必须找到特定组合可能性的问题。我目前无法透露数据集或代码。我的数据是10列的数据框。我必须在8列上训练我的模型,并预测最后2列的可能性。那是我的标签是最后两列的组合。我面临的问题是,这些列值不是数字。我已经尝试了遇到的所有问题,但是找不到将其转换为数值的任何合适方法。我已经尝试了sklearn的LabelEncoder,它可以处理标签,但是如果再次使用它会抛出内存错误。我尝试从pandas读取to_numeric,它将所有值读取为Nan。值的格式为“ 2be74fad-4d4”。有关如何处理此问题的任何建议将不胜感激。
答案 0 :(得分:2)
要将分类数据转换为数值,可以在sklearn中尝试以下方法:
现在,对于您的问题,您可以使用LabelEncoder。但是有一个问题!在其他sklearn模型中,您可以声明一次,然后使用它进行拟合,然后在许多列上进行转换。
在LabelEncoding中,您必须在训练数据的一列上paper.type
,然后在测试数据的同一列上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])
答案 1 :(得分:1)
您可以创建一个字典,该字典具有从字符串到整数的映射关系。可以在此处找到示例:enter link description here。然后,您可以使用onehot编码,或者仅将整数输入神经网络。如果字符具有某些含义,您也可以基于每个字符而不是基于单词来实现。但这取决于任务。如果此字符串是该列的唯一标识符,请不要使用它,也不要将其输入模型。