es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 4 y = ycopy 5 6 stats.linregress(x.values, y) 7 x.values.shape

~\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

in cov(args, *kwargs)

~\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:

in concatenate(args, *kwargs)

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“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la llamada a np.concatenate en la función np.cov. Parece que los arreglos x e y no tienen el mismo tamaño a lo largo del eje de concatenación.

    Se puede intentar asegurarse de que los arreglos x e y tengan el mismo tamaño a lo largo del eje de concatenación utilizando np.reshape o np.resize en uno de los arreglos antes de pasarlos a np.cov.

Comments are closed.