IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python创建元路径的邻接矩阵 -> 正文阅读

[Python知识库]python创建元路径的邻接矩阵

此例构建的是用户-评分-用户的元路径。索引号即对应的用户id。


# 构建稀疏矩阵
import scipy.sparse as ss
from itertools import combinations, permutations
import numpy as np
import pandas as pd
def build_matrix(aa,l):#aa代表邻接矩阵索引号,l是最后要构建的邻接矩阵
    # aa = [0, 2, 3]
    A = list(permutations(aa, 2))  # aa代表的是邻接矩阵的索引号。
    print(A)  # 那些索引号的排列组合,即坐标,没有对角线。
    col = []
    row = []
    for i in range(len(A)):
        row.append(A[i][0])
        col.append(A[i][1])
    # print(row)
    # print(col)
    '''
    #https://www.cnblogs.com/hellojamest/p/11769467.html 关于稀疏矩阵知识详见此链接
    # data = [1] * len(A)
    # c = ss.coo_matrix((data, (row, col)), shape=(4, 4))  # 生成稀疏矩阵,shape是最后生成的矩阵大小。
    
    '''

    for i in range(len(row)):
        for j in range(len(col)):
            l[row[i],col[j]]=1
    # print(l.toarray())

#传数据,读取构建元路径所在列数据
#加载数据集
file_path = pd.read_excel(r"D:\BaiduNetdiskDownload\yelp\new10.xls",usecols=[8])#传进来当前我的文件夹路径,data_dir等是从命令行传进来的,即从配置文件那里

meta_data = []
# column_list = file_path.columns
index=0

#train_data中存储的所有评论
for d in file_path['rating']:
    meta_data.append(
       d)

# a=[1,2,1,1]#这就是要传入元路径
b=set(meta_data)#得到拥有的值
print(b)
newlist = []#将集合中的元素转到此列表中
l=ss.lil_matrix((len(meta_data),len(meta_data)))#最后想要创建的邻接矩阵
for i in b:
    newlist.append(i)#将集合转成列表

for i in range(len(newlist)):
    indices = []#存储索引
    start=0
    while newlist[i]!=-1:
        try:
            x = meta_data.index(newlist[i], start)
            indices.append(x)
            start = x + 1
        except:
            print(indices)
            build_matrix(indices,l)
            break
# print(l.toarray())#此时得到的邻接矩阵会在相关索引部分弄成对角线为1。
l[np.eye(len(meta_data),dtype=np.bool)]=0#将对角线变成0,即自身与自身的关联去掉
print(l.toarray())#得到最终的邻接矩阵

参考链接:
将对角线变成0

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:26:58  更:2022-02-26 11:28:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:35:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码