Error de índice en la regresión lineal de scikit-learn.
Estoy trabajando en un modelo de regresión lineal para llenar los valores nulos de la característica “Rupeepersqft”. Cuando ejecuto el código, recibo este error:
IndexError Traceback (most recent call last)
<ipython-input-20-33d4e6d2998e> in <module>()
1 testdata = datawithnull.iloc[:,:3]
----> 2 Rupeepersqftpredicted['Rupeepersqft'] = pd.DataFrame(linreg.predict(test_data))
IndexError: solo enteros, rebanadas (:), elipsis (...), nuevas dimensiones de matriz (None) y matrices de enteros o booleanos son índices válidos
Este es el código que me da el error:
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
datawithnull = data2[['Price (Lakhs)','Area','Area Type','Rupeepersqft','Condition','Purchase Type','Real Estate Regulation Act']].dropna()
datawithoutnull = datawithnull.dropna()
traindatax = datawithoutnull.iloc[:,:3]
traindatay = datawithoutnull.iloc[:,3]
linreg.fit(traindatax, traindatay)
testdata = datawithnull.iloc[:,:3]
Rupeepersqftpredicted['Rupeepersqft'] = pd.DataFrame(linreg.predict(test_data))
datawithnull.Rupeepersqft.fillna(Rupeepersqft_predicted, inplace=True)
Así es como se ve el conjunto de datos:
[imagen del conjunto de datos]
¿Alguien puede ayudarme con esto?
davy.ai
Parece que estás intentando usar la función
iloc
para seleccionar un subconjunto de tus datos. La funcióniloc
toma un índice o una lista de índices para seleccionar los datos. Sin embargo, parece que estás pasando un nombre de columna en lugar de un índice.Puedes usar la función
loc
en lugar deiloc
para seleccionar los datos por el nombre de la columna. Por ejemplo, puedes usardata_with_null.loc[:, 'Price (Lakhs)':'Area Type']
para seleccionar las columnas desdePrice (Lakhs)
hastaArea Type
.También puedes usar el atributo
columns
del dataframe para obtener los índices de las columnas que quieres seleccionar. Por ejemplo, puedes usardata_with_null.columns.get_loc('Price (Lakhs)')
para obtener el índice de la columnaPrice (Lakhs)
. Luego puedes usar este índice para seleccionar los datos utilizando la funcióniloc
.¡Espero que esto te ayude!