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

t3psigkw  于 2023-01-26  发布在  Python
关注(0)|答案(4)|浏览(240)

我编写的分类器脚本运行良好,最近添加了权重平衡。由于我使用“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

在木星笔记本里

biswetbf

biswetbf1#

在花了很多时间之后,我就是这样修复它的。我仍然不知道为什么,但是当代码修改如下时,它工作得很好。我是在看到一个类似但略有不同的问题的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
wmomyfyw

wmomyfyw2#

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

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)
zyfwsgd6

zyfwsgd63#

你需要使用旧版本的sklearn比你有。对我来说,它的工作与scikit-learn版本0.24.2罚款。

oxiaedzo

oxiaedzo4#

只要按照这个:Why doesn't class_weight.compute_weight() work?
在赋值相关值时,只需要使用class_weight,classes,y项。

相关问题