多标签二值化器 - 获取反向转换

3

我在使用Scikit-learn中的MultiLabel Binarizer和One-vs-all分类器时遇到了问题。 我的挑战是一旦获得预测结果,如何获取原始标签。(我分别训练和拟合了one-vs-rest分类器和向量化器)

_labels = load_labels()
mlb = MultiLabelBinarizer()
mlb.fit_transform(_labels)
print mlb.classes_ # this prints the binarized labels

_clf,_vect = load_pickle('./pickles')

for q in queries:
    #query vector q
    X = vect.transform([q])            
    res = clf.predict_proba(X)
    print res #[[ 0.00164113  0.00706595  0.00683465 .... 0.00837984]]

    #this is where I am stuck on what to pass into the inverse_transform to obtain
    preds = mlb.inverse_transform(??)
    print preds

Thanks for your help in advance!


inverse_transform将使用编码将标签转换回类别。因此,inverse_transform的输出是transform的输入。MultilabelBinarizer - skrubber
@sharatpc,抱歉我有点困惑,因为我的模型已经被训练和打包好了,现在我正在从csv文件中重新读取标签并进行'fit_transform',那么我的输入是什么用于 'inverse_transform'呢? - Santino
mlb.fit_transform(_labels) 的输出将作为输入。 - skrubber
谢谢!可以了,非常感谢!请将其作为答案发布,以便我可以接受。 - Santino
1个回答

2
mlb.fit_transform(_labels)的输出将作为inverse_transform的输入。
更多相关信息请参见:Multilabel Binarizer

2
嗨!当你说解决方案应该是:mlb.inverse_transform(mlb.fit_transform(_labels))时,我不太明白。难道你不想要预测值(在这种情况下为res)进行反向转换吗?即-mlb.inverse_transform(mlb.fit_transform(res))?在这种情况下,我的预测值变成了一个无法反向转换的浮点数,我们该怎么办呢? - Crossfit_Jesus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接