Тензор потока предсказать класс выхода

Подход 1: вы можете использовать get_dummies в кадре данных pandas.

Пример 1:

import pandas as pd
s = pd.Series(list('abca'))
pd.get_dummies(s)
Out[]: 
     a    b    c
0  1.0  0.0  0.0
1  0.0  1.0  0.0
2  0.0  0.0  1.0
3  1.0  0.0  0.0

Пример 2:

Следующее преобразует заданный столбец в одну горячую. Использовать префикс, чтобы иметь несколько манекенов.

Подход 2: Использовать Scikit-learn

Учитывая набор данных с тремя функциями и четырьмя образцы, мы позволяем кодеру находить максимальное значение для каждой функции и преобразовывать данные в двоичную горячую кодировку.

>>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])   
OneHotEncoder(categorical_features='all', dtype=,
   handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9], dtype=int32)
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.]])

Вот ссылка для этого примера: http: // scikit -learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html

5
задан Jaffer Wilson 16 January 2019 в 10:47
поделиться

1 ответ

Я думаю, что все, что вы пытаетесь сделать, это отобразить предсказанные вероятности классов обратно на метки классов. Каждая строка в списке выходных предсказаний содержит три вероятности предсказанных классов для ваших трех классов; Вы можете взять argmax вдоль каждой строки, чтобы отобразить фактический прогнозируемый класс (то есть класс с наибольшей прогнозируемой вероятностью):

import numpy as np

predictions = [[0.3112209,  0.3690182,  0.31357136],
 [0.31085992, 0.36959863, 0.31448898],
 [0.31073445, 0.3703295, 0.31469804],
 [0.31177694, 0.37011752, 0.3145326 ],
 [0.31220382, 0.3692756, 0.31515726],
 [0.31232828, 0.36947766, 0.3149037 ],
 [0.31190437, 0.36756667, 0.31323162],
 [0.31339088, 0.36542615, 0.310322  ],
 [0.31598282, 0.36328828, 0.30711085]] 

np.argmax(predictions, axis=1) 

Дает:

array([1, 1, 1, 1, 1, 1, 1, 1, 1])

в этом случае класс 1 прогнозируется 9 раз.

Как отмечено в комментариях: именно это и делает Керас под капотом, как вы увидите в исходном коде .

0
ответ дан sdcbr 16 January 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: