我正在使用scikit-learn随机森林分类器,希望通过阅读文档后不确定将成功投票所需的树木数量从50%以上提高到75%来降低FP率。去做这个。有没有人有什么建议。 (我认为应该有一种方法,因为根据文档,分类器的预测方法是基于多数投票决定的)。感谢所有帮助,谢谢!

最佳答案

假设您现在有一个分类器,该分类器在所有估算器中的使用率为75%。如果它得到一个新的样本,并且获胜的可能性是51%-49%,那么您想要它做什么?

之所以使用50%的规则,是因为您提出的决策规则可能会导致您进入分类器说“我无法预测这些样品的标签”的情况。

您可以做的是包装分类器的结果,然后执行您想要的任何计算-

from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
import numpy as np

def my_decision_function(arr):
    diff = np.abs(arr[:,0]-arr[:,1])
    arr [ diff < 0.5 ] = [-1,-1] # if >0.5, one class has more than 0.75 prediction
    return arr


X, y = datasets.make_classification(n_samples=100000, n_features=20,
                                n_informative=2, n_redundant=2)
train_samples = 100  # Samples used for training the models

X_train = X[:train_samples]
X_test = X[train_samples:]
y_train = y[:train_samples]
y_test = y[train_samples:]

clf = RandomForestClassifier().fit(X_train,y_train)
print my_decision_function(clf.predict_proba(X_train))


现在,对于至少一个类别,每个小于0.75%的样本将具有[-1,-1]预测。如果您使用多标签分类,则最需要进行一些调整,但是我希望这个概念很清楚。

关于machine-learning - 降低FP率scikit学习随机森林,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31119823/

10-12 17:40