在“Keras”分类中使用“sklearn”库中计算类权重函数问题(Python 3.8,仅在 VS 代码中)
Posted
技术标签:
【中文标题】在“Keras”分类中使用“sklearn”库中计算类权重函数问题(Python 3.8,仅在 VS 代码中)【英文标题】:Compute class weight function issue in 'sklearn' library when used in 'Keras' classification (Python 3.8, only in VS code) 【发布时间】:2021-12-15 09:58:03 【问题描述】:我编写的分类器脚本运行良好,并且最近在配件中添加了重量平衡。由于我使用“sklearn”库添加了权重估计函数,因此出现以下错误:
compute_class_weight() takes 1 positional argument but 3 were given
根据文档,此错误没有意义。该脚本应该有三个输入,但不确定为什么它说只需要一个变量。完整的错误和代码信息如下所示。显然,这仅在 VS 代码中失败。我在 Jupyter 笔记本中进行了测试并且工作正常。所以这似乎是 VS 代码编译器的问题。有通知吗? (我正在使用 Python 3.8 和其他最新的其他库)
from sklearn.utils import compute_class_weight
train_classes = train_generator.classes
class_weights = compute_class_weight(
"balanced",
np.unique(train_classes),
train_classes
)
class_weights = dict(zip(np.unique(train_classes), class_weights)),
class_weights
在 Jupyter Notebook 中,
【问题讨论】:
【参考方案1】:花了很多时间后,这就是我修复它的方法。我仍然不知道为什么,但是当代码修改如下时,它工作正常。在看到 this 解决类似但略有不同的问题后,我得到了这个想法。
class_weights = compute_class_weight(
class_weight = "balanced",
classes = np.unique(train_classes),
y = train_classes
)
class_weights = dict(zip(np.unique(train_classes), class_weights)),
class_weights
【讨论】:
【参考方案2】:您需要使用旧版本的 sklearn。 对我来说,它适用于 scikit-learn 版本 0.24.2。
【讨论】:
这更像是一种解决方法,而不是答案以上是关于在“Keras”分类中使用“sklearn”库中计算类权重函数问题(Python 3.8,仅在 VS 代码中)的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Keras 和 Sklearn 将字符串列转换为分类矩阵
二元分类 predict() 方法:sklearn vs keras
TensorFlow 低级模型(没有 Keras 和 Sklearn) - 每一步都获得损失 = 0 和准确度 = 100%
Keras 分类器上的准确率、召回率和 FMeasure 的 Sklearn Metrics