logo

StandardScaler в Sklearn

Кога и как да използвате StandardScaler?

Когато характеристиките на даден набор от данни варират значително в своите диапазони или са записани в различни мерни единици, StandardScaler влиза в картината.

Данните се мащабират до дисперсия от 1, след като средната стойност се намали до 0 чрез StandardScaler. Но когато се определя емпиричната средна стойност на данните и стандартното отклонение, външните стойности, присъстващи в данните, имат значително въздействие, което намалява спектъра от характерни стойности.

mylivecricket в

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

Функцията StandardScaler на sklearn се основава на теорията, че променливите на набора от данни, чиито стойности са в различни диапазони, нямат еднакъв принос към параметрите на модела и тренировъчната функция и дори могат да доведат до отклонение в прогнозите, направени с този модел.

Следователно, преди да включим функциите в модела за машинно обучение, трябва да нормализираме данните (µ = 0, σ = 1). Стандартизацията в инженерството на функции обикновено се използва за справяне с този потенциален проблем.

Стандартизиране с помощта на Sklearn

 sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True) 

Чрез елиминиране на средната стойност от характеристиките и мащабирането им до дисперсия на единица, характеристиките се стандартизират с помощта на тази функция.

Формулата за изчисляване на стандартния резултат на функция е z = (x - u) / s, където u е средната стойност на функцията за обучение (или нула, ако with_mean = False), а s е стандартното отклонение на извадката (или единица, ако with_std = False ).

Чрез изчисляване на съответните статистически данни за функциите в набора за обучение, центрирането и мащабирането се прилагат независимо към всяка характеристика. След това, за използване с по-късни проби, използващи transform(), методът fit() съхранява средното и стандартното отклонение.

Параметри:

    копиране (bool, по подразбиране = True):-Ако този параметър е зададен на True, опитайте се да избягвате копията и вместо това да мащабирате пробите на място. Това не е непременно гарантирано да функционира на място; например, функцията все пак може да върне копие, ако входът не е под формата на масив NumPy или scipy.sparse CSR матрица.with_mean (bool, по подразбиране = True):-Ако параметърът е зададен на True, мащабирайте данните, след като ги центрирате. Когато се прилага към разредени матрици, това се проваля (и предизвиква изключение), тъй като центрирането им налага изграждането на плътна матрица, която при повечето случаи на използване се очаква да бъде твърде голяма, за да се побере в ram.with_std (bool, по подразбиране = True):-Този параметър мащабира входните данни до дисперсията на единицата, ако е зададено на true (или можем да кажем, че прави стандартно отклонение на единица).

Атрибути:

    scale_ (ndarray с форма на (n_features,) или None):-Данните са относително мащабирани за всяка характеристика с нулева средна стойност и единица дисперсия.mean_ (ndarray с форма на (n_features,) или None):-Това е средната стойност на набора от данни за обучение за всяка функция. Когато аргументът with_mean е зададен на False, тази стойност е равна на None.var_ (ndarray с форма на (n_features,) или None):-Това е стойността на дисперсията на всяка характеристика в набора от данни за обучение. Използва се за определяне на мащаба на характеристиките. Когато аргументът with_std е зададен на False, тази стойност е равна на None.n_features_in_ (от тип _int):-Този атрибут дава броя на характеристиките, забелязани при монтажа.feature_names_in_ (ndarray с форма като (n_features_in_,)):-Този атрибут е характеристиките, идентифицирани с имена по време на монтажа. X е дефиниран само когато всички негови имена на характеристики са от тип данни string.n_samples_seen_ (от тип int или ndarray с форма като (n_features,)):-Това дава броя на пробите, които оценителят е изследвал за всяка характеристика.

Методи на класа StandardScaler

годни (X[, y, тегло_на пробата]) Този метод изчислява средната стойност и стандартното отклонение, които да се използват по-късно за мащабиране на данните.
fit_transform(X[, y]) Този метод пасва на параметрите на данните и след това ги трансформира.
get_feature_names_out([input_features]) Този метод получава имената на характеристиките за трансформацията.
get_params([дълбоко]) Този метод дава параметрите на конкретния оценител.
inverse_transform(X[, копие]) Той намалява размера на данните, за да съответства на оригиналната им форма.
partial_fit(X[, y, тегло_на_пробата]) Средната стойност и стандартното отклонение на X се изчисляват онлайн за по-късно мащабиране.
set_params(**params) Този метод се използва за задаване на стойността на параметрите на оценителя.
трансформация (X[, копиране]) Този метод трансформира данните, като използва параметри, които вече са съхранени в класа.

Пример за StandardScaler

Първо, ще импортираме необходимите библиотеки. За да използваме функцията StandardScaler, трябва да импортираме библиотеката Sklearn.

След това ще заредим набора от данни за ириса. Можем да импортираме набора от данни на IRIS от библиотеката sklearn.datasets.

Ще създадем обект от класа StandardScaler.

Разделяне на независими и целеви характеристики.

Ще използваме метода fit transform(), за да реализираме трансформацията в набора от данни.

Синтаксис:

 object_ = StandardScaler() object_.fit_transform(features) 

Първоначално изградихме екземпляр на метода StandardScaler(), следвайки синтаксиса, споменат по-горе. Освен това ние стандартизираме данните, като използваме fit_transform() заедно с предоставения обект.

Код

 # Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_) 

Изход

 [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]