transformer scipy éparses de la rse pour les pandas?
J'ai utilisé le
sklearn.preprocessing.OneHotEncoder
pour transformer des données, la sortie est scipy.sparse.csr.csr_matrix
comment puis-je l'intégrer dans mon dataframe avec les autres colonnes?
J'ai essayé d'utiliser pd.concat
mais je reçois
TypeError: cannot concatenate a non-NDFrame object
Grâce
OriginalL'auteur KillerSnail | 2016-05-01
Vous devez vous connecter pour publier un commentaire.
Si A est
csr_matrix
, vous pouvez utiliser.toarray()
(il y a aussi.todense()
qui produit unnumpy
matrix
, qui travaille également pour laDataFrame
constructeur):Vous pouvez ensuite utiliser ce avec
pd.concat()
.Dans la version 0.20,
pandas
introduit des données éparses structures, y compris laSparseDataFrame
.Alternativement, vous pouvez passer des matrices creuses pour
sklearn
pour éviter de manquer de mémoire lors de la conversion de retour àpandas
. Il suffit de convertir vos autres données de format creux par le passage d'unnumpy
array
à lascipy.sparse.csr_matrix
constructeur et l'utilisationscipy.sparse.hstack
à combiner (voir docs).Vous pouvez prendre un coup d'oeil à pandas éparses structures de données
Est-il possible que je peux transmettre mes valeurs des étiquettes pour la nouvelle dataframe? E. g., si le codeur à chaud ont une valeur donnée de la colonne 'lettre' avec 'a a b b c a' que mon nouveau dataframe serait dirigée par letter_a, letter_b etc, un peu comme avec le mannequin-encoder?
Résolu ce problème en passant des arguments différents pour le mannequin de l'encodeur
OriginalL'auteur Stefan
Vous pouvez également éviter le retour d'une matrice creuse, en premier lieu, le paramètre
sparse
àFalse
lors de la création de l'Encodeur.La documentation de l' OneHotEncoder états:
Vous pouvez ensuite appeler à nouveau le DataFrame constructeur de transformer le tableau numpy pour un DataFrame.
OriginalL'auteur scriptator