Целевые данные Sklearn - только целочисленные скаляры могут быть преобразованы в скалярный индекс - PullRequest
0 голосов
/ 17 октября 2019

Я следую этому учебнику , чтобы сгенерировать матрицу путаницы на основе этих данных:

from sklearn.utils.multiclass import unique_labels

twenty_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes'), shuffle=True, random_state=42)
twenty_test = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes'), shuffle=True, random_state=42)

vect = CountVectorizer()
train_vect = vect.fit_transform(twenty_train.data)
test_vect = vect.transform(twenty_test.data)

mnb_clf = MultinomialNB().fit(train_vect, twenty_train.target)
mnb_prd = mnb_clf.predict(test_vect)

plot_confusion_matrix(twenty_test.target, mnb_prd, twenty_test.target_names) 
def plot_confusion_matrix(y_true, y_pred, classes)
    classes = classes[unique_labels(y_true, y_pred)]

В функции plot_confusion_matrix я должен передать истинную цельтестовые данные (fifty_test.target), прогнозируемая цель тестовых данных (mnb_prd, я использую наивный байесовский классификатор) и истинные целевые имена тестовых данных (fifty_test.target).

Однако при переопределении переменных классоввернул ошибку только целочисленные скаляры. Я думаю, что уже установил переменные передачи правильно на основе учебника, так что, возможно, есть что-то, что нужно добавить. Любая помощь приветствуется. Спасибо.

STACK TRACE

Traceback (most recent call last):

  File "<ipython-input-1-32abf4cde70d>", line 1, in <module>
    runfile('C:/Users/Literatures/Text Mining/Exercises/text_mining_assignment.py', wdir='C:/Users/Literatures/Text Mining/Exercises')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Literatures/Text Mining/Exercises/text_mining_assignment.py", line 115, in <module>
    plot_confusion_matrix(twenty_test.target, mnb_prd, twenty_test.target_names, cm_mnb, 'Naive Bayes Confusion matrix')

  File "C:/Users/Literatures/Text Mining/Exercises/text_mining_assignment.py", line 32, in plot_confusion_matrix
    classes = classes[unique_labels(y_true, y_pred)]

TypeError: only integer scalar arrays can be converted to a scalar index
...