Многие алгоритмы машинного обучения работают лучше, когда числовые входные переменные масштабируются до стандартного диапазона.
Сюда входят алгоритмы, использующие взвешенную сумму входных данных, такие как линейная регрессия, и алгоритмы, использующие меры расстояния, такие как k ближайших соседей.
Двумя наиболее популярными методами масштабирования числовых данных перед моделированием являются нормализация и стандартизация. Нормализация масштабирует каждую входную переменную отдельно до диапазона 0-1, который является диапазоном для значений с плавающей запятой, где мы имеем наибольшую точность. Стандартизация масштабирует каждую входную переменную отдельно путем вычитания среднего значения (так называемое центрирование) и деления на стандартное отклонение, чтобы сдвинуть распределение так, чтобы среднее значение равнялось нулю, а стандартное отклонение равнялось единице.
=======================
Вы можете нормализовать свой набор данных с помощью объекта scikit-learn MinMaxScaler.
Хорошей практикой использования MinMaxScaler и других методов масштабирования является следующее:
Соответствуйте скейлеру с помощью доступных обучающих данных. Для нормализации это означает, что обучающие данные будут использоваться для оценки минимального и максимального наблюдаемых значений. Это делается путем вызова функции fit().
Примените шкалу к обучающим данным. Это означает, что вы можете использовать нормализованные данные для обучения вашей модели. Это делается путем вызова функции transform().
Примените шкалу к данным в будущем. Это означает, что вы можете подготовить новые данные в будущем, на основе которых вы хотите делать прогнозы.
Масштаб по умолчанию для MinMaxScaler заключается в изменении масштаба переменных в диапазоне [0,1], хотя предпочтительный масштаб можно указать с помощью аргумента «feature_range» и указать кортеж, включая минимальное и максимальное значение для всех переменных.
(.env) [boris@Server35fedora MAXSCALER]$ cat minmaxScaler.py
# visualize a minmax scaler transform of the sonar dataset
from pandas import read_csv
from pandas import DataFrame
from pandas.plotting import scatter_matrix
from sklearn.preprocessing import MinMaxScaler
from matplotlib import pyplot
# load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv"
dataset = read_csv(url, header=None)
# retrieve just the numeric input values
data = dataset.values[:, :-1]
# perform a robust scaler transform of the dataset
trans = MinMaxScaler()
data = trans.fit_transform(data)
# convert the array back to a dataframe
dataset = DataFrame(data)
# summarize
print(dataset.describe())
# histograms of the variables
dataset.hist()
pyplot.show()
No comments:
Post a Comment