Обработка данных | Pandas начинается - дискретный и один горячий

pandas

Сегодняобработка данных пандСедьмая статья темы, вы можете нажать на альбом выше, чтобы просмотреть предыдущие статьи.

В предыдущей статье мы представили некоторые методы сортировки фреймов данных и расчета рейтинга.В сегодняшней статье давайте рассмотрим две очень важные функции фреймов данных:Дискретность и однократность.

дискретность

Противоположность дискретности непрерывна,Дискретизация - это отображение непрерывного значения в дискретное значение.. Чтобы привести очень простой пример, например, сейчас есть особенность доходов пользователей.Все мы знаем, что разрыв между богатыми и бедными очень огромен.Доход одного Джека Ма превышает сумму доходов тысячи людей. А самые бедные зарабатывают очень мало, даже меньше доллара в день.

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

Такая ситуация очень распространена, потому что распределение многих данных в реальной жизни очень неравномерно. Часто не нормальное распределение, а распределение 28 или даже более поляризованное. Как справиться с этой ситуацией?

Более простой и часто используемый метод заключается вдискретность, который отображает изначально непрерывные значения в дискретные переменные. Например, доход, мы больше не используем значение дохода напрямую как характеристику, а разделяем его на несколько сегментов, таких как группы с низким доходом, группы со средним доходом и группы с высоким доходом. Таким образом, для обучения модели оно не будет предвзятым, но недостатком является то, чтоЧасть информации потеряна. Например, Ма Юнь и Дун Гэ относятся к группам с высоким доходом, но их способности зарабатывать на самом деле сильно различаются. При использовании этого метода отражения не будет, поэтому дискретная конструкция не лоб, и анализировать ее следует по реальной ситуации.

Итак, предположим, что мы хотим выполнять такие дискретные операции в кадре данных, что нам делать?

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

income = [2000, 10000, 150000, 8000, 20000, 30000, 50000, 1000000, 20000000, 300000000]

Затем мы искусственно устанавливаем ведра для разделения дохода:

bins = [0, 30000, 100000, 10000000, 1000000000]

После этого нам нужно только вызвать метод cut в пандах и передать как массивы доходов, так и массивы корзин:

Результат, возвращаемый pandas, представляет собой категориальный объект, представляющий категорию. Например, (0, 30000] — это не только диапазон значений этой корзины, но и имя этой корзины. Мы также можем передать имя корзины, которое мы определили, чтобы заменить этот диапазон:

Здесь мы должны обратить внимание на то, что мы передаем вКоличество меток на единицу меньше, чем бинов, то есть диапазон деления, так как разделенный интервал является полузакрытым и полуоткрытым, а количество интервалов равно бинам-1, поэтому количество указываемых нами меток также должно быть бинов-1. В методе деления по умолчанию используется лево-открытый-право-закрытый интервал, который отличается от нашего обычно используемого лево-закрытого и правого-открытого интервала.Мы можем установить его на лево-закрытый и правый-открытый интервал через параметр правильно = Ложь.

В процессе использования cut, если мы хотим выполнить по диапазону значенийравное деление, мы также можем передать количество сегментов, которые мы хотим разделить, вместо контейнеров, чтобы панды разделили его поровну в соответствии с указанным числом в соответствии с диапазоном значений в этом столбце:

Если вы используете равное деление, вы хотите ограничить точность деления, вы можете использовать параметр точности для ограничения. Например, если мы хотим, чтобы точность сохраняла два десятичных знака, то передайте точность = 2.

В дополнение к cut метод дискретизации также имеет метод, называемый qcut, который отличается от cut тем, что qcutДелится на квантиль. Например, если мы хотим игнорировать определенные значения и делить их поровну по количеству данных, нам нужно использовать qcut.

В дополнение к передаче количества делений, которые мы хотим получить, мы также можем указать квантиль, который мы хотим разделить, который представляет собой десятичное число от 0 до 1 включительно:

one-hot

One-hot также является очень и очень распространенным методом обработки данных в машинном обучении.Слово one-hot на первый взгляд не очень понятно, и есть места, где оно переводится в one-hot коды, что тоже очень сбивает с толку. На самом деле смысл его очень прост, то есть классифицировать ряд нечисловых значений по корзинам,

Возьмем очень простой пример. Предположим, мы разделим мальчиков на три типа: высокие, богатые и красивые, невысокие и бедные, а также мальчики, занимающиеся наукой и инженерией. Теперь у нас есть 4 мальчика: [высокие богатые и красивые, невысокие и мальчики-инженеры, и высокие, богатые и красивые]. Очевидно, особенность, но проблема в том,Большинство моделей не принимают функции строкового типа., мы должны преобразовать его в значение. Проблема в преобразовании, нам сложно сделать это отображение.

Некоторые люди скажут, что мы можем сделать так, чтобы ярлыки высокого, богатого, красивого, низкого и бедного соответствовали разным значениям Разве недостаточно сделать отображение? Например, низкорослый, бедный, бедный равен 1, высокий, богатый и красивый равен 2. Разве это не числовое значение после сопоставления? К сожалению, нет, и причина очень проста, потому что после того, как мы просто преобразуем их в числа, ониОт абстрактного понятия к числу. Между абстрактными понятиями нет отношения размера или множественного отношения, но есть числовое значение. Например, высокий, богатый и красивый равен 2, а низкий и бедный равен 1. В модели один высокий, богатый и красивый равен двум низким и бедным? Высоких, богатых и красивых больше, чем низких и бедных?

Эта дополнительная информация очень фатальна для модели, и мы не хотим, чтобы модель получала эту информацию. Лучше всего для нас создать список из трех столбцов: высокий, богатый и красивый, низкий и бедный, а также мужчина науки и техники. Если вы высокий, богатый и красивый, в столбце «Высокий, богатый и красивый» будет 1, а в других столбцах — 0. Точно так же, если вы невысокий и бедный, в столбце «низкий и бедный» будет 1, а в других столбцах — 0. В этом списке в каждой строке только один столбец со значением 1, а остальные равны 0, что означает, что есть только один столбец, который является горячим, а остальные столбцы — холодными.

Мы много сказали, но реализация one-hot на самом деле очень проста, всего одна строчка:

pd.get_dummies(dataframe)

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

Не имеет значения, являются ли несколько столбцов горячими вместе:

Суммировать

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

Сегодняшняя статья здесь, если вам понравилась эта статья, пожалуйста, приходите на волнукачество три, поддержите меня (Подписывайтесь, делайте репосты, лайкайте).

- END -

Оригинальная ссылка, обратите внимание