logo

StandardScaler no Sklearn

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:

    copiar (bool, padrão = True): -Se este parâmetro estiver definido como True, tente evitar cópias e dimensionar as amostras no local. Não é necessariamente garantido que isso funcione no local; por exemplo, a função ainda pode retornar uma cópia se a entrada não estiver na forma de uma matriz NumPy ou de uma matriz CSR scipy.sparse.with_mean (bool, padrão = True): -Se o parâmetro estiver definido como True, dimensione os dados após centralizá-los. Quando aplicado a matrizes esparsas, isso falha (e gera uma exceção), pois centralizá-las exige a construção de uma matriz densa que, na maioria das circunstâncias de uso, espera-se que seja grande demais para caber no carneiro.with_std (bool, padrão = True): -Este parâmetro dimensiona os dados de entrada para a variação da unidade se for definido como verdadeiro (ou podemos dizer que faz o desvio padrão da unidade).

Atributos:

    scale_ (ndarray com formato de (n_features,) ou None): -Os dados são relativamente dimensionados para cada recurso com média zero e variação unitária.mean_ (ndarray com formato de (n_features,) ou None): -É o valor médio do conjunto de dados de treinamento para cada recurso. Quando o argumento with_mean é definido como False, esse valor é igual a None.var_ (ndarray com formato de (n_features,) ou None): -É o valor da variação de cada recurso no conjunto de dados de treinamento. É usado para determinar a escala dos recursos. Quando o argumento with_std é definido como False, esse valor é igual a None.n_features_in_ (do tipo _int): -Este atributo fornece o número de recursos detectados durante o ajuste.feature_names_in_ (ndarray tendo formato como (n_features_in_,)): -Este atributo são os recursos identificados por nomes durante o ajuste. X só é definido quando todos os seus nomes de recursos são do tipo string de dados.n_samples_seen_ (do tipo int ou um ndarray com formato como (n_features,)): -Isso fornece o número de amostras que o estimador examinou para cada recurso.

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]