【问题标题】:sFrame into scipy.sparse csr_matrixsFrame 变成 scipy.sparse csr_matrix
【发布时间】:2016-01-26 01:54:37
【问题描述】:

我有一个类似的框架:

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

我想在不调用 graphlab create 的情况下转换为 scipy.sparse csr_matrix,但只使用 sframe 和 Python。

怎么做?

【问题讨论】:

    标签: python sframe


    【解决方案1】:

    假设您希望行号成为输出稀疏矩阵中的行索引,唯一棘手的步骤是使用 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))
    

    我也在此处对矩阵的维度进行了硬编码,但这可能是您想要通过编程方式计算出来的内容。

    【讨论】:

    • 谢谢。这很有帮助。但是,我仍然有一些问题。我有一个 user_len = 1444418322。但是,以下在 ubuntu 服务器上的 python 上不起作用。 df_csr = csr_matrix((df_temp['Total'], (df_temp['ClusterId'], df_temp['UserId'])),shape=(100, users_len+1)) 但它确实适用于redhat C3集群。我认为这可能与 python 的 64 设置或某些不正确版本的库(如 sklearn)有关。请指教。
    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多