首页 文章

在Python中设置分类器输出的阈值

提问于
浏览
3

假设我在Python中有一个训练有素的SVM分类器,标志为“Probability = True”,如下所示:

classifier = SVC(C = 1000000, gamma = 10, probability=True) 
classifier.fit(my_data, the_labels)

当我执行新数据的分类时,我想仅保留概率高于阈值的分类新数据,假设为0.90 . 我怎样才能做到这一点?直到现在我正在做这样的事情,但我被困住了:

labels_predicted = classifier.predict(new_data)
probabilities = classifier.predict_proba(new_data)

第一个命令返回实际标签,第二个命令返回其标签的概率 . 因此,对于每个数据点,我都有其最大似然标签及其所有相关概率属于所有标签 . 但最大似然标签可能是0.4,我不想要它 . 如何只保留具有特定阈值的标签?

1 回答

  • 2

    据我所知,SVC本身不允许以你想要的方式对概率进行阈值处理 . 在构建 labels_predictedprobabilities 之后,您可以执行第二次索引并获取接受的标签 .

    thresh = 0.9
    accepted_probabilities_idx = probabilities.max(axis=1) > thresh
    accepted_labels_predicted = labels_predicted[accepted_probabilities_idx]
    accepted_new_data = pandas.DataFrame(new_data, index=accepted_probabilities_idx)
    

    我不知道你想用ML-probability低的数据做什么 . 该解决方案完全丢弃它 .

相关问题