Дорога к большим данным — (1) очистка данных в алгоритмическом моделировании

искусственный интеллект

Добавить Автора

источник:Облачное сообщество Hang Seng LIGHT

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

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

Неочищенные данные обычно имеют эти проблемы, которые не соответствуют требованиям анализа: такие как повторение, ошибка, нулевое значение, ненормальные данные и т. д. Для неправильных данных, поскольку это проблема источника бизнеса, например, пол явно мужской, но становится женщина, мы не можем справиться с этим, мы можем только регулировать из источника, точно так же, как клиент хочет есть помидоры из провинции Хэнань, только Шаньдун на кухне, шеф-повар не может решить эту проблему, он может только уведомить покупателя изменять. Поэтому мы только очищаем и пересматриваем остальные три проблемы.Надо сказать, что вся очистка должна быть сделана на основе реального дела, такого как повторение.Может быть, дело нуждается в повторении.Если вы смоете это для других, возникнут проблемы.

1627760456(1).jpg

1. Повторить

Если реальный бизнес не нуждается в повторяющихся значениях, повторяющиеся значения могут быть удалены напрямую.Например, в базе данных объединение может использоваться вместо объединения всех при интеграции и слиянии.Для тех, которые не поддерживают объединение, первичный key можно использовать для сортировки первого.

row_number() over (partition by .. order by..desc) as..

Если вы не поддерживаете row_number, то живите хорошо.

Другие языки также имеют аналогичные функции дедупликации, например, python может напрямую использовать drop_duplicates().

2. Отсутствует

Отсутствует также нулевое значение. Это должно быть ясно. Есть два случая «пустого». Первый состоит в том, что реальный объект пуст, то есть нуль, а другой — нулевое значение, то есть xxx=' ', поэтому нам нужно иметь дело с этими нулевыми значениями. Есть два случая: один — xxx равен нулю, а другой — length(trim(xxx))=0.

Обработка нулевых значений обычно выполняется в соответствии с фактическими потребностями бизнеса.

  • Когда количество нулевых значений относительно невелико, может быть заполнено одно из непрерывных значений, например среднее, медиана и т. д.;
  • Когда имеется много пустых значений, составляющих более 50%, вы можете рассмотреть возможность использования режима заполнения;
  • Нулевые значения составляют подавляющее большинство. В настоящее время нет необходимости использовать исходные данные. Вы можете создавать свои собственные данные, генерировать фиктивную переменную индикатора и участвовать в последующих потребностях моделирования.

Я уже говорил как с этим бороться в БД, вот как с этим бороться в питоне

# 列出空值在每个列所占的比重
# df是数据集,col.size是当前数据的行数
df.apply(lambda col:sum(col.isnull())/col.size)
# 用均值填补,使用pandas包里的fillna
df.col1.fillna(df.col1.mean())
3. Уровень шума

Значение шума относится к сравнению с другими числовыми данными, которые имеют большие различия в значении, а некоторые называются выбросами и т. Д., Например, возраст вышел несколько больше 150. Уровень шума серьезно повлияет на результаты моделирования, а выводы будут неверными или предвзятыми. Необходимо убрать эти шумовые значения, обычно используются методы: одномерные методы - колпачки, биновый метод, есть многомерный метод кластеризации.

  • Крышка

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

1627760879(1).jpg

БД можно заменить на case when, и python может написать функцию

def cap(x,quantile=[0.01,0.99]):
'''盖帽法处理异常值
Args:
    x:是series列,连续变量
    quantile:上下分位数范围,这里写为0.01和0.99
'''
 
# 生成分位数,Q01,Q99分别是百分之一分位点和百分之99分位点
    Q01,Q99=x.quantile(quantile).values.tolist()
 
# 替换异常值为制定的分位数
 
    if Q01 > x.min():
        x = x.copy()
        x.loc[x < Q01] = Q01
    if Q99 < x.max():
        x = x.copy()
        x.loc[x > Q99] = Q99
    return(x)
  • метод биннинга

Метод биннинга сглаживает значения упорядоченных данных, исследуя «ближайших соседей» данных, а упорядоченные значения распределяются по некоторым бинам.Принимая конкретные значения каждого бина, такие как максимальное значение, среднее значение, медиана и т. д. Значение поля, а затем установите стандарт для оценки значения этих полей, чтобы определить, является ли каждое поле хорошим или плохим, а плохое поле требует специальной обработки. Метод бинирования делится на бинирование равной глубины: размер выборки каждого бина одинаков, и бинирование равной ширины: диапазон значений каждого бина одинаков.

Например, набор чисел 1 2 66 8 9 2 1 4 6 сначала отсортировать 1 1 2 2 4 6 8 9 66, а затем разделить на три поля. Коробка А: 1 1 2 Коробка Б: 2 4 6 Ячейка C: 8 9 66

Здесь мы берем среднее значение блоков, тогда A равно 1,3 B равно 4 C равно 27,3 Очевидно, что значение C намного больше, чем среднее значение и медиана этой группы данных, поэтому блок C является плохим блоком, вы можете сосредоточиться при обработке C в данных

  • Кластеризация

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

Идея состоит в том, что все нормальные значения имеют одинаковые метки, например, хорошие помидоры спереди имеют румяный цвет, вкус кисло-сладкий, кожица не повреждена и т. д., в то время как плохие помидоры имеют разные цвета от «другие» характеристики, такие как странный вкус. Следовательно, мы можем разделить объекты данных на несколько наборов.Объекты в одном наборе имеют большое сходство, а объекты в разных наборах совершенно разные. Кластерный анализ может выявить выбросы в этих различных наборах, и эти выбросы часто являются аномальными данными.