Создание случайных лесных выходов типа логистической регрессии - PullRequest
0 голосов
/ 10 декабря 2018

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

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

Большинство моих проблем - это в основном измерение и NaN, бесконечность или слишком большое значение для ошибок типа d с методами атаки.Веса, использующие логическую регрессию, равны (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_
...