compute_class_weight() takes 1 positional argument but 3 were given

调用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)

你可能感兴趣的:(sklearn,python,人工智能)