1

我在问维度等。我正在尝试用随机森林来实现这个惊人的工作 https://www.kaggle.com/allunia/how-to-attack-a-machine-learning-model/notebook

逻辑回归和随机森林都来自 sklearn 但是当我从随机森林模型中获得权重时,它的 (784,) 而逻辑回归返回 (10,784)

我的大多数问题主要是维度和 NaN、无穷大或对于攻击方法的 dtype 错误而言太大的值。使用逻辑回归的权重是 (10,784) 但使用随机森林 (784,) 可能会导致问题吗?或者您能建议对攻击方法进行一些修改吗?我为 NaN 值错误尝试了 Imputer,但它希望我重塑,所以我得到了这个。我尝试将 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_
4

0 回答 0