sklearn 使用分类器选择 N 最佳

数据挖掘 Python 分类 scikit-学习
2022-02-23 06:57:50

这里是一个非常简单的问题,但似乎无法在通常很棒的 sklearn 文档中找到答案。

我正在使用二进制分类器,但我们可以假设我正在使用LogisticRegression,我想知道是否有一种通用的方法来选择分类器,比如只有 10 个最佳(最确定)数据点?

例如,假设我训练了一个包含 500K 数据点的集合,而我的测试集有 10K 行,而在这 10K 中,我只想选择最有可能成为真阳性的 10 个。这有意义吗?

我已经阅读并一直在使用该class_weights属性,它可以很好地为每个二元结果类赋予更多/更少的权重,但它并不完全适合我想要的,因为它总是给出不同数量的位置预测,而且我真的无法确定分类器对每个分类器的确定程度。

1个回答

class_weight在模型训练过程中用于训练(=拟合)更好的模型(我们称之为clf)。

你的问题是关于选择最确定的预测。您只需要预测概率(对于二元分类,这将是正类的概率)

y_test_predicted_probability = clf.predict_proba(X_test)

然后选择最高的10个点y_test_predicted_probability

#some code to do this
top_picks_indexes = y_test_predicted_probability[:,1].argsort()[-10:] # chose top 10 probabilities for class = 1

# create a vector, Y_top_picks, with all zeros except ones for the selected top probabilities
Y_top_picks = np.zeros(len(X_test))
Y_top_picks[top_picks_indexes] = 1