python - 使用单热编码将列表转换为二进制值

标签 python pandas machine-learning categorical-data one-hot-encoding

我在 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)

关于python - 使用单热编码将列表转换为二进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67787431/

相关文章:

machine-learning - 处理 Logistic 回归的 NaN(缺失)值 - 最佳实践?

python - Keras 损失一直很低,但准确性开始很高然后下降

python - 这是 str.format 上的 Python 3 错误吗?

python Pandas : fluent setter for DataFrame index?

python - 请求发布的依赖于操作系统的行为

python - 如何从数据框中按行删除空单元格

python - 使用常量初始化数据帧

validation - 使用 Encog 正确训练和验证

python - 从文本文件中删除重复项

python - 我的解决方案和算法有什么问题