Estoy tratando de ajustar un modelo de regresión cuantil a mis datos de entrada. Me gustaría utilizar sklearn, pero estoy recibiendo un error de asignación de memoria cuando intento ajustar el modelo. Los mismos datos con la función equivalente de statsmodels funcionan bien.
El error que obtengo es el siguiente
numpy.core._exceptions._ArrayMemoryError: Unable to allocate 55.9 GiB for an array with shape (86636, 86636) and data type float64
No tiene sentido, mis X e y son las formas (86636, 4) y (86636, 1) respectivamente.
Este es mi guión:
import pandas as pd
import statsmodels.api as sm
from sklearn.linear_model import QuantileRegressor
training_df = pd.read_csv("/path/to/training_df.csv") # 86,000 rows
FEATURES = [
"feature_1",
"feature_2",
"feature_3",
"feature_4",
]
TARGET = "target"
# STATSMODELS WORKS FINE WITH 86,000, RUNS IN 2-3 SECONDS.
model_statsmodels = sm.QuantReg(training_df[TARGET], training_df[FEATURES]).fit(q=0.5)
# SKLEARN GIVES A MEMORY ALLOCATION ERROR, OR TAKES MINUTES TO RUN IF I SIGNIFICANTLY TRIM THE DATA TO < 1000 ROWS.
model_sklearn = QuantileRegressor(quantile=0.5, alpha=0)
model_sklearn.fit(training_df[FEATURES], training_df[TARGET])
El error que obtengo es el siguiente
He revisado la documentación de sklearn y estoy bastante seguro de que mis entradas están bien como dataframes, tengo los mismos problemas con NDarrays. Así que no estoy seguro de cuál es el problema. ¿Es posible que haya un problema con algo bajo el capó?
[Aquí][1] está la documentación de scikit-learn para QunatileRegressor.
Muchas gracias por cualquier ayuda / idea. [1]: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.QuantileRegressor.html