Целевое кодирование: заполнить NaN, сгенерированный в расширяющихся средних закодированных значениях - PullRequest
0 голосов
/ 27 января 2019

Я работаю над проблемой классификации нескольких классов, имеющей пять классов в целевой колонке. Я сгенерировал функции для категориальных переменных, используя расширенное среднее кодирование (Target encoding). Метод основан на кодировании значений категориальных переменных со средним значением целевой переменной на значение.

Это также приводит к некоторым значениям NaN, как в столбце «Transaction-Type_mean_target».

  1. Как лучше заполнить эти значения NaN? Должен ли я заполнить это со средним значением столбца.

  2. Как создать среднее кодирование для моих тестовых данных в качестве Целевая / зависимая переменная «Жалоба-Статус» отсутствует?

Входные данные:

enter image description here

Генерация среднего кодирования:

def add_feat_mean_encoding(col_list):
    """
        Expanding mean encoding 
    """
    for i in col_list:
        cumsum = train.groupby(i)['Complaint-Status'].cumsum() - train['Complaint-Status']
        cumcnt = train.groupby(i).cumcount()
        train[i+'_mean_target'] = cumsum/cumcnt

cat_var = ['Transaction-Type','Complaint-reason','Company-response','Consumer-disputes']
add_feat_mean_encoding(cat_var)
...