Quando e como usar o StandardScaler?
Quando os recursos de um determinado conjunto de dados flutuam significativamente dentro de seus intervalos ou são registrados em várias unidades de medida, o StandardScaler entra em cena.
Os dados são dimensionados para uma variação de 1 depois que a média é reduzida para 0 por meio do StandardScaler. Mas ao determinar a média empírica dos dados e o desvio padrão, os valores discrepantes presentes nos dados têm um impacto significativo que reduz o espectro de valores característicos.
Muitos algoritmos de aprendizado de máquina podem encontrar problemas devido a essas variações nos recursos iniciais. Para algoritmos que calculam distâncias, por exemplo, se algum dos recursos do conjunto de dados tiver valores com intervalos grandes ou completamente diferentes, esse recurso específico do conjunto de dados controlará o cálculo da distância.
A função StandardScaler do sklearn é baseada na teoria de que as variáveis do conjunto de dados cujos valores estão em intervalos diferentes não têm uma contribuição igual para os parâmetros de ajuste e função de treinamento do modelo e podem até levar a vieses nas previsões feitas com esse modelo.
Portanto, antes de incluir os recursos no modelo de aprendizado de máquina, devemos normalizar os dados (µ = 0, σ = 1). A padronização na engenharia de recursos é comumente empregada para resolver esse problema potencial.
Padronizando usando Sklearn
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
Ao eliminar a média dos recursos e escalá-los para a variação unitária, os recursos são padronizados usando esta função.
A fórmula para calcular a pontuação padrão de um recurso é z = (x - u) / s, onde u é a média do recurso de treinamento (ou zero se with_mean = False) e s é o desvio padrão da amostra (ou um se with_std = False ).
Ao calcular as estatísticas pertinentes sobre os recursos do conjunto de treinamento, a centralização e o dimensionamento são aplicados independentemente a cada recurso. Então, para uso com amostras posteriores usando transform(), o método fit() armazena a média e o desvio padrão.
java adicionando a um array
Parâmetros:
Atributos:
Métodos da classe StandardScaler
ajuste(X[, y, peso_amostra]) | Este método calcula a média e o desvio padrão para usar posteriormente para dimensionar os dados. |
fit_transform(X[, y]) | Este método ajusta os parâmetros dos dados e depois os transforma. |
get_feature_names_out([input_features]) | Este método obtém os nomes dos recursos da transformação. |
get_params([profundo]) | Este método fornece os parâmetros do estimador específico. |
transformação_inversa(X[, copiar]) | Reduz o tamanho dos dados para corresponder à sua forma original. |
ajuste_parcial(X[, y, peso_amostra]) | A média e o desvio padrão em X são calculados online para dimensionamento posterior. |
set_params(**params) | Este método é usado para definir o valor dos parâmetros do estimador. |
transformar(X[, copiar]) | Este método transforma os dados usando parâmetros já armazenados na classe. |
Exemplo de StandardScaler
Primeiramente, importaremos as bibliotecas necessárias. Para usar a função StandardScaler, precisamos importar a biblioteca Sklearn.
1 de 1000
Em seguida, carregaremos o conjunto de dados da íris. Podemos importar o conjunto de dados IRIS da biblioteca sklearn.datasets.
Criaremos um objeto da classe StandardScaler.
Separando os recursos independentes e de destino.
Usaremos o método fit transform() para implementar a transformação no conjunto de dados.
Sintaxe:
object_ = StandardScaler() object_.fit_transform(features)
Inicialmente construímos uma instância do método StandardScaler() seguindo a sintaxe mencionada acima. Além disso, padronizamos os dados usando fit_transform() junto com o objeto fornecido.
Código
# 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_)
Saída
[[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]