我正在使用scikit-learn随机森林分类器,我希望通过将成功投票所需的树木数量从大于50%增加到75%来降低FP率,在阅读文档后我不是确定如何做到这一点。有没有人有什么建议。 (我认为应该有办法做到这一点,因为根据文档,分类器的预测方法基于多数投票决定)。所有帮助表示感谢,谢谢!
答案 0 :(得分:1)
假设您现在拥有一个分类器,在所有估算器中使用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]
预测。如果你使用多标签分类,大多数调整都会进行,但我希望这个概念是明确的。