在 'Keras' classification 中使用 'sklearn' 库时计算 class 权重函数问题(Python 3.8,仅在 VS 代码中)

Compute class weight function issue in 'sklearn' library when used in 'Keras' classification (Python 3.8, only in VS code)

我编写的分类器脚本运行良好,最近为配件添加了重量平衡。由于我使用 'sklearn' 库添加了重量估计函数,因此出现以下错误:

compute_class_weight() takes 1 positional argument but 3 were given

根据文档,此错误没有意义。该脚本应该有三个输入,但不确定为什么它说只需要一个变量。完整的错误和代码信息如下所示。显然,这仅在 VS 代码中失败。我在 Jupyter notebook 上测试过并且工作正常。所以这似乎是 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 中,

在花了很多时间之后,我就是这样修复它的。我仍然不知道为什么,但是当代码如下修改时,它工作正常。在看到 类似但略有不同的问题的解决方案后,我有了这个想法。

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

您需要使用旧版本的 sklearn。 对我来说,它适用于 scikit-learn 版本 0.24.2.

我通过记录配置解决了这个问题。

from sklearn.utils.class_weight import compute_class_weight
class_weights = compute_class_weight(class_weight = "balanced", classes= np.unique(train_labels), y= train_labels)