如何使用类似于Scikit类权重的Logistic回归张量流估计

2024-04-23 22:49:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个基本的二进制逻辑回归模型移植到tensorflow,我想使用Estimator类,因为我只需要一个简单的模型。但是,由于我的两个类是不平衡的,sklearn版本使用了class\u weight参数。我看不到估计量的等效变量。你知道吗

我试图获得与以下功能相同的功能:

class_weight = {"false": 1, "true": 10}
model = sklearn.linear_model.LogisticRegression(class_weight = class_weight)
model.fit(X, Y)

我试过使用weight\列,但它似乎没有正确训练。它有更多的假阳性,由于阶级不平衡没有得到适当的考虑。我也尝试过改变损失函数,但我看到的每个例子都不适用于估计器框架:Weighted Training Examples in Tensorflow

def input_fn(X, Y):
  features = dict(X)
  features['weight'] = np.ones(len(X))
  dataset = tf.data.Dataset.from_tensor_slices((features, Y))
  return dataset.repeat(1).batch(len(Y)) # 1 epoch, no batching

model = tf.estimator.LinearClassifier(feature_columns, weight_column='weight')
model.train(input_fn: lambda: batching_fn(X, Y)

但这样做会使精确度降低6%左右,这是相当显著的。而且大部分都来自误报,所以模型没有正确地对阴性/假病例进行过采样。你知道吗


Tags: 模型功能inputmodellentf二进制逻辑