python - 使用 one-hot 编码将列表转换为二进制值
问题描述
我在CSV文件中有一列。列中的每个单元格在列表中都有多个值。例如,一个单元格将包含另一个单元['A', 'B', 'C']
格['B', 'D']
。我想申请one-hot encoding
此列以转换为二进制值以用于机器学习。
请让我知道我该怎么做?
解决方案
输入是 csv 文件,所以没有列表,只有字符串。因此,删除[]
并使用删除列名中Series.str.get_dummies
的尾随:'
df = df['col'].str.strip('[]').str.get_dummies(', ')
df.columns = df.columns.str.strip("'")
如果将字符串转换为列表需要进行一些处理以MultiLabelBinarizer
提高性能:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df['col']),columns=mlb.classes_)
print (df)
推荐阅读
- azure - Azure CDN Verizon Premium 隐藏 SAS 令牌 GET 方法错误 403
- authentication - 通过 2 个公共 URL 公开的 Keycloak 服务器
- r - 从年龄分组的人口数据中截断负二项分布
- angular - 从 Angular 上传图片
- tensorflow - 如何在张量流中访问自定义子类中的图层
- java - 打印多个 Primefaces Chart.js
- reactjs - 函数内部的 Jest 模拟函数
- reactjs - React 导航事件监听器被多次调用
- unity3d - Unity OBJECTS 中没有阴影
- javascript - 我正在使用 chart.js 制作图表,但问题是当我单击添加按钮时,包含图表的框不断下降