python - 使用 class_weight 来不平衡数据-.fit_generator()

标签 python machine-learning keras deep-learning cross-entropy

我有两个类别的不平衡数据集。我正在使用categorical_crossentropy。我想知道我的代码。将 class_weightcategorical_crossentropy 一起使用是否正确?如果是,class_weight 仅应用于训练集还是整个数据?

我搜索了很多次,但没有找到任何有用的网站。任何帮助将不胜感激。

我的代码:

model.compile(loss='categorical_crossentropy', optimizer=opt_adam, metrics=['accuracy'])
history=model.fit_generator(generate_arrays_for_training(indexPat, train_data, start=0,end=100)
validation_data=generate_arrays_for_training(indexPat, test_data, start=0,end=100)
steps_per_epoch=int((len(train_data)/2)), 
                                validation_steps=int((len(test_data)/2)),
                                verbose=2,class_weight = {0:1, 1:1.181},
                                epochs=65, max_queue_size=2, shuffle=True)

最佳答案

是的,您可以将类别权重与分类交叉熵结合使用。计算损失函数时应用权重。错误的分类将根据权重进行处罚。因此权重既不应用于验证集也不应用于测试集。这个想法是在训练时模型给予一个类更多的关注并相应地更新权重。

这就是为什么在测试或验证时,学习到的权重将隐含地相对于类别权重存在偏差。

代码中唯一的问题可能是类权重。权重可能必须加起来为 1,但您应该检查库的详细信息。

关于python - 使用 class_weight 来不平衡数据-.fit_generator(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65834886/

相关文章:

python - 唯一化返回一个空列表

python - 添加和删​​除 SVM 参数而无需完全重新训练

python - 查找多个 RGB 图像中值的有效方法

python - 高效的余弦距离计算

python - Keras:训练期间和纪元结束时的不同验证 AUROC

r - R 中的关联规则 RAM 不足

python - 事件关联和过滤——如何,从哪里开始?

python - 在 scikit-learn 中运行 Randomforest 的 MemoryError

python - Keras 的 predict_generator 没有返回正确数量的样本

tensorflow - KERAS model.summary 中的 "None"是什么意思?