Нормализация данных python формула

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

Часто в статистике и машинном обучении мы нормализуем переменные таким образом, чтобы диапазон значений находился между 0 и 1.

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

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

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

Чтобы нормализовать значения между 0 и 1, мы можем использовать следующую формулу:

x норма = (x i – x мин ) / (x макс – x мин )

  • x norm : i -е нормализованное значение в наборе данных
  • x i : i -е значение в наборе данных
  • x max : минимальное значение в наборе данных
  • x min : максимальное значение в наборе данных

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

Пример 1. Нормализация массива NumPy

В следующем коде показано, как нормализовать все значения в массиве NumPy:

import numpy as np #create NumPy array data = np.array([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]]) #normalize all values in array data_norm = (data - data. min ())/ (data. max () - data. min ()) #view normalized values data_norm array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379, 0.43103448, 0.5862069 , 0.74137931, 0.77586207, 0.86206897, 0.89655172, 0.98275862, 1. ]]) 

Каждое из значений в нормализованном массиве теперь находится между 0 и 1.

Пример 2: нормализовать все переменные в Pandas DataFrame

Следующий код показывает, как нормализовать все переменные в кадре данных pandas:

import pandas as pd #create DataFrame df = pd.DataFrame() #normalize values in every column df_norm = (df-df.min ())/ (df.max () - df.min ()) #view normalized DataFrame df_norm points assists rebounds 0 0.764706 0.125 0.857143 1 0.000000 0.375 0.428571 2 0.176471 0.375 0.714286 3 0.117647 0.625 0.142857 4 0.411765 1.000 0.142857 5 0.647059 0.625 0.000000 6 0.764706 0.625 0.571429 7 1.000000 0.000 1.000000 

Каждое из значений в каждом столбце теперь находится в диапазоне от 0 до 1.

Пример 3: нормализовать определенные переменные в Pandas DataFrame

В следующем коде показано, как нормализовать определенные переменные в кадре данных pandas:

import pandas as pd #create DataFrame df = pd.DataFrame() define columns to normalize x = df.iloc [:,0:2] #normalize values in first two columns only df.iloc [:,0:2] = (x-x. min ())/ (x. max () - x. min ()) #view normalized DataFrame df points assists rebounds 0 0.764706 0.125 11 1 0.000000 0.375 8 2 0.176471 0.375 10 3 0.117647 0.625 6 4 0.411765 1.000 6 5 0.647059 0.625 5 6 0.764706 0.625 9 7 1.000000 0.000 12 

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

Дополнительные ресурсы

В следующих руководствах представлена дополнительная информация о нормализации данных:

Источник

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

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

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

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

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

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

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

Нормализация</p data-lazy-src=

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

from sklearn import preprocessing x_array = np.array(housing['total_bedrooms']) normalized_arr = preprocessing.normalize([x_array]) print(normalized_arr) 
[[0.01437454 0.02129852 0.00194947 . 0.00594924 0.00618453 0.00336115]] 

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

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

from sklearn import preprocessing import pandas as pd housing = pd.read_csv("/content/sample_data/california_housing_train.csv") d = preprocessing.normalize(housing) scaled_df = pd.DataFrame(d, columns=names) scaled_df.head() 

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

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

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

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

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

from sklearn import preprocessing import pandas as pd housing = pd.read_csv("/content/sample_data/california_housing_train.csv") scaler = preprocessing.MinMaxScaler() names = housing.columns d = scaler.fit_transform(housing) scaled_df = pd.DataFrame(d, columns=names) scaled_df.head() 

MinMaxScaler

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

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

from sklearn import preprocessing import pandas as pd housing = pd.read_csv("/content/sample_data/california_housing_train.csv") scaler = preprocessing.MinMaxScaler(feature_range=(0, 2)) names = housing.columns d = scaler.fit_transform(housing) scaled_df = pd.DataFrame(d, columns=names) scaled_df.head() 

диапазон: (0,2)</p data-lazy-src=

Читайте также:  Javascript remove all scripts
Оцените статью