如何对Sklearn LabelBinarizer的单个编码值执行逆变换?
LabelBinarizer逆变换单个样本报错的解决方法
背景代码与问题
首先用LabelBinarizer完成数据编码:
reviewerLe = LabelBinarizer() reviewerIDs = reviewerLe.fit_transform(df['reviewerID'])
查看单个样本的输出和形状:
print(reviewerIDs[1]) reviewerIDs[1].shape
输出结果:
[0 0 0 ... 0 0 0] (4975,)
尝试对单个样本执行逆变换时:
reviewerLe.inverse_transform(reviewerIDs[1])
触发错误:
axis 1 is out of bounds for array of dimension 1
官方文档要求
inverse_transform(Y, threshold=None)
Y{ndarray, sparse matrix} of shape (n_samples, n_classes)Target values. All sparse matrices are converted to CSR before inverse transformation.
解决方案
确实需要将一维数组重塑为**(1, 4975)**的二维形状,因为inverse_transform要求输入必须是「样本数×类别数」的二维结构,而reviewerIDs[1]是一维数组(仅代表单个样本的类别编码)。
以下是几种可行的重塑方式:
- 方法1:使用
reshape
# 重塑为(1, 4975),-1自动匹配剩余维度 single_sample = reviewerIDs[1].reshape(1, -1) reviewerLe.inverse_transform(single_sample)
- 方法2:使用
np.expand_dims
import numpy as np # 在第0轴添加维度,将一维转为二维 single_sample = np.expand_dims(reviewerIDs[1], axis=0) reviewerLe.inverse_transform(single_sample)
- 批量处理少量样本
如果要处理多个样本(比如前3个),直接切片即可,切片结果本身就是二维数组:
reviewerLe.inverse_transform(reviewerIDs[:3])
内容的提问来源于stack exchange,提问作者Dots
相关产品推荐
相关产品推荐

