Обработка отсутствующих атрибутов в SVM
У меня есть набор данных 2500 записей. Каждая запись имеет 100 атрибутов. Проблема, с которой я сталкиваюсь, заключается в том, что во многих из этих записей отсутствует одно (или несколько) значений атрибутов. Поскольку таких записей много (около 800), я не могу позволить себе игнорировать эти записи. Все мои атрибуты являются числовыми. Мой целевой атрибут категорический. Есть 6 возможных классов. Я планирую использовать классификатор SVM в учебных целях.
Какой подход я должен использовать для обработки пропущенных значений атрибутов?
Также мои данные тестирования содержат отсутствующие атрибуты. Как мне обработать пропущенные значения в данных тестирования?
1 ответ
Поскольку 800 экземпляров в наборе данных 2500 довольно высоки, удаление их, возможно, действительно не лучший вариант.
Поскольку вы имеете дело с числовыми атрибутами, обычная техника заключается в поиске некоторого общего значения, которое можно использовать для отсутствующих данных. Часто среднее значение выбирается для этих целей.
sklearn предлагает препроцессор, который делает это в sklearn.preprocessing.Imputer
Пример этого:
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
Лучшее решение, конечно, было бы попросить эксперта по домену заполнить пропущенные значения, но это часто невозможно.