ti-enxame.com

Python "TypeError: unhashable type: 'slice'" para codificar dados categóricos

Estou obtendo

TypeError: unhas Tipo lavável: 'fatia'

ao executar o código abaixo para codificar dados categóricos em Python. Alguém por favor pode ajudar?

# 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])
53
kausik Chat

X é um quadro de dados e não pode ser acessado por meio de terminologia de fatia como _X[:, 3]_. Você deve acessar via iloc ou X.values . No entanto, a maneira como você construiu X fez uma cópia ... então. Eu usaria 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])
_
85
piRSquared

use Valores ao criar a variável X ou ao codificar conforme mencionado acima

# 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
6
Renu

Ao criar a matriz X e Y, use values.

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

Definitivamente resolverá seu problema.

4
Gurbaksh Singh

se você usar .Values ​​ao criar os vetores X e Y da matriz, ele corrigirá o problema.

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

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

quando você usa .Values, ele cria uma representação de objeto da matriz criada, que será retornada com os eixos removidos. Verifique o link abaixo para obter mais informações

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

2
chandan p

Tente alterar X [:, 3] para X.iloc [:, 3] no codificador de etiquetas

0
Anvesh

Eu estava recebendo o mesmo erro (TypeError: unhashable type: 'slice') com o código abaixo:

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

Resolvido com o código abaixo, colocando iloc após o conjunto de dados:

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