Матрица путаницы получает ошибку значения

Я пытаюсь создать матрицу путаницы с помощью научного набора для изучения набора данных об эпилепсии из https://archive.ics.uci.edu/ml/datasets/Epileptic+Seizure+Recognition

после подготовки, выполнения перекрестной проверки и моделирования я получил следующий результат (я отметил скриншот):

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

    from sklearn.metrics import confusion_matrix
    conf = confusion_matrix(pred["y"], pred["PredictedLabel"])
    print(conf)

введите здесь описание изображения

Как я могу решить эту проблему?


person Saeid Hedayati    schedule 22.04.2018    source источник


Ответы (2)


В случае разногласий в типах значений в кадре данных попробуйте преобразовать двойные числа (при условии, что они двойные) в строку. Пытаться,

conf = confusion_matrix(pred["y"].values.astype(int).astype(str), pred["PredictedLabel"].values)
conf = pd.DataFrame(conf)

И если вам нужны ярлыки, вы можете добавить их обратно,

my_columns = ["y", "PredictedLabel"]
conf.columns = my_columns
print(conf)
person 10donovanr    schedule 22.04.2018
comment
Большой. Если это удовлетворило вашу цель, пожалуйста, примите ответ (флажок рядом с моим ответом), чтобы помочь мне лучше помогать другим в будущем. Удачного кодирования. - person 10donovanr; 23.04.2018

Вы можете преобразовать как предсказанную, так и истинную метку в str:

conf = confusion_matrix(pred["y"].astype(str), pred["PredictedLabel"].astype(str))

Пытаясь воссоздать аналогичную проблему, рассмотрим следующий случай, когда предсказание и истина являются разными типами:

import pandas as pd
from sklearn.metrics import confusion_matrix

pred = pd.DataFrame()
pred["y"] = [1,2,3]
pred["PredictedLabel"] = ['1','2','3']
conf = confusion_matrix(pred["y"], pred["PredictedLabel"])
print(conf)

Выдает ошибку: ValueError: Mix of label input types (string and number).

Если вы преобразуете их оба в тип str (вы также можете использовать другие как int или float, где оба должны быть одинаковыми, хотя для предсказанных и истинных меток):

import pandas as pd
from sklearn.metrics import confusion_matrix

pred = pd.DataFrame()
pred["y"] = [1,2,3]
pred["PredictedLabel"] = ['1','2','3']
conf = confusion_matrix(pred["y"].astype(str), pred["PredictedLabel"].astype(str))
print(conf)

Результат:

[[1 0 0]
 [0 1 0]
 [0 0 1]]
person student    schedule 22.04.2018