小编Eth*_*lla的帖子

MultiLabelBinarizer 在逆变换时混合数据

我正在使用sklearnmultilabelbinarizer()来训练我的机器学习中的多个列,我用它来训练我的模型。

使用它后,我注意到它在逆变换时混淆了我的数据。我创建了一组随机值的测试集,在其中拟合数据、对其进行转换,然后inverse_transform将数据恢复为原始数据。

我进行了一个简单的测试jupyter笔记本上进行了一个简单的测试以显示错误:

inverse_transformed第 1 行的值中,它混淆了州和月份。

jupyter笔记本代码

首先,我的使用方式是否有错误multilabelbinarizer?有没有不同的方法来实现相同的输出?

编辑: 感谢@Nicolas M. 帮助我解决我的问题。我最终像这样解决了这个问题。

请原谅我的粗略解释,但结果比我最初想象的要复杂。我改用 thelabel_binarizer而不是multi_label_binarizer因为它

我最终腌制了label_binarizer defaultdict以便我可以加载它并在我的机器学习项目的不同模块中使用它。

一件可能不简单的事情是我向为每一列制作的数据帧添加新标题。它采用列名+列号的形式。我这样做是因为我需要对数据进行逆变换。为此,我搜索了包含原始列名称的列,该列名称将较大的数据帧分隔成各个列块。

这里是我使用的一些变量及其含义供参考:
lb_dict- 存储不同标签二值化器的默认字典。
binarize_df- 存储二进制数据的数据框。
binarized_label- label 将列中的一个标签二值化。
header- 创建一个新的标题形式:列名+数字列。

inverse_df- 存储逆变换数据的数据帧。
one_label_list- 查找具有原始列标签的列名称列表。
one_label_df- 创建一个新的数据框,仅存储一列的二值化数据。
single_label- 被反向转换成一列的二值化数据。

在此代码中,数据是我传递给函数的数据帧。

lb_dict = defaultdict(LabelBinarizer)
# create a place holder dataframe to join new binarized data to
binarize_df = pd.DataFrame(['x'] …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas multilabel-classification sklearn-pandas

-3
推荐指数
1
解决办法
1097
查看次数