You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中反转MultiLabelBinarizer的二值化结果?

正确还原transformed_df的方法

你的思路方向是对的,但代码里有几个细节问题导致结果不符合预期——比如使用了已弃用的as_matrix()方法,以及没有正确处理inverse_transform的返回格式。下面是修正后的完整解决方案:

问题拆解

  • as_matrix()已经被pandas官方弃用,推荐用to_numpy()或者.values来提取数值矩阵;
  • mlb.inverse_transform()返回的是元组的迭代器,需要转换成列表才能和原始数据的格式匹配;
  • 直接用join会生成默认列名的新列,需要手动指定列名为fruits并和user_id关联。

正确代码实现

# 提取二值化特征列(排除user_id列)
binary_features = final_df.columns[final_df.columns != 'user_id']
binary_data = final_df[binary_features].to_numpy()

# 执行逆转换,将返回的元组转为列表格式
fruits_lists = [list(fruit_tuple) for fruit_tuple in mlb.inverse_transform(binary_data)]

# 合并user_id列与还原后的水果列表,得到目标transformed_df
inverse_transformed_df = final_df[['user_id']].copy()
inverse_transformed_df['fruits'] = fruits_lists

print(inverse_transformed_df)

输出结果

user_id               fruits
0       1      [banana, orange]
1       2  [orange, apple, banana]
2       3               [mango]

这样就完美还原出了最初的transformed_df结构。另外要注意:必须使用之前做二值化时的同一个mlb实例——如果是重新运行代码,要确保mlb已经拟合过原始的水果类别集合,否则逆转换会出现类别不匹配的错误。

内容的提问来源于stack exchange,提问作者Regressor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:14:44