Estoy practicando modelos de regresión simples como introducción al aprendizaje automático. He revisado algunos modelos de muestra para la regresión múltiple, que es, creo, una extensión de la regresión lineal, pero con más de 1 característica. De los ejemplos que he visto, la sintaxis es la misma para la regresión lineal y la regresión múltiple. Recibo este error cuando ejecuto el siguiente código:

ValueError: x and y must be the same size.

¿Por qué recibo este error y cómo puedo solucionarlo?

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

df = pd.read_csv(r"C:\Users\****\Desktop\data.csv")

#x.shape =(20640, 2), y=(20640,)
X = df[['total_rooms', 'median_income']]
y = df['median_house_value']

X_test, y_test, X_train, y_train = train_test_split(X, y, test_size=.2, random_state=0)

reg = LinearRegression()
reg.fit(X_train, y_train)

¿Me estoy perdiendo un paso? Gracias por tu tiempo.

-1
Tyrone_Slothrop 21 abr. 2020 a las 05:55

2 respuestas

La mejor respuesta

Tiene un error en su train_test_split: el orden de los resultados es importante; El uso correcto es:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=0)

Consulte la documentación.

1
desertnaut 21 abr. 2020 a las 10:55

No tiene que hacer nada que no quiera hacer :-). Pero, en términos generales, querrá manejar cosas como la multicolinealidad de alguna manera, pero eso no significa necesariamente una reducción de la dimensionalidad.

¿Cuál es la forma de sus datos? Si tiene, digamos 20 características, pero 10k observaciones, no debería ser necesario reducir la dimensionalidad (al menos no en una primera pasada).

Pero si tiene, digamos, 1k características y 10k observaciones, entonces sería adecuado para un paso de reducción de dimensionalidad sin supervisión antes del alumno.

Es posible que primero desee probar alguna regularización (consulte https://web.stanford.edu/~hastie / ElemStatLearn /: puede descargar el libro de forma gratuita desde allí).

Entonces, por ejemplo, intente usar la clase ElasticNet en lugar de la clase LinearRegression. Es casi lo mismo, pero con una penalización en las normas $ L_1 $ y $ L_2 $ de los pesos. Esto tiende a ayudar con la generalización.

Sin saber mucho más acerca de su problema particular, es difícil decir algo más.

-2
Aaron 21 abr. 2020 a las 03:08