Если я пытаюсь предсказать метку для образца, но в образце отсутствуют функции, как мне с этим справиться?

#python #machine-learning #scikit-learn #missing-data

Вопрос:

У меня сейчас концептуальная проблема; Я знаю, что sklearn не нравится, когда .predict() используется в примерах со значениями NaN, но что мне делать, если я хочу предсказать метку для примера с NaN/отсутствующими функциями?

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

Ответ №1:

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

Ответ №2:

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

Scikit Learn содержит набор алгоритмов для вменения пропущенных значений. Наиболее распространенным методом является использование простого компьютера с «средней» стратегией.

Вы также можете использовать более простые подходы и использовать Pandas, чтобы либо заполнить все NAs в вашем наборе данных с помощью fillna (), либо удалить NAs с помощью dropna().

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

Взгляните на это пошаговое руководство о том, как обрабатывать недостающие данные в Python.