在“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

如何使用 sklearn 管道缩放 Keras 自动编码器模型的目标值?

Keras 神经网络和 SKlearn SVM.SVC