Отсутствующие значения в целевой метке - PullRequest
0 голосов
/ 26 января 2019

Я хотел бы заполнить отсутствующие значения (18543), присутствующие в целевом столбце / зависимой переменной Complaint-Status, в моих данных, имеющих дисбаланс классов.В целевом столбце пять классов (проблема классификации нескольких классов).

Каков наилучший способ заполнить эти значения без увеличения дисбаланса класса?

Набор данных

enter image description here

Заменаэти пропущенные значения в режиме столбца, т. е. «Закрыто с объяснением», только увеличат дисбаланс класса.

uniq, kounts = np.unique(df_ohe['Complaint-Status'], return_counts=True) 
print(np.asarray((uniq, kounts)).T)

[['' 18543]
 ['Closed' 809]
 ['Closed with explanation' 34300]
 ['Closed with monetary relief' 2818]
 ['Closed with non-monetary relief' 5018]
 ['Untimely response' 321]]

Процент целевого класса

100*c_count.values/c_count.values.sum()
# array([55.49353654, 30.00048537,  8.11855879,  4.55920659,  1.30887088,
        0.51934184])

Ожидаемый результат:

[['class_label', 18543]
 ['Closed' 809]
 ['Closed with explanation' 34300]
 ['Closed with monetary relief' 2818]
 ['Closed with non-monetary relief' 5018]
 ['Untimely response' 321]]

1 Ответ

0 голосов
/ 26 января 2019

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

также, если вы построите древовидную модель, она сможет обрабатывать недостающие данные. Дерево решений, случайный лес, gbdt. см. пакеты lightgbm, xgboost.

...