EmpezarEmpieza gratis

Estandarizar datos

Algunos modelos, como K-nearest neighbors (KNN) y las redes neuronales, funcionan mejor con datos escalados, así que vamos a estandarizar los datos.

También eliminaremos variables poco relevantes (día de la semana) según las importancias de las características, indexando los DataFrames de características con .iloc[]. KNN usa distancias para encontrar puntos similares en sus predicciones, de modo que las variables con valores grandes pesan más que las pequeñas. Escalar los datos corrige ese problema.

sklearn y su scale() estandarizan los datos, fijando la media en 0 y la desviación estándar en 1. Idealmente, querríamos usar StandardScaler con fit_transform() en los datos de entrenamiento y fit() en los de prueba, pero aquí estamos limitados a 15 líneas de código.

Una vez escalados los datos, comprobaremos que ha funcionado trazando histogramas de los datos.

Este ejercicio forma parte del curso

Machine Learning para finanzas con Python

Ver curso

Instrucciones del ejercicio

  • Elimina las características de día de la semana de las características de entrenamiento/prueba usando .iloc (día de la semana son las últimas 4 características).
  • Estandariza train_features y test_features usando scale() de sklearn; guarda las características escaladas como scaled_train_features y scaled_test_features.
  • Dibuja un histograma de la media móvil del RSI de 14 días (indexada en [:, 2]) a partir de train_features sin escalar en el primer subgráfico (ax[0]).
  • Dibuja un histograma de la media móvil del RSI de 14 días estandarizada en el segundo subgráfico (ax[1]).

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

from sklearn.preprocessing import scale

# Remove unimportant features (weekdays)
train_features = train_features.iloc[:, :-4]
test_features = test_features.____

# Standardize the train and test features
scaled_train_features = scale(train_features)
scaled_test_features = ____

# Plot histograms of the 14-day SMA RSI before and after scaling
f, ax = plt.subplots(nrows=2, ncols=1)
train_features.iloc[:, 2].hist(ax=____)
ax[1].hist(scaled_train_features[:, 2])
plt.show()
Editar y ejecutar código