如何在 Orange 中使用样本权重进行随机森林分类?
How to use sample weights for a random forest classificator in Orange?
我正在尝试在一个非常不平衡的数据集上训练随机森林 classificator,其中包含 2 classes(良性-恶性)。
我看过并遵循了上一个问题 () 的代码,并尝试为少数 class 数据实例设置各种更高的权重,但是 classificators我得到的工作完全一样。
我的代码:
data = Orange.data.Table(filename)
st = Orange.classification.tree.SimpleTreeLearner(min_instances=3)
forest = Orange.ensemble.forest.RandomForestLearner(learner=st, trees=40, name="forest")
weight = Orange.feature.Continuous("weight")
weight_id = -10
data.domain.add_meta(weight_id, weight)
data.add_meta_attribute(weight, 1.0)
for inst in data:
if inst[data.domain.class_var]=='malign':
inst[weight]=100
classifier = forest(data, weight_id)
我是不是漏掉了什么?
简单的树学习器很简单:它针对速度进行了优化,不支持权重。我想如果指定了权重参数,Orange 中不支持权重的学习算法应该引发异常。
如果您只是为了更改 class 分布而需要它们,请改为乘以数据实例。创建一个新数据 table 并添加每个恶性肿瘤实例的 100 个副本。
我正在尝试在一个非常不平衡的数据集上训练随机森林 classificator,其中包含 2 classes(良性-恶性)。
我看过并遵循了上一个问题 (
我的代码:
data = Orange.data.Table(filename)
st = Orange.classification.tree.SimpleTreeLearner(min_instances=3)
forest = Orange.ensemble.forest.RandomForestLearner(learner=st, trees=40, name="forest")
weight = Orange.feature.Continuous("weight")
weight_id = -10
data.domain.add_meta(weight_id, weight)
data.add_meta_attribute(weight, 1.0)
for inst in data:
if inst[data.domain.class_var]=='malign':
inst[weight]=100
classifier = forest(data, weight_id)
我是不是漏掉了什么?
简单的树学习器很简单:它针对速度进行了优化,不支持权重。我想如果指定了权重参数,Orange 中不支持权重的学习算法应该引发异常。
如果您只是为了更改 class 分布而需要它们,请改为乘以数据实例。创建一个新数据 table 并添加每个恶性肿瘤实例的 100 个副本。