首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于其他样本概率的样本分类

基于其他样本概率的样本分类
EN

Data Science用户
提问于 2019-05-30 05:21:02
回答 1查看 99关注 0票数 3

我想知道是否有一种方法来训练一个分类器,或者在那之后建立一种分类方法,可以将某些样本分类为前两者之间的某种关系。

例如,我注意到,当我使用来自scikit的predict_proba的RandomForest时,我可以看到一个类被这样预测的概率:[0.3, 0.43, 0.27]。我想做这样的事情:如果| p(class1) - p(class2) | < ε,那么第3类应该被提升。这可能意味着首先使用二进制分类器,然后检查二进制类之间的关系。

为了进一步描述这种情况,第1级和第2级是不同的,第3类具有这两种特征的混合。

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-05-30 17:27:24

这是一种多标签/多输出分类的情况。您有一个数据集,其中几个类对于单个样本是正确的。而且-其中一个类实际上是另外两个类的混合物。这是一个比我们许多人希望的更普遍的问题。

注意:我将把类1、2和3分别重命名为0、1和2;因为这就是sklearn枚举它们的方式。

因此,sklearn's RandomForest支持多标签分类,而不是按以下方式组织数据:

代码语言:javascript
复制
X                   | y
feature1  feature2  | label
--------------------+------
0.1       0.3       | 0
0.2       0.1       | 1
0.7       0.5       | 1
0.8       0.3       | 1
0.6       0.6       | 1 (but also 0 - so probably should be 0 and 1 - class 2?)
0.3       0.9       | 0
0.5       0.5       | 0 (but also 1 - so probably should be both as well- class 2?)

按以下方式组织数据:

代码语言:javascript
复制
X                   | Y
feature1  feature2  | class0?  class1?
--------------------+-----------------
0.1       0.3       | 1        0
0.2       0.1       | 0        1
0.7       0.5       | 0        1
0.8       0.3       | 0        1
0.6       0.6       | 1        1
0.3       0.9       | 1        0
0.5       0.5       | 1        1

换句话说,把你的标签向量变成一个矩阵--也就是说,XY现在都有两个维度。sklearn's RandomForest将接受这样的观点,即内部是fit(),内部是predict()方法(以及predict_proba()内部)。

唯一棘手的一点可能是解释多标签/多输出分类中的predict_proba()输出,例如(注意输入,我正在从内存中执行这段代码):

代码语言:javascript
复制
import numpy as np
from sklearn.ensemble import RandomForestClassifier

X = np.random.random((3, 3))
Y = np.array([[0, 1],
              [1, 0],
              [1, 1]])
model = RandomForestClassifier()
model.fit(X, Y)
model.predict(X)

    np.array([[0., 1.],
              [1., 0.],
              [1., 1.]])

model.predict_proba(X)

    [np.array([[0.6, 0.4],
               [0.7, 0.3],
               [0.1, 0.9]]),
     np.array([[0.9, 0.1],
               [1.,  0. ],
               [0.2, 0.8]])]

总之,predict_proba返回了一个包含两个元素的列表:第一个元素是类0独立于类1的概率,而列表中的第二个元素是类1独立于类0的概率。无论是0级的高概率,还是1级的高概率,都有[1, 1]的预测。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/52885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档