Je reçois
TypeError: type inshashable: 'slice'
lors de l'exécution du code ci-dessous pour l'encodage de données catégoriques en Python. quelqu'un peut-il aider s'il vous plait?
# 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
est un cadre de données auquel il est impossible d'accéder via une terminologie de tranche telle que _X[:, 3]
_. Vous devez accéder via iloc
ou X.values
. Cependant, la façon dont vous avez construit X
en a fait une copie ... donc. J'utiliserais 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])
_
utiliser des valeurs lors de la création de la variable X ou lors de l'encodage comme indiqué ci-dessus
# 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
Lors de la création de la matrice X
et Y
vecteur, utilisez values
.
X=dataset.iloc[:,4].values
Y=dataset.iloc[:,0:4].values
Cela résoudra définitivement votre problème.
si vous utilisez .Values lors de la création des vecteurs matrices X et Y, le problème sera résolu.
y=dataset.iloc[:, 4].values
X=dataset.iloc[:, 0:4].values
lorsque vous utilisez .Values, il crée une représentation Object de la matrice créée qui sera renvoyée avec les axes supprimés. Consultez le lien ci-dessous pour plus d'informations
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.values.html
Essayez en remplaçant X [:, 3] par X.iloc [:, 3] dans l'encodeur de libellé.
Je recevais la même erreur (TypeError: type insaisissable: 'slice') avec le code ci-dessous:
included_cols = [2,4,10]
dataset = dataset[:,included_cols] #Columns 2,4 and 10 are included.
Résolu avec le code ci-dessous en plaçant iloc après l'ensemble de données:
included_cols = [2,4,10]
dataset = dataset.iloc[:,included_cols] #Columns 2,4 and 10 are included.