在我的工作中,有一个功能集完全由布尔数据组成,并且有属于这些功能的类。类是字符串
feature set class (String)
[True False True ...] "A"
[True True True ...] "B"
[True True False ...] "C"
当我用随机森林算法训练这些数据时
factor = pd.factorize(classes)
classes = factor[0]
classifier = RandomForestClassifier(n_estimators=100, criterion="entropy", random_state=0)
classifier.fit(x_train, classes)
分类器可以正确检测97%的类。当我这样做的时候
classifier.predict_proba(sample1_feature_set)
它给出了样本1中每个类别的相对概率。例如像
[0.80 0.05 0.15]
↓ ↓ ↓
Prob. Prob. Prob.
of of of
"A" "B" "C"
for for for
sample1 sample1 sample1
因此,当我添加list的值(0.80+0.05+0.15)时,结果总是1。这表明它实际上进行了相对评估,即一类的概率影响另一类的概率
我想得到样本1中所有类的独立概率,比如
[0.95 0.69 0.87]
↓ ↓ ↓
Prob. Prob. Prob.
of of of
"A" "B" "C"
for for for
sample1 sample1 sample1
样本1是“A”类的%95、“B”类的%69和“C”类的%87。你知道我怎么做吗
predict_prob
计算每个类别一个样本的概率。[0.95 0.05]表示在模型的95%决策树中,这些唯一样本的输出为0类;5%为一级。因此,您正在逐个评估每个样本当您这样做时:
对于
example_feature_set
的第一个样本,您将获得成为每个类的概率我想你想要的是每门课的准确度或召回率。(如果您不熟悉,请检查这些分数的含义)
要计算这些,我建议使用以下代码:
然后,您将获得一些可以帮助您的措施
随机林是一个ensemble method。基本上,它使用不同的数据子集(称为bagging)构建单独的决策树,并对所有树的预测进行平均,以给出概率。“帮助”页实际上是一个很好的起点:
因此,概率总和总是为一。下面是如何访问每个树的单个预测的示例:
这是对第一棵树的预测:
我们记录了所有树木:
将其除以树的数量,即可得出您之前获得的概率:
相关问题 更多 >
编程相关推荐