Wednesday, May 11, 2022

MinMaxScaler Transforms in Python

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

Сюда входят алгоритмы, использующие взвешенную сумму входных данных, такие как линейная регрессия, и алгоритмы, использующие меры расстояния, такие как 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()































Далее оценим одну модель KNN,но в данном случае на преобразовании набора данных MinMaxScaler.

# evaluate knn on the sonar dataset with minmax scaler transform
from numpy import mean
from numpy import std
from pandas import read_csv
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import RepeatedStratifiedKFold
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler
from sklearn.pipeline import Pipeline
from matplotlib import pyplot
# load dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/sonar.csv"
dataset = read_csv(url, header=None)
data = dataset.values
# separate into input and output columns
X, y = data[:, :-1], data[:, -1]
# ensure inputs are floats and output is an integer label
X = X.astype('float32')
y = LabelEncoder().fit_transform(y.astype('str'))
# define the pipeline
trans = MinMaxScaler()
model = KNeighborsClassifier()
pipeline = Pipeline(steps=[('t', trans), ('m', model)])
# evaluate the pipeline
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(pipeline, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise')
# report pipeline performance
print('Accuracy: %.3f (%.3f)' % (mean(n_scores), std(n_scores)))
























References


No comments:

Post a Comment