En supposant que vous voulez que le numéro de ligne soit l'index de ligne dans la matrice de sortie clairsemée, la seule étape délicate consiste à utiliser SFrame.stack
- à partir de là, vous devriez pouvoir directement construire csr_matrix
.
import sframe as sf
from scipy.sparse import csr_matrix
x = sf.SFrame({'users': [{'123': 1.0, '122': 5},
{'134': 3.0, '123': 10}]})
x = x.add_row_number('row_id')
x = x.stack('users')
A = csr_matrix((x['X3'], (x['row_id'], x['X2'])),
shape=(2, 135))
Je suis aussi coder en dur la dimension de la matrice, mais c'est probablement quelque chose que vous voulez comprendre programmtically.
Merci. C'était utile. Mais, j'ai toujours un problème. J'ai un user_len = 1444418322. Mais, ce qui suit ne fonctionne pas sur python sur le serveur ubuntu. df_csr = csr_matrix ((df_temp ['Total'], (df_temp ['ClusterId'], df_temp ['UserId'])), forme = (100, users_len + 1)) Mais cela a fonctionné sur un cluster redhat C3. Je pense que cela peut avoir à faire avec le paramètre 64 pour python ou une version incorrecte des bibliothèques comme sklearn. S'il vous plaît aviser. – dvshekar