在“Keras”分类中使用“sklearn”库中的计算类权重函数问题(Python 3.8,仅在 VS 代码中)

PCG*_*PCG 35 python classification scikit-learn keras

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

compute_class_weight() takes 1 positional argument but 3 were given
Run Code Online (Sandbox Code Playgroud)

根据文档,此错误没有意义。该脚本应该有三个输入,但不确定为什么它说只需要一个变量。完整的错误和代码信息如下所示。显然,这仅在 VS 代码中失败。我在 Jupyter 笔记本上进行了测试,工作正常。所以这似乎是 VS code 编译器的问题。有人注意到吗?(我正在使用 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
Run Code Online (Sandbox Code Playgroud)

在 Jupyter 笔记本中,

在此输入图像描述

在此输入图像描述

PCG*_*PCG 91

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

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
Run Code Online (Sandbox Code Playgroud)

  • 原因是只有类权重是位置参数,其他两个应该有参数名称``` class_weights =compute_class_weight( "balanced", # 位置参数classes = np.unique(train_classes), y = train_classes ) ``` (2认同)

小智 10

我通过重新编码配置解决了这个问题。

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)
Run Code Online (Sandbox Code Playgroud)