7 votes

SciPy NumPy et SciKit-learn , créer une matrice éparse.

Je suis actuellement en train d'essayer de classer du texte. Mon jeu de données est trop grand et comme suggéré aquí j'ai besoin d'utiliser une matrice éparse. Ma question est maintenant, quelle est la bonne façon d'ajouter un élément à une matrice éparse ? Disons par exemple que j'ai une matrice X qui est mon entrée.

X = np.random.randint(2, size=(6, 100))

Maintenant, cette matrice X ressemble à un ndarray d'un ndarray (ou quelque chose comme ça).

Si je le fais

X2 = csr_matrix(X)

J'ai la matrice éparse, mais comment puis-je ajouter un autre élément à la matrice éparse ? par exemple cet élément dense : [1,0,0,0,1,1,1,0,...,0,1,0] en un vecteur clairsemé, comment puis-je l'ajouter à la matrice clairsemée d'entrée ?

(btw, je suis très novice en python, scipy, numpy, scikit ... tout)

14voto

zenpoy Points 6175

Scikit-learn dispose d'une excellente documentation, avec des tutoriels que l'on peut vraiment devrait lisez avant d'essayer de l'inventer vous-même. Ce site est le premier à lire ; il explique comment classer un texte, étape par étape, et celui-ci est un exemple détaillé de la classification de textes à l'aide de la représentation éparse.

Prêtez une attention particulière aux parties où ils parlent des représentations éparses, en ce section. En général, si vous voulez utiliser svm avec un noyau linéaire et que vous avez une grande quantité de données, LinearSVC (qui est basé sur Liblinear) est meilleur.

En ce qui concerne votre question - je suis sûr qu'il existe de nombreuses façons de concaténer deux matrices éparses (en fait, c'est ce que vous devriez rechercher dans google pour d'autres façons de le faire), en voici une, mais vous devrez convertir de csr_matrix en coo_matrix qui est un autre type de matrice éparse : Existe-t-il un moyen efficace de concaténer des matrices scipy.sparse ? .

EDITAR: Lorsque l'on concatène deux matrices (ou une matrice et un tableau qui est une matrice à 1 dimension), l'idée générale est de concaténer X1.data y X2.data et manipuler leurs indices y indptr (ou row y col en cas de coo_matrix ) pour pointer vers les bons endroits. Certaines représentations éparses sont meilleures pour des opérations spécifiques et plus complexes pour d'autres opérations. csr_matrix et voir si c'est la meilleure représentation. Mais je vous conseille vivement de commencer par les tutoriels que j'ai postés ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X