[Python] Facing ValueError: Target is multiclass but average='binary'

Discussão em 'Python' iniciado por Stack, Setembro 24, 2024.

  1. Stack

    Stack Membro Participativo

    I'm trying to use Naive Bayes algorithm for my dataset. I'm able to find out the accuracy but trying to find out precision and recall for the same. But, it is throwing the following error:

    ValueError: Target is multiclass but average='binary'. Please choose another average setting.


    Can anyone please suggest me how to proceed with it. I have tried using average ='micro' in the precision and the recall scores. It worked without any errors but it is giving the same score for accuracy, precision, recall.

    My dataset:

    train_data.csv:

    review,label
    Colors & clarity is superb,positive
    Sadly the picture is not nearly as clear or bright as my 40 inch Samsung,negative


    test_data.csv:

    review,label
    The picture is clear and beautiful,positive
    Picture is not clear,negative


    My code:

    import pandas as pd
    from sklearn.feature_extraction.text import CountVectorizer
    from sklearn.naive_bayes import MultinomialNB
    from sklearn.metrics import precision_score
    from sklearn.metrics import recall_score
    from sklearn.metrics import confusion_matrix

    X_train, y_train = pd.read_csv('train_data.csv')
    X_test, y_test = pd.read_csv('test_data.csv')

    vec = CountVectorizer()
    X_train_transformed = vec.fit_transform(X_train)
    X_test_transformed = vec.transform(X_test)

    clf = MultinomialNB()
    clf.fit(X_train_transformed, y_train)

    score = clf.score(X_test_transformed, y_test)

    y_pred = clf.predict(X_test_transformed)
    cm = confusion_matrix(y_test, y_pred)

    precision = precision_score(y_test, y_pred, pos_label='positive')
    recall = recall_score(y_test, y_pred, pos_label='positive')

    Continue reading...

Compartilhe esta Página