我目前正在将H2O用于分类问题数据集。我正在H2ORandomForestEstimator
python
3.6环境中对其进行测试。我注意到预测方法的结果是给出0到1之间的值(我假设这是概率)。
在我的数据集中,目标属性是数字,即True
值是1且False
值是0。我确保将类型转换为目标属性的类别,但仍得到相同的结果。
然后我修改了代码,asfactor()
仍然使用H2OFrame上的方法将目标列转换为因数,结果没有任何变化。
但是,当我分别将target属性中的值分别更改为1和0的True和False时,我得到了预期的结果(即输出)是分类而不是概率。
从原理和理论上讲,硬分类和软分类(即分别返回 类 和 概率
)是不同的方法,每种方法都有其优点和缺点。例如,从论文硬分类还是软分类中考虑以下内容?大利润统一机:
基于边距的分类器已在机器学习和分类问题的统计中广受欢迎。在众多分类器中,有些是 硬 分类器,而有些是 软
分类器。软分类器显式估计类的条件概率,然后根据估计的概率执行分类。相反,硬分类器直接针对分类决策边界,而不产生概率估计。这两种类型的分类器基于不同的哲学,每种都有其优点。
也就是说,实际上,当今使用的大多数分类器,包括随机森林(我能想到的唯一例外是SVM系列)实际上都是 软
分类器:它们在底层实际产生的是类似于概率的量度,其后,结合隐式 阈值 (在二进制情况下,默认情况下通常为默认 值
0.5)会产生硬类成员资格,例如0/1
或True/False
。
什么是获得分类预测结果的正确方法?
对于初学者来说,从概率到困难的类别总是可能的,但事实并非如此。
一般而言,考虑到您的分类器实际上是一个 软
分类器,仅对最终的硬分类器(True/False
)进行分类就可以给该过程带来“黑匣子”味道,这在原则上应该是不受欢迎的;直接处理产生的概率,并且(重要!)明确控制
决策阈值
应该是此处的首选方法。根据我的经验,这些都是新手往往会迷失的精妙之处。从“交叉验证线程分类”概率阈值中考虑以下内容:
当您为新样本的每个类别输出概率时,练习的统计部分结束。选择一个阈值,将新观察值分类为1 vs. 0不再是 统计信息的 一部分。它是 决策
组件的一部分。
除了上面提到的“软”自变量(非双关语)外,在某些情况下,您 需要
直接处理基础的概率和阈值,即二进制分类中默认阈值0.5会使您误入歧途,尤其是在您的课堂上不平衡
有关此类情况的具体示例,请参见我在高AUC中的答案,但对于不平衡数据(及其中的链接)的错误预测。
老实说,我对您报告的H2O行为感到惊讶(我个人没有使用过),即输出的种类受输入的表示形式影响;事实并非如此,如果确实如此,我们可能会遇到设计不良的问题。比较scikit-
learn中的Random Forest分类器,它包括两种不同的方法,predict
和predict_proba
,分别获得硬分类和潜在概率(并检查文档,很明显,的输出predict
基于
概率估计 ,之前已经计算过)。
如果概率是数字目标值的结果,那么在进行多类分类时如何处理?
原则上,这里没有什么新内容,除了简单的阈值不再有意义的事实之外;再次,来自predict
scikit-
learn中的Random Forest文档:
预测类别是具有最高平均概率估计的类别
也就是说,对于3个类别(0, 1, 2)
,您将获得的估计值[p0, p1, p2]
(根据概率规则,元素加总为1),而预测的类别是概率最高的类别,例如,对于,类别为#1 [0.12, 0.60, 0.28]
。这是3类虹膜数据集的可重现示例(用于GBM算法和R中,但基本原理相同)。
问题内容: 如果我将Class声明为字段: Eclipse给我警告: 类是原始类型。对泛型类型Class的引用应参数化 在实践中这意味着什么?我为什么要这样做呢?如果我要求Eclipse提供“快速修复”,它将给我: 这似乎并没有增加太多价值,但不再发出警告。 编辑:为什么类通用?您能否举一个参数化的例子,即可以有效使用除以外的东西吗? 编辑:哇!我还没有意识到这一点。我也看过Java拼图游戏,这肯
问题内容: 什么时候使用,最好使用vs ? 最好使用html上的说字体变体或元素吗?然后用于结构/容器吗? 这一直是我一直不确定的事情,任何帮助都会很棒。 问题答案: 使用识别元素只会出现在页面上的单个实例。例如,如果您将单个导航栏放置在特定位置,请使用。 用于对所有以某种特定方式表现的元素进行分组。例如,如果您希望公司名称在正文中以粗体显示,则可以使用。
问题内容: 您好,我正在编写一个Android应用程序,并且已经设置了Proguard来混淆我的应用程序。但是,我使用类加载器为应用程序动态加载了不同的扩展。问题在于,如果更改了它们的名称,它们将无法正确加载。如何防止Proguard混淆特定的类名? 问题答案: 使用proguard.cfg中的选项 请参阅手册 https://www.guardsquare.com/en/proguard/man
问题内容: 我试过重新安装netbeans,试过重新安装java。我不确定发生了什么,但是我从每个类中都随机得到此异常,直到重新启动netbeans。有类似问题的人吗? 跑: 问题答案: 有时,NetBeans本地缓存目录会损坏(由于应用程序更早崩溃或发生其他/未定义的情况)。NetBeans开始表现异常。重新安装没有帮助,因为本地缓存目录并不总是被删除。 如果您100%确定您的应用程序没有路径问
问题内容: 是否可以使第n个子级伪选择器与特定类一起使用? 我想让第二个DIV.red变成红色,但是它没有应用预期的颜色。 不仅如此,当您指定它时,它会将第5个DIV更改为红色: 指定此选项后,它将第8个DIV更改为红色: 它似乎落后了一个DIV。该示例中只有8个DIV标签,所以我不知道为什么nth-child(9)甚至可以工作。使用Firefox 3.6进行测试,但在我的实际生产代码中,Chro
问题内容: 在python中,我可以使用装饰器向类添加方法。是否有类似的装饰器将属性添加到类?我可以更好地表明我在说什么。 我上面使用的语法是否可能还是需要更多的语法? 我想要类属性的原因是可以延迟加载类属性,这似乎很合理。 问题答案: 这是我的处理方式: 在我们打电话时,设置员没有工作 ,因为我们正在打电话 ,而不是。 添加元类定义可以解决此问题: 现在一切都会好起来的。