Я спрашиваю о размерах и т. Д. Я пытаюсь реализовать эту удивительную работу со случайным лесом 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_
RandomForestClassifier
не имеет атрибутовcoef_
, которые можно использовать в качестве весов. Во-вторых, исходя из формы вывода, я думаю, что вы используете атрибутfeature_importances_
изRandomForestClassifier
, что неверно, потому что значения функций не равны коэффициентам, которые вы можете напрямую применить к новому образцу. - person Vivek Kumar   schedule 10.12.2018