Стандартизация данных python

2 простых способа нормализовать данные в Python

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

Почему нам нужно нормализовать данные в Python?

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

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

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

Формула нормализации приведена ниже:

Нормализация<br>

Мы вычитаем минимальное значение из каждой записи, а затем делим результат на диапазон. Где диапазон — это разница между максимальным значением и минимальным значением.

Шаги по нормализации данных в Python

Мы собираемся обсудить два разных способа нормализации данных в Python.

Первый — с помощью метода normalize() в sklearn.

Использование normalize() из sklearn

Начнем с импорта processing из sklearn.

Теперь давайте создадим массив с помощью Numpy .

Теперь мы можем использовать метод normalize() для массива. Этот метод нормализует данные по строке. Давайте посмотрим на метод в действии.

Полный код

Вот полный код из этого раздела:

Мы видим, что все значения теперь находятся в диапазоне от 0 до 1. Так работает метод normalize() в sklearn.

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

Нормализовать столбцы в наборе данных с помощью normalize()

Поскольку normalize() нормализует только значения по строкам, нам нужно преобразовать столбец в массив, прежде чем применять метод.

Чтобы продемонстрировать, мы собираемся использовать набор данных California Housing.

Начнем с импорта набора данных.

Затем нам нужно выбрать столбец и преобразовать его в массив. Мы собираемся использовать столбец total_bedrooms .

Как нормализовать набор данных без преобразования столбцов в массив?

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

Нормализовать набор данных<br>

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

Однако вы можете указать ось при вызове метода для нормализации по элементу (столбцу).

Значение параметра оси по умолчанию установлено на 1. Если мы изменим значение на 0, процесс нормализации произойдет по столбцу.

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

Использование MinMaxScaler() для нормализации данных в Python

Когда дело доходит до нормализации данных, Sklearn предоставляет еще один вариант: MinMaxScaler.

Это более популярный выбор для нормализации наборов данных.

Вот код для нормализации набора данных жилья с помощью MinMaxScaler:

MinMaxScaler

Вы можете видеть, что значения на выходе находятся между (0 и 1).

MinMaxScaler также дает вам возможность выбрать диапазон функций. По умолчанию диапазон установлен на (0,1). Посмотрим, как изменить диапазон на (0,2).

диапазон: (0,2)<br>

Значения на выходе теперь находятся в диапазоне (0,2).

Вывод

Это два метода нормализации данных в Python. Мы рассмотрели два метода нормализации данных в разделе sklearn. Надеюсь, вам было весело учиться с нами!

Источник



2 Простые способы стандартизации данных в Python для машинного обучения

Эй, читатели. В этой статье мы будем сосредоточиться на 2 важных методах стандартизации данных в Python. Итак, давайте начнем !!

2 Простые способы стандартизации данных в Python для машинного обучения

Эй, читатели. В этой статье мы будем сосредоточиться на 2 Важных методика для стандартизации данных в Python Отказ Итак, давайте начнем !!

Почему нам нужно стандартизировать данные в Python?

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

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

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

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

Масштабирование функций может быть широко классифицировано на следующих категориях:

  • Нормализация
  • Стандартизация

Стандартизация используется на значениях данных, которые являются нормально распределен Отказ Кроме того, применяя стандартизацию, мы склонны вносить среднее значение набора данных, а стандартное отклонение, эквивалентное 1.

То есть путем стандартизации значений мы получаем следующую статистику распределения данных

  • иметь в виду
  • стандартный

Таким образом, этим набор данных становится самоснабжением и легко анализировать как значит отказывается до 0 И это происходит, чтобы иметь Устройство дисперсии Отказ

Способы стандартизации данных в Python

Давайте сейчас сосредоточимся на различных способах внедрения стандартизации в предстоящем разделе.

1. Использование предварительной обработки. Функция ()

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

Здесь мы загрузили DataSet Iris в окружающую среду, используя линию ниже:

Кроме того, мы сохранили набор данных IRIS к объекту данных, как создано ниже.

После сегрегирования зависимого и переменной/целевой переменной мы использовали Предварительная обработка. Функция ()) Функция в зависимых переменных для стандартизации данных.

2. Использование стандартного баланса () функции

Python Библиотека Sklearn предлагает нам Стандартный класс () Функция выполнять стандартизацию на набор данных.

Здесь, опять же мы использовали набор данных IRIS.

Кроме того, мы создали объект стандартного баланса (), а затем применил fit_transform () Функция Чтобы применить стандартизацию на набор данных.

