2015-06-24 3 views
0

Я пытаюсь обучить случайный классификатор леса по очень несбалансированному набору данных с 2 классами (доброкачественный).Как использовать весовые коэффициенты для случайного классификатора леса в Orange?

Я видел и следовал коду предыдущего вопроса (How to set up and use sample weight in the Orange python package?) и пытался установить различные более высокие веса для экземпляров данных класса меньшинства, но классификаторы, которые я получаю, работают точно так же.

Мой код:

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) 

ли я что-то отсутствует?

ответ

0

Простой ученик дерева прост: он оптимизирован для скорости и не поддерживает веса. Я думаю, что алгоритмы обучения в Orange, которые не поддерживают вес, должны вызывать исключение, если указан весовой аргумент.

Если вам нужны только для того, чтобы изменить распределение классов, вместо этого умножьте экземпляры данных. Создайте новую таблицу данных и добавьте 100 экземпляров каждого экземпляра злокачественной опухоли.

Смежные вопросы