Это дает мне хорошую основу для категориальной классификации? - PullRequest
1 голос
/ 01 июля 2019

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

# get the index of the most popular category in your training outputs
pop_train_cat_ind = np.argmax(np.sum(train_Y, axis=0))

# get the count of that same category in your validation ouputs
pop_val_cat_ct = np.sum(validation_Y, axis=0)[pop_train_cat_ind]

# get the percentage compared to your total validation samples
baseline = pop_val_cat_ct / len(validation_Y)

1 Ответ

0 голосов
/ 01 июля 2019

Чтобы получить наиболее частое значение из списка или массива, вы можете использовать функцию mode из scipy.stats

import numpy as np
from scipy.stats import mode
train_Y=[1,7,3,4,6,4]
pop_train_cat_ind=mode(train_Y).mode[0]
print(pop_train_cat_ind)

Функция argmax, которую вы использовали, - это не то, что вы хотели сделать, потому что она не получает наиболее частое значение, а индексы, где train_Y имеет максимальное значение (при train_Y=[1,7,3,4,6,4] она вернет 1)

Когда вы вычисляете pop_val_cat_ct, вы сначала суммируете все элементы в validation_Y, который возвращает одно число, а затем вы пытаетесь получить pop_val_cat_ct элемент, которого в общем случае не существует.

Чтобы правильно вычислить pop_val_cat_ct, вы должны посчитать, сколько раз validation_Y равно pop_train_cat_ind и сумма:

validation_Y=[1,8,4]
# get the count of that same category in your validation ouputs
pop_val_cat_ct = np.sum(validation_Y==pop_train_cat_ind)

validation_Y==pop_train_cat_ind дает массив той же длины, что и validation_Y, заполненный True или False. Когда вы его суммируете, он возвращает количество значений True (для Python True = 1 и False = 0), поэтому вам нужно количество.

Затем вы можете сделать, как вы написали

# get the percentage compared to your total validation samples
baseline = pop_val_cat_ct / len(validation_Y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...