SciPy – Valor de Error: todas las dimensiones de la matriz de entrada para el eje de concatenación deben coincidir exactamente.
Estoy trabajando en un problema en el que necesito usar SciPy para realizar una regresión lineal y obtener los pesos y las estadísticas de los pesos, pero recibo el error “ValueError: todas las dimensiones del arreglo de entrada para el eje de concatenación deben coincidir exactamente, pero a lo largo de la dimensión 1, el arreglo en el índice 0 tiene tamaño 11 y el arreglo en el índice 1 tiene tamaño 100”.
El código es simplemente:
from scipy import stats
x = xcopy
y = ycopy
stats.linregress(x, y)
Donde x es un dataframe e y es un arreglo numpy.
Cuando ejecuto x.shape e y.shape, obtengo que x es (100, 11) e y es (100,). Ejecutando exactamente las mismas matrices en np.linalg.lstsq y sklearn.linear_model.LinearRegression ambos funcionan sin problemas y dan como resultado los pesos, pero según tengo entendido, necesito SciPy para obtener las estadísticas de los pesos en sí.
También he verificado los tipos de datos de x con x.dtypes y todos las variables son float64, y y.dtype también devuelve float64. También he intentado reemplazar x en la llamada de regresión con x.to_numpy () en caso de que hubiera algo con los encabezados / índices, pero recibí el mismo problema.
¿Algún consejo?
Edit:
“`
ValueError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel28012/197024375.py in
~\anaconda3\lib\site-packages\scipy\stats_statsmstatscommon.py en linregress(x, y, alternative) 153 # ssxm = mean( (x-mean(x))^2 ) 154 # ssxym = mean( (x-mean(x)) * (y-mean(y)) ) –> 155 ssxm, ssxym, _, ssym = np.cov(x, y, bias=1).flat 156 157 # R-value
~\anaconda3\lib\site-packages\numpy\lib\function_base.py in cov(m, y, rowvar, bias, ddof, fweights, aweights, dtype) 2426 if not rowvar and y.shape[0] != 1: 2427 y = y.T -> 2428 X = np.concatenate((X, y), axis=0) 2429 2430 if ddof is None:
ValueError: todas las dimensiones del arreglo de entrada para el eje de concatenación deben coincidir exactamente, pero a lo largo de la dimensión 1, el arreglo en el índice 0 tiene tamaño 11 y el arreglo en el índice 1 tiene tamaño 100“`
davy.ai
Parece que el problema está en la llamada a
np.concatenate
en la funciónnp.cov
. Parece que los arreglosx
ey
no tienen el mismo tamaño a lo largo del eje de concatenación.Se puede intentar asegurarse de que los arreglos
x
ey
tengan el mismo tamaño a lo largo del eje de concatenación utilizandonp.reshape
onp.resize
en uno de los arreglos antes de pasarlos anp.cov
.