Python “TypeError: tipo inestable: ‘slice’” para codificar datos categóricos

estoy obteniendo

TypeError: tipo unsashable: ‘slice’

al ejecutar el siguiente código para codificar datos categóricos en Python. Alguien puede ayudarme porfavor?

# Importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importing the dataset dataset = pd.read_csv('50_Startups.csv') y=dataset.iloc[:, 4] X=dataset.iloc[:, 0:4] # Encoding categorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[:, 3] = labelencoder_X.fit_transform(X[:, 3]) 

X es un dataframe y no se puede acceder a él mediante la terminología de división como X[:, 3] . Debes acceder a través de iloc o X.values Sin embargo, la forma en que construiste X hizo una copia … así. Yo uso values

 # Importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importing the dataset # dataset = pd.read_csv('50_Startups.csv') dataset = pd.DataFrame(np.random.rand(10, 10)) y=dataset.iloc[:, 4] X=dataset.iloc[:, 0:4] # Encoding categorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() # I changed this line X.values[:, 3] = labelencoder_X.fit_transform(X.values[:, 3]) 

use los valores al crear la variable X o al codificar como se mencionó anteriormente

 # Importing the libraries import numpy as np import matplotlib.pyplot as plt import pandas as pd # Importing the dataset # dataset = pd.read_csv('50_Startups.csv') dataset = pd.DataFrame(np.random.rand(10, 10)) y=dataset.iloc[:, 4].values X=dataset.iloc[:, 0:4].values 

Durante la creación de la matriz X y el vector Y usan values .

 X=dataset.iloc[:,4].values Y=dataset.iloc[:,0:4].values 

Definitivamente resolverá su problema.

si usa .Values ​​al crear los vectores de matriz X e Y, se solucionará el problema.

 y=dataset.iloc[:, 4].values X=dataset.iloc[:, 0:4].values 

cuando usa .Values, crea una representación de Objeto de la matriz creada que se devolverá con los ejes eliminados. Consulte el siguiente enlace para más información.

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.values.html

Recibí el mismo error (TypeError: tipo inestable: ‘slice’) con el siguiente código:

 included_cols = [2,4,10] dataset = dataset[:,included_cols] #Columns 2,4 and 10 are included. 

Resuelto con el siguiente código poniendo iloc después del conjunto de datos:

 included_cols = [2,4,10] dataset = dataset.iloc[:,included_cols] #Columns 2,4 and 10 are included. 

Intente cambiando X [:, 3] a X.iloc [:, 3] en el codificador de tags

Sus valores de x e y no se están ejecutando, por lo que, en primer lugar, debe comenzar a escribir este punto.

  import numpy as np import pandas as pd import matplotlib as plt dataframe=pd.read_csv(".\datasets\Position_Salaries.csv") x=dataframe.iloc[:,1:2].values y=dataframe.iloc[:,2].values x1=dataframe.iloc[:,:-1].values 

punto de valor han publicado