J'essaie de One Hot Encode catégories catégorielles dans mon ensemble de données. J'utilise la fonction suivante:
def create_ohe(df, col):
le = LabelEncoder()
a = le.fit_transform(df_new[col]).reshape(-1,1)
ohe = OneHotEncoder(sparse=False)
column_names = [col + "_" + str(i) for i in le.classes_]
return (pd.DataFrame(ohe.fit_transform(a), columns=column_names))
J'obtiens MemoryError lorsque j'appelle la fonction dans cette boucle:
for column in categorical_columns:
temp_df = create_ohe(df_new, column)
temp = pd.concat([temp, temp_df], axis=1)
Traceback d'erreur:
MemoryError Traceback (most recent call last)
<ipython-input-40-9b241e8bf9e6> in <module>
1 for column in categorical_columns:
----> 2 temp_df = create_ohe(df_new, column)
3 temp = pd.concat([temp, temp_df], axis=1)
4 print("\nShape of final df after one hot encoding: ", temp.shape)
<ipython-input-34-1530423fdf06> in create_ohe(df, col)
8 ohe = OneHotEncoder(sparse=False)
9 column_names = [col + "_" + str(i) for i in le.classes_]
---> 10 return (pd.DataFrame(ohe.fit_transform(a), columns=column_names))
MemoryError:
1 réponse
Une erreur de mémoire signifie que votre ordinateur utilise au maximum votre mémoire (RAM) ou que python est au maximum: Erreurs de mémoire et limites de liste?
vous pouvez essayer de diviser la méthode a = le.fit_transform(df_new[col]).reshape(-1,1)
. Essayez d'exécuter b= le.fit(df_new[col])
afin que vous adaptiez votre encodeur d'étiquettes avec l'ensemble de données complet, puis vous pourriez le fractionner pour ne pas le transformer pour chaque ligne en même temps, cela peut peut-être vous aider. Si b= le.fit(df_new[col])
ne fonctionne pas non plus, vous avez un problème de mémoire, le col
que vous devez remplacer par les noms de vos colonnes.
fit_transform
est une combinaison de fit
et transform
.
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.