No puedo entender la página de StandardScaler
en la documentación de sklearn
.
¿Alguien puede explicarme esto en términos simples?
python
machine-learning
scikit-learn
scaling
standardized
nitinvijay23
fuente
fuente
each value in the dataset will have the sample mean value subtracted
-- esto no es verdad. La media de CADA característica / columna se restará de los valores de la columna específica. Esto se hace por columnas. No haysample mean value subtracted
- Vea mi respuesta a continuaciónIntroducción: supongo que tiene una matriz
X
donde cada fila / línea es una muestra / observación y cada columna es una variable / característica (esta es la entrada esperada para cualquiersklearn
función ML, por cierto,X.shape
debería ser[number_of_samples, number_of_features]
).Núcleo del método : La idea principal es la de normalizar / estandarizar decir,
μ = 0
yσ = 1
sus características / variables / columnas deX
, por separado , antes de aplicar cualquier modelo de aprendizaje de máquina.StandardScaler()
se normalizar las características , es decir, cada columna de X, INDIVIDUALMENTE , de modo que cada columna / función / variable de tendránμ = 0
yσ = 1
.PD: Encuentro la respuesta más votada en esta página, incorrecta. Estoy citando "a cada valor en el conjunto de datos se le restará el valor medio de la muestra". Esto no es cierto ni correcto.
Consulte también: Cómo y por qué estandarizar sus datos: un tutorial de Python
Ejemplo:
Verifique que la media de cada característica (columna) sea 0:
Verifique que el estándar de cada característica (columna) sea 1:
Las matemáticas:
ACTUALIZACIÓN 08/2019 : Con respecto a los parámetros de entrada
with_mean
ywith_std
aFalse
/True
, he proporcionado una respuesta aquí: Diferencia de StandardScaler entre "with_std = False or True" y "with_mean = False or True"fuente
[1.15, 1.15]
cuando calculo como pandas dfpd.DataFrame(scaled_data).std(0)
:?pd.DataFrame(scaled_data)[0]
obtengo una serie conName: 0, dtype: float64
valores y[-1.0, 1.0, -1.0, 1.0]
. Perdón por el formatoStandardScaler
, ¿hace que el algoritmo de aprendizaje automático sea más rápido o ayuda a tomar decisiones más precisas, o algo más?Cómo calcularlo:
Puede leer más aquí:
fuente
StandardScaler realiza la tarea de estandarización . Por lo general, un conjunto de datos contiene variables que son diferentes en escala. Por ejemplo, un conjunto de datos de Empleado contendrá una columna EDAD con valores en la escala 20-70 y una columna SALARIO con valores en la escala 10000-80000 .
Como estas dos columnas tienen una escala diferente, están estandarizadas para tener una escala común al crear el modelo de aprendizaje automático.
fuente
Esto es útil cuando desea comparar datos que corresponden a diferentes unidades. En ese caso, desea eliminar las unidades. Para hacer eso de una manera consistente de todos los datos, transforma los datos de manera que la varianza sea unitaria y que la media de la serie sea 0.
fuente
Las respuestas anteriores son geniales, pero necesitaba un ejemplo simple para aliviar algunas preocupaciones que he tenido en el pasado. Quería asegurarme de que efectivamente trataba cada columna por separado. Ahora estoy tranquilo y no puedo encontrar qué ejemplo me había preocupado. Todas las columnas SON escaladas por separado como se describe arriba.
CÓDIGO
SALIDA
fuente
A continuación se muestra un ejemplo de trabajo simple para explicar cómo funciona el cálculo de estandarización. La parte de la teoría ya está bien explicada en otras respuestas.
Cálculo
Como puede ver en la salida, la media es [6. , 2.5] y la desviación estándar es [1.41421356, 0.8660254]
Los datos son (0,1) la posición es 2 Estandarización = (2 - 2,5) /0,8660254 = -0,57735027
Los datos en la posición (1,0) son 4 Estandarización = (4-6) /1.41421356 = -1.414
Resultado después de la estandarización
Compruebe la desviación media y estándar después de la estandarización
Nota: -2,77555756e-17 está muy cerca de 0.
Referencias
Compare el efecto de diferentes escaladores en los datos con valores atípicos
¿Cuál es la diferencia entre normalización y estandarización?
La media de los datos escalados con sklearn StandardScaler no es cero
fuente
Después de aplicar
StandardScaler()
, cada columna en X tendrá una media de 0 y una desviación estándar de 1.Otros enumeran las fórmulas en esta página.
Justificación: algunos algoritmos requieren que los datos se vean así (consulte los documentos de sklearn ).
fuente