查找最相关的三个类别及其相应的概率

从下面的脚本中,我找到了多类文本分类问题中最高的概率及其对应的类别。我想知道如何以最有效的方式找到最高的前三预测概率及其对应的类别,并且不使用循环。

probabilities = classifier.predict_proba(X_test)max_probabilities = probabilities.max(axis=1)order=np.argsort(probabilities, axis=1)classification=(classifier.classes_[order[:, -1:]])print(accuracy_score(classification,y_test))

提前感谢您。(我有大约50个类别,我想从中提取每个叙述中最相关的三个类别,并将它们显示在数据框中)


回答:

您已经完成了大部分艰难的工作,只差一点numpy技巧就可以完成。您的这行代码

order = np.argsort(probabilities, axis=1)

包含了排序后的概率索引,因此每个样本的格式为[[最低概率类别1, ..., 最高概率类别1]...]。您已经用order[:, -1:]来给出分类,即最高概率类别的索引。因此,要获得前三个类别,我们可以进行简单的修改

top_3_classes = classifier.classes_[order[:, -3:]]

然后,要获取相应的概率,我们可以使用

top_3_probabilities = probabilities[np.repeat(np.arange(order.shape[0]), 3),                                    order[:, -3:].flatten()].reshape(order.shape[0], 3)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注