Выход :

Заключение

По этому, мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом.

Читайте также:  Стандартизация архивного фонда

Источник

Python обучение обработка извлечение больших и текстовых данных

Очистка и предварительная обработка данных для начинающих с кодом в Python

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

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

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

Курс программы на питоне примеры для начинающих будет доступен в конце статьи.

Шаг 1. Загрузить набор данных в Python

Первое, что вам нужно сделать — импортировать библиотеки для предварительной обработки. Существует множество библиотек, но наиболее популярными и важными в целях работы с данными являются NumPy, Matplotlib и Pandas.

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

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

С помощью этого простого кода в вашей программе вы сейчас можете использовать библиотеки в вашем проекте.

Загрузка данных в Пандас

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

Обычно эти задачи включают в себя:

Удалить первую строку, иногда содержит странный текст вместо заголовков столбцов. Текущий текст предотвращает правильный анализ набора данных библиотекой Пандас. Если нужно удалить эту информацию, вы можете реализовать следующий код:

Удалить столбцы с текстовыми объяснениями, которые нам не понадобятся, столбцы url и другие ненужные столбцы. Код выполнения выглядит следующим образом:

Где находится “url”, вы можете заключить столбец, который хотите удалить.

Удалить все столбцы с одним значением с более чем 50% отсутствующих значений, делаем дабы работать быстрее. Обратите внимание на это, если набор данных достаточно велик, чтобы он оставался значимым. Код, который вы должны реализовать, выглядит следующим образом:

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

Шаг 2. Сканирование набора данных в Python

python самоучитель и сжатие данных

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

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

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

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

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

Решение по целевому столбцу в Python

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

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

Например, если целевой столбец является последним, вы можете создать массив независимых переменных, написав следующий код:

Первые две точки означают, что мы хотим взять любые строки из нашего набора dat, тогда как :-1 означает, что мы хотим взять все столбцы, кроме последнего. Метод .values в конце означает, что мы хотим каждое значения.

Чтобы иметь вектор зависимых переменных только с данными последнего столбца, вы можете написать:

Шаг 3. Подготовка функций машинного обучения

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

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

Обработка отсутствующих значений

Отсутствие их является, пожалуй, наиболее распространенной чертой нечистых данных. Значения обычно принимают форму NaN так же None.

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

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

Читайте также:  Гост 444 75 область стандартизации

Существует несколько способов заполнения недостающих значений:

  • Вы можете удалить строки, если набор данных достаточно велик, а процент пропущенных значений высок-более 50%, например.
  • Вы можете заполнить каждые нулевые переменные 0, если числовое значение.
  • Вы можете заполнить пропущенные значения средним или наиболее частым значением в столбце.
  • Вы также можете заполнить недостающие значения любым значением, которое приходит непосредственно сразу в том же столбце.

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

Обработка категориальных данных в Python

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

В большинстве случаев категориальные значения дискретны и могут быть закодированы как фиктивные переменные, назначая число каждой категории. Самый простой способ-использовать One Hot Encoder, указав индекс столбца, над которым вы хотите работать. Код будет выглядеть следующим образом:

Обработка дат и времени

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

Масштабирование и стандартизация

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

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

Существует множество способов масштабирования функций. Проще говоря, мы помещаем все наши функции в один и тот же масштаб, важность — ни одна из них не доминировала над другой. Например, вы можете использовать класс StandardScaler из пакета sklearn.preprocessing для настройки и преобразования набора данных:

Вам не нужно использовать fit для тестовых данных, вам просто нужно применить преобразование.

Сохранить в CSV

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

Как и ранее, вы можете сохранить DataFrame как .csv с использованием функции Pandas to_csv (), как показано ниже:

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

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

Помните, что если вам еще трудно всё объяснено здесь, у меня есть в вашем распоряжении шаблон, разработанный на Python, который вы можете использовать в плане очистки и предварительной обработки, и, таким образом, вы можете начать с ваших проектов.

Мы заканчиваем объяснение. Готова основа для очистки и предварительной обработки данных в Python, поэтому я оставляю вам следующий вопрос, какие из следующих утверждений, по вашему мнению, верны?

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

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

Вариант 2: алгоритмы машинного изучения принимают любой тип, от числа до типа объекта.

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

Вариант 3: в случае потери данных эту информацию можно заполнить средним значением.

Источник

Как нормализовать и стандартизировать данные временных рядов в Python

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

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

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

