Как я могу отбросить индекс серии Pandas (pandas.core.series.Series), чтобы получить numpy.ndarray? - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь показать путаницу матрицы для предсказанных тестовых данных (двоичная текстовая классификация).Но я не могу получить y_pred, чтобы соответствовать y_test после выполнения model.predict().

Сначала давайте посмотрим на тестовые / истинные данные:

y_test = (y_test > 0.5)
print(y_test)
print(type(y_test))

Вывод:

2       False
17       True
18       True
...
4980     True
4986    False
4990     True
pandas.core.series.Series

Отсутствующие индексы содержатся в обучающем наборе.

Вот что происходит, когда мы прогнозируем на основе данных испытаний:

y_pred = model.predict(data_test)
y_pred = (y_pred > 0.5)
print(y_pred)
print(type(y_pred))

Вывод:

[[ True]
 [ True]
 [ True]
 [False]
 ...
 [ True]
 [ True]
 [ True]]
numpy.ndarray

Тест / Истинные данные:

y_test = (y_test > 0.5)
print(y_test)

Вывод:

2       False
17       True
18       True
...
4980     True
4986    False
4990     True

В конечном счете, я собираюсь создать матрицу путаницы, но данные не совпадают с форматом.

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

Что вы порекомендуете?

Попытки пока:

y_test_np = y_test.values

Выход:

[False  True  True ... True False  True]

Ближе, но, похоже, мне нужно, чтобы каждый элемент также был массивом (например, [[ True] [False] [ True]]).Как я могу выровнять массивы?

1 Ответ

0 голосов
/ 06 октября 2018

Просто для иллюстрации давайте создадим несколько примеров данных.

y_test = pd.Series([True, False])
y_pred = np.array([[True], [False]])

Вы можете преобразовать серии панд y_test в массив numpy

y_test.values

и squeeze массив numpyy_pred для получения той же формы

numpy.squeeze(y_pred)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...