最近有个妹子问我共现矩阵python怎么实现?

大致写了下,顺便记下笔记 …

关于共现矩阵是什么,可以参考这篇博文python构建关键词共现矩阵

本文提供另一思路:

  • 以列表存储数据为例:
    在这里插入图片描述
    步骤1:针对每一个样本,利用itertools库中的combinations函数构建排列组合,然后输出一个这样的DataFrame 针对第一个样本,可以构建6中两两的排列组合
    在这里插入图片描述
    ·针对第二个样本,同样可以构建6中两两的排列组合
    在这里插入图片描述
    步骤2: 将两个DataFrame合并成一个
    在这里插入图片描述
    步骤3: 重复统计
    在这里插入图片描述
    步骤4: 利用unstack函数生成共现矩阵
    在这里插入图片描述

  • 完整代码

import pandas as pd
from itertools import combinations

def Get_matrix(df_list):
    '''
        获取共现矩阵
    '''
    df = pd.DataFrame()
    for i in df_list:
        df = pd.concat([df,i])
    df = pd.DataFrame(df.value_counts())
    df.columns = ['counts']
    df = df.unstack(level=1).fillna(0)
    
    return df


def count_list(list_):
    '''
        排列组合
    '''
    list_ = [c for c in combinations(list_, 2)] + [(i[-1],i[0]) for i in [c for c in combinations(list_, 2)]]
    df = pd.DataFrame(list_,columns=['x1','x2'])
    
    return df

if __name__ == "__main__":
    
    data_list = [
        ['I' ,'like','learning'],
        ['I' ,'like','playing'],
    ]
    df_list = [count_list(i) for i in data_list]            # 排列组合
    res_df = Get_matrix(df_list)                            # 获取共现矩阵

.
.
.
.
.
.
.
.

最后,文章中有不足之处,欢迎指正

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