После завершения этого урока вы узнаете:

  • Ограничения нормализации и ожидания ваших данных для использования стандартизации.
  • Какие параметры необходимы и как вручную рассчитать нормализованные и стандартизированные значения.
  • Как нормализовать и стандартизировать данные временных рядов с помощью scikit-learn в Python.

Набор данных минимальных суточных температур

Этот набор данных описывает минимальные дневные температуры за 10 лет (1981-1990) в городе Мельбурн, Австралия.

Единицы измерения — градусы Цельсия, 3650 наблюдений. Источник данных зачисляется в Австралийское бюро метеорологии.

Ниже приведен пример первых 5 строк данных, включая строку заголовка.

Ниже приведен график всего набора данных, взятого из Data Market.

Набор данных показывает сильную сезонную составляющую и имеет приятные мелкозернистые детали для работы.

В этом руководстве предполагается, что набор данных находится в вашем текущем рабочем каталоге с именем файла «ежедневно минимальная температура-в-me.csv«.

Заметка: Загруженный файл содержит несколько знаков вопроса («?»), Которые необходимо удалить, прежде чем вы сможете использовать набор данных. Откройте файл в текстовом редакторе и удалите символы «?». Также удалите любую информацию нижнего колонтитула в файле.

Читайте также:  Приведите пример стандартизации и опишите его

Нормализуйте данные временного ряда

Нормализация — это изменение масштаба данных из исходного диапазона, чтобы все значения находились в диапазоне от 0 до 1.

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

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

Значение нормализуется следующим образом:

Где минимальные и максимальные значения относятся к значениюИкснормализуется.

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

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

Вы можете нормализовать свой набор данных, используя объект scikit-learn.MinMaxScaler,

Хорошая практика использования сMinMaxScalerи другие методы масштабирования следующие:

  1. Установите скейлер, используя доступные данные тренировки, Для нормализации это означает, что данные обучения будут использоваться для оценки минимальных и максимальных наблюдаемых значений. Это делается путем вызовапоместиться()функция,
  2. Применить шкалу к тренировочным данным, Это означает, что вы можете использовать нормализованные данные для обучения вашей модели. Это делается путем вызовапреобразование ()функция
  3. Примените масштаб к данным, идущим вперед, Это означает, что в будущем вы можете подготовить новые данные, по которым вы хотите делать прогнозы.

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

Ниже приведен пример нормализации набора данных «Минимальные суточные температуры».

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

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

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

Мы также видим, что минимальное и максимальное значения набора данных равны 0 и 26,3 соответственно.

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

Стандартизировать данные временных рядов

Стандартизация набора данных включает в себя изменение масштаба распределения значений так, чтобы среднее значение наблюдаемых значений было 0, а стандартное отклонение — 1.

Это можно рассматривать как вычитание среднего значения или центрирование данных.

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

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

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

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

Значение стандартизировано следующим образом:

Гдеимею в видурассчитывается как:

Истандартное отклонениерассчитывается как:

Например, мы можем построить гистограмму набора данных «Минимальные суточные температуры» следующим образом:

Выполнение кода дает следующий график, который показывает гауссово распределение набора данных, как предполагается стандартизацией.

Мы можем угадать среднюю температуру 10 и стандартное отклонение около 5. Используя эти значения, мы можем стандартизировать первое значение в наборе данных 20,7 следующим образом:

Оценки среднего и стандартного отклонения набора данных могут быть более устойчивыми к новым данным, чем минимальное и максимальное.

Вы можете стандартизировать свой набор данных, используя объект scikit-learn.StandardScaler,

Ниже приведен пример стандартизации набора данных «Минимальные суточные температуры».

При выполнении примера печатаются первые 5 строк набора данных, печатаются те же стандартизированные значения, а затем печатаются значения обратно в их исходном масштабе.

Мы можем видеть, что расчетное среднее значение и стандартное отклонение составляли 11,1 и 4,0 соответственно.

Резюме

В этом руководстве вы узнали, как нормализовать и стандартизировать данные временных рядов в Python.

В частности, вы узнали:

  • Что некоторые алгоритмы машинного обучения работают лучше или даже требуют масштабированных данных при моделировании.
  • Как вручную рассчитать параметры, необходимые для нормализации и стандартизации.
  • Как нормализовать и стандартизировать данные временных рядов, используя scikit-learn в Python.

У вас есть вопросы о масштабировании данных временных рядов или об этом посте?
Задайте свои вопросы в комментариях, и я сделаю все возможное, чтобы ответить.

Источник