Создание выходов случайного леса, таких как логистическая регрессия

Я спрашиваю о размерах и т. Д. Я пытаюсь реализовать эту удивительную работу со случайным лесом https://www.kaggle.com/allunia/how-to-attack-a-machine-learning-model/notebook

И логистическая регрессия, и случайный лес взяты из sklearn, но когда я получаю веса из модели случайного леса, это (784,), а логистическая регрессия возвращает (10,784)

Мои самые большие проблемы - это в основном размерность и NaN, бесконечность или слишком большое значение для ошибок dtype с методами атаки. Веса с использованием логической регрессии равны (10,784), но со случайным лесом (784,) может быть это вызвало проблему? Или вы можете предложить какие-то модификации методов атаки? Я попробовал Imputer для ошибки значений NaN, но он хотел, чтобы я изменил форму, поэтому у меня есть это. Я попытался применить np.mat для ошибок измерения, которые я получаю, но они не сработали.

def non_targeted_gradient(target, output, w):
    target = target.reshape(1, -1)
    output = output.reshape(1, -1)
    w = w.reshape(1,-1)
    target = imp.fit_transform(target)
    output = imp.fit_transform(output)
    w = imp.fit_transform(w)
    ww = calc_output_weighted_weights(output, w)
    for k in range(len(target)):
        if k == 0:
            gradient = np.mat((1-target[k])) * np.mat((w[k]-ww))
        else:
            gradient += np.mat((1-target[k])) * np.mat((w[k]-ww))
    return gradient

Я, вероятно, делаю много чего неправильно, но TL; DR - это то, что я пытаюсь применить случайный лес вместо логистической регрессии по ссылке выше.

Изменить:

Я добавил обертку для randomforestclassifier:

class RandomForestWrapper(RandomForestClassifier):
    def fit(self, *args, **kwargs):
        super(RandomForestClassifierWithCoef, self).fit(*args, **kwargs)
        self.coef_ = self.feature_importances_

person Jeredriq Demas    schedule 10.12.2018    source источник
comment
Во-первых, RandomForestClassifier не имеет атрибутов coef_, которые можно использовать в качестве весов. Во-вторых, исходя из формы вывода, я думаю, что вы используете атрибут feature_importances_ из RandomForestClassifier, что неверно, потому что значения функций не равны коэффициентам, которые вы можете напрямую применить к новому образцу.   -  person Vivek Kumar    schedule 10.12.2018
comment
@VivekKumar Я сделал это, как показано выше, и вы правы, дорогой сэр, удивительное предположение. Так что же мне делать вместо этого?   -  person Jeredriq Demas    schedule 10.12.2018
comment
Нет, я не думаю, что это можно легко сделать. Деревья решений используют другую стратегию для поиска классов, поэтому, возможно, вам нужно найти соответствующие документы, содержащие теорию состязательных атак для деревьев решений, а затем реализовать их.   -  person Vivek Kumar    schedule 10.12.2018
comment
@VivekKumar, можешь тоже взглянуть на этот вопрос? stackoverflow.com/questions/53827086   -  person Jeredriq Demas    schedule 18.12.2018