python - 当我在数据帧上调用函数时,编码器给出值错误
问题描述
我正在尝试对我的数据框的一列进行 onehotencode,其余列是标签编码的。我正在使用如下代码:
def OneHotEncoder(repair,field):
oe=preprocessing.OneHotEncoder()
oe.fit(repair[field])
np.save('/Users/sayontimondal/Desktop/SKlearn Model/Encoders/'+str(field)+'_enc_classes.npy', oe.classes_)
repair[field] = repair[field].map(lambda s: 'Other' if s not in oe.classes_ else s)
repair[field]=oe.transform(repair[field])
return repair[field]
但是当在我的数据框上调用函数时:
repair['SALES_ORG_ID']=OneHotEncoder(repair,'SALES_ORG_ID')
我收到一个值错误:无法将字符串转换为浮点数:其他我不明白为什么会发生这种情况,因为当我使用标签编码器做同样的事情时它会起作用。知道我做错了什么吗?
我只想保存编码器类,以便可以在我的验证集中重用它,因此也可以接受任何其他方式。
解决方案
我已经像这样连接到我现有的数据框“其他”:
Other = pd.DataFrame([['Other','Other','Other','Other','Other']],
columns = ['CONFIG_CD','COMPONENT_CD_ISSUE_CD','SOLD_TO_SHIP_TO','SALES_ORG_ID','PART_NO'])
repair = pd.concat([repair,Other])
在此之后,我正在为标签编码器执行以下操作,效果很好:
#label encoder
def labelHotEncoder(repair,field):
le = preprocessing.LabelEncoder()
le.classes_= np.load('/Users/sayontimondal/Desktop/SKlearn Model/Encoders/'+str(field)+'_enc_classes.npy')
#np.save('/Users/sayontimondal/Desktop/SKlearn Model/Encoders/'+str(field)+'_enc_classes.npy', le.classes_)
repair[field] = repair[field].map(lambda s: 'Other' if s not in le.classes_ else s)
repair[field]=le.transform(repair[field])
return repair[field]
然后调用如下函数:
repair['CONFIG_CD']=labelHotEncoder(repair,'CONFIG_CD')
repair['COMPONENT_CD_ISSUE_CD']=labelHotEncoder(repair,'COMPONENT_CD_ISSUE_CD')
repair['SOLD_TO_SHIP_TO']=labelHotEncoder(repair,'SOLD_TO_SHIP_TO')
repair['PART_NO']=labelHotEncoder(repair,'PART_NO')
推荐阅读
- macos - 如何递归地将目录从本地计算机复制到 iCloud Drive?
- python - 找出银行中的一笔钱通过年存款通过某个数字所需的年数
- excel - 日期之间的Excel时差随着日期的变化而跳跃
- javascript - 在 JavaScript 中按 3 个不同的标准排序
- python - 如何打印变量的名称?
- flutter - 如何在容器中创建向内阴影(斜角效果),
- spring - 无法将spring cloud配置服务器添加到spring app
- gradle - Gradle compile vs Gradle Implementation 在使用 gradle 6.9 的 gradle build 中没有产生相同的结果
- node.js - expo build:web docker 找不到正确的入口点
- javascript - 避免重复自己