【问题标题】:Convert dictionary sparse matrix to numpy sparse matrix将字典稀疏矩阵转换为 numpy 稀疏矩阵
【发布时间】:2021-11-25 18:15:30
【问题描述】:

我对 numpy 和稀疏矩阵比较陌生。根据以下说明,我正在尝试将我的数据转换为稀疏矩阵

如果您采用当前格式并将数据作为字典读取,那么您可以轻松地将特征值映射转换为向量(您可以将这些向量选择为稀疏矩阵)。

给定一个 pandas DataFrame 如下

    sentiment  tweet_id                                              tweet
    0       neg         1  [(3083, 0.4135918197208131), (3245, 0.79102943...
    1       neg         2  [(679, 0.4192120119709425), (1513, 0.523940563...
    2       neg         3  [(225, 0.5013098541806313), (1480, 0.441928325...

我把它转换成字典-

sparse_mat = {
    (0, 3083): 0.4135918197208131, 
    (0, 3245): 0.7910294373931178, 
    (0, 4054): 0.4507928968357355, 
    (1, 679): 0.4192120119709425, 
    (1, 1513): 0.5239405639724402, 
    (1, 2663): 0.2689391233917331, 
    (1, 3419): 0.5679685442982928, 
    (1, 4442): 0.39348577488961367, 
    (2, 225): 0.5013098541806313, 
    (2, 1480): 0.44192832578442043, 
    (2, 2995): 0.3209783438156829, 
    (2, 3162): 0.4897198689787062, 
    (2, 3551): 0.2757628355961508, 
    (2, 3763): 0.3667287774412633
}

据我了解,这是一个有效的稀疏矩阵。我想将它存储为一个 numpy 对象,比如 csr_matrix。我尝试运行以下代码 -

csr_matrix(sparse_mat)

这给出了这个错误 -

TypeError: no supported conversion for types: (dtype('O'),)

我该怎么办?我错过了什么吗?

【问题讨论】:

    标签: python numpy matrix sparse-matrix


    【解决方案1】:

    来自文档:https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html

    from scipy.sparse import csr_matrix   
    
    d = {
        (0, 3083): 0.4135918197208131, 
        (0, 3245): 0.7910294373931178, 
        (0, 4054): 0.4507928968357355, 
        (1, 679): 0.4192120119709425, 
        (1, 1513): 0.5239405639724402, 
        (1, 2663): 0.2689391233917331, 
        (1, 3419): 0.5679685442982928, 
        (1, 4442): 0.39348577488961367, 
        (2, 225): 0.5013098541806313, 
        (2, 1480): 0.44192832578442043, 
        (2, 2995): 0.3209783438156829, 
        (2, 3162): 0.4897198689787062, 
        (2, 3551): 0.2757628355961508, 
        (2, 3763): 0.3667287774412633
    }
    
    keys = d.keys()
    row = [k[0] for k in keys]
    col = [k[1] for k in keys]
    data = list(d.values())
    
    sparse_arr = csr_matrix((data, (row, col)))
    arr = sparse_arr.toarray()
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2017-07-02
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2017-07-20
      • 2020-12-07
      相关资源
      最近更新 更多