logo

StandardScaler în Sklearn

Când și cum să utilizați StandardScaler?

Când caracteristicile setului de date dat fluctuează semnificativ în intervalele lor sau sunt înregistrate în diferite unități de măsură, StandardScaler intră în imagine.

Datele sunt scalate la o varianță de 1 după ce media este redusă la 0 prin StandardScaler. Dar atunci când se determină media empirică a datelor și abaterea standard, valorile aberante prezente în date au un impact semnificativ care reduce spectrul valorilor caracteristice.

Mulți algoritmi de învățare automată pot întâmpina probleme din cauza acestor variații ale caracteristicilor de pornire. Pentru algoritmii care calculează distanța, de exemplu, dacă oricare dintre caracteristicile setului de date au valori cu intervale mari sau complet diferite, acea caracteristică specială a setului de date va controla calculul distanței.

Funcția StandardScaler a lui sklearn se bazează pe teoria conform căreia variabilele setului de date ale căror valori se află în intervale diferite nu au o contribuție egală la parametrii de potrivire ai modelului și la funcția de antrenament și pot duce chiar la părtinire în predicțiile făcute cu modelul respectiv.

converti un șir într-un număr întreg

Prin urmare, înainte de a include caracteristicile în modelul de învățare automată, trebuie să normalizăm datele (µ = 0, σ = 1). Standardizarea în ingineria caracteristicilor este folosită în mod obișnuit pentru a rezolva această problemă potențială.

java împărțiți șirul după delimitator

Standardizarea folosind Sklearn

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

Prin eliminarea mediei din caracteristici și scalarea acestora la variația unității, caracteristicile sunt standardizate folosind această funcție.

Formula pentru calcularea scorului standard al unei caracteristici este z = (x - u) / s, unde u este media caracteristicii de antrenament (sau zero dacă with_mean = False) și s este abaterea standard a eșantionului (sau una dacă with_std = False ).

Prin calcularea statisticilor pertinente asupra caracteristicilor din setul de antrenament, centrarea și scalarea sunt aplicate independent fiecărei caracteristici. Apoi, pentru utilizarea cu mostre ulterioare folosind transform(), metoda fit() stochează media și abaterea standard.

Parametri:

    copie (bool, implicit = True):-Dacă acest parametru este setat la True, încercați să evitați copii și să scalați mostrele la locul lor. Acest lucru nu este neapărat garantat să funcționeze în loc; de exemplu, funcția poate returna în continuare o copie dacă intrarea nu este sub forma unui tablou NumPy sau a unei matrice CSR scipy.sparse.with_mean (bool, implicit = True):-Dacă parametrul este setat la True, scalați datele după ce le centrați. Când se aplică matricelor rare, acest lucru eșuează (și ridică o excepție), deoarece centrarea lor necesită construirea unei matrice dense care, în majoritatea circumstanțelor de utilizare, este de așteptat să fie prea mare pentru a se potrivi în berbec.with_std (bool, implicit = True):-Acest parametru scalează datele de intrare la varianța unității dacă este setat la adevărat (sau putem spune că face o abatere standard a unității).

Atribute:

    scale_ (ndarray având forma (n_features,) sau None):-Datele sunt scalate relativ pentru fiecare caracteristică cu media zero și variația unitară.mean_ (ndarray având forma (n_features,) sau None):-Este valoarea medie a setului de date de antrenament pentru fiecare caracteristică. Când argumentul with_mean este setat la Fals, această valoare este egală cu None.var_ (ndarray având forma (n_features,) sau None):-Este valoarea variației fiecărei caracteristici în setul de date de antrenament. Este folosit pentru a determina scara caracteristicilor. Când argumentul with_std este setat la Fals, această valoare este egală cu None.n_features_in_ (de tip _int):-Acest atribut oferă numărul de caracteristici observate la montare.feature_names_in_ (ndarray având forma ca (n_features_in_,)):-Acest atribut este caracteristicile identificate prin nume în timpul montajului. X este definit numai atunci când toate numele caracteristicilor sale sunt de tip șir de date.n_samples_seen_ (de tip int sau un ndarray având forma ca (n_features,)):-Aceasta oferă numărul de eșantioane pe care estimatorul le-a examinat pentru fiecare caracteristică.

Metode ale clasei StandardScaler

potrivire(X[, y, greutate_eșantion]) Această metodă calculează media și abaterea standard pentru a le utiliza ulterior pentru scalarea datelor.
potrivire_transforma(X[, y]) Această metodă se potrivește parametrilor datelor și apoi le transformă.
get_feature_names_out([input_features]) Această metodă obține numele caracteristicilor pentru transformare.
get_params([deep]) Această metodă oferă parametrii unui anumit estimator.
transformare_inversa(X[, copie]) Reduce dimensiunea datelor pentru a se potrivi cu forma inițială.
partial_fit(X[, y, sample_weight]) Media și abaterea standard pe X sunt calculate online pentru scalare ulterioară.
set_params(**params) Această metodă este utilizată pentru a seta valoarea parametrilor estimatorului.
transform(X[, copie]) Această metodă transformă datele utilizând parametrii deja stocați în clasă.

Exemplu de StandardScaler

În primul rând, vom importa bibliotecile necesare. Pentru a folosi funcția StandardScaler, trebuie să importam biblioteca Sklearn.

Apoi vom încărca setul de date iris. Putem importa setul de date IRIS din biblioteca sklearn.datasets.

Vom crea un obiect din clasa StandardScaler.

Separarea caracteristicilor independente și țintă.

sunt exemple model

Vom folosi metoda fit transform() pentru a implementa transformarea în setul de date.

Sintaxă:

 object_ = StandardScaler() object_.fit_transform(features) 

Am construit inițial o instanță a metodei StandardScaler() urmând sintaxa menționată mai sus. În plus, standardizăm datele utilizând fit_transform() împreună cu obiectul furnizat.

Cod

numele produselor de machiaj
 # 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_) 

Ieșire

 [[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]