调用sklearn的compute_class_weight提示错误”compute_class_weight() takes 1 positional argument but 3 were given“
这是因为comput_class_weight传入的时候最好把关键字带上,如果不带上关键字,可以会被认为只有一个参数,这是sklearn中的源码。
def compute_class_weight(class_weight, *, classes, y):
"""Estimate class weights for unbalanced datasets.
Parameters
----------
class_weight : dict, 'balanced' or None
If 'balanced', class weights will be given by
``n_samples / (n_classes * np.bincount(y))``.
If a dictionary is given, keys are classes and values
are corresponding class weights.
If None is given, the class weights will be uniform.
classes : ndarray
Array of the classes occurring in the data, as given by
``np.unique(y_org)`` with ``y_org`` the original class labels.
y : array-like of shape (n_samples,)
Array of original class labels per sample.
Returns
-------
class_weight_vect : ndarray of shape (n_classes,)
Array with class_weight_vect[i] the weight for i-th class.
References
----------
The "balanced" heuristic is inspired by
Logistic Regression in Rare Events Data, King, Zen, 2001.
"""
后面发现是传入y的参数的时候,label是2维的,label的维度是(1000,1)要把它变成(1000,)就可以。
labels = np.zeros((200,1))
labels[0:2][0] = 1
classes = [0, 1]
weight = compute_class_weight(class_weight='balanced', classes=classes, y=label.reshape(-1)
print(weight)