Динамическая взвешенная функция большинства в python для переменной длины входов - PullRequest
0 голосов
/ 30 ноября 2018

Я реализовал функцию с Python 3.6 с именем Dynamic Weighted Majority (DWM в коде ниже), которую я использую в задачах классификации.

def DWM(weights, y_predicts):
results = [] * 5

for k in range(5):
    temp0_sum = 0.0
    temp1_sum = 0.0
    for m in range(4):
        if y_predicts[m][k] == 0:
            temp0_sum += weights[m]
        elif y_predicts[m][k] == 1:
            temp1_sum += weights[m]

    if temp0_sum > temp1_sum:
        results.append(0)
    elif temp0_sum < temp1_sum:
        results.append(1)
    for m in range(4):
        if y_predicts[m][k] == results[k]:
            weights[m] = weights[m]
        elif y_predicts[m][k] != results[k]:
            weights[m] *= 0.5

return results, weights

weights = [1, 1, 1, 1]
y_predicts = [] * len(weights)
y_predicts.append([1, 1, 0, 0, 1])
y_predicts.append([1, 1, 0, 1, 0])
y_predicts.append([0, 1, 0, 0, 0])
y_predicts.append([1, 1, 0, 0, 0])

results, weights = DWM(weights, y_predicts)
print(results)
print(weights)

Здесь, в этом коде (для моей проблемы классификации), каждая точка данных представляет собой список длиной 5, что означает, что у нас есть 5 атрибутов для каждых данных.

у нас есть ансамбль из 4 классификаторов и списка весов в качестве их весов.эта функция принимает 2 списка в качестве входных данных:

  1. weights: веса ансамбля классификаторов с 4 классификаторами
  2. y_predicts: список, в котором хранятся результаты каждого классификатора

выходные данные:

  1. результаты: конечные метки, которые DWM рассчитывает для данных.
  2. веса: обновленные веса классификаторов

В функции DWM, основанной на значениях y_predicts (0 или 1 как два класса в задаче классификации), мы вычисляем сумму весов для каждого класса.Значение для каждого элемента результатов списка устанавливается в 1 или 0 в зависимости от размера temp1_sum или temp0_sum.

проблема в том, что количество классификаторов в ансамбле варьируется и поэтому количество элементов всписок весов изменится.я понятия не имею, как изменить функцию DWM, чтобы иметь дело со списком веса переменной длины.

...