2016-01-26 30 views
2

我有一個像sframe:sFrame到scipy.sparse csr_matrix

x = sf.SFrame({'users': [{'123': 1.0, '122': 5}, 
{'134': 3.0, '123': 10}]}) 

我想轉換成scipy.sparse csr_matrix而不調用graphlab創建,但只使用sframe和Python。

怎麼辦呢?

回答

0

假設您希望行號是輸出稀疏矩陣中的行索引,唯一棘手的步驟是使用SFrame.stack - 從那裏您應該可以直接構建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)) 

我也在這裏硬編碼矩陣的維度,但這可能是你想要編程的東西。

+0

謝謝。這很有幫助。但是,我仍然有一些問題。我有一個user_len = 1444418322. 但是,以下沒有在Ubuntu的服務器上的Python工作。 (df_temp ['Total'],(df_temp ['ClusterId'],df_temp ['UserId'])),shape =(100,users_len + 1)) 但是它在redhat C3集羣上工作正常。 我認爲它可能與python的64設置或sklearn等一些不正確版本的庫有關。 請指教。 – dvshekar