国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 將關(guān)系對(duì)數(shù)據(jù)轉(zhuǎn)換為圖數(shù)據(jù) / 鄰接矩陣

這篇具有很好參考價(jià)值的文章主要介紹了Python 將關(guān)系對(duì)數(shù)據(jù)轉(zhuǎn)換為圖數(shù)據(jù) / 鄰接矩陣。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. 前言

在深度學(xué)習(xí)任務(wù),例如推薦系統(tǒng)中,將關(guān)系轉(zhuǎn)換為圖表示,即鄰接矩陣是常用的操作。

通常的做法是先將關(guān)系對(duì)數(shù)據(jù)轉(zhuǎn)換為圖數(shù)據(jù),然后生成該圖的鄰接矩陣,再存儲(chǔ)為稀疏矩陣。但這種方法不適用于大型矩陣的操作,通常會(huì)報(bào)內(nèi)存溢出的錯(cuò)誤。以推薦系統(tǒng)的Amazon的評(píng)級(jí)數(shù)據(jù)為例(Movielens等同理),這里提供一種方法將圖數(shù)據(jù)直接存儲(chǔ)為稀疏矩陣。

數(shù)據(jù)格式示意圖,實(shí)際只要用到user_id和item_id兩列,且不需要表頭:
Python 將關(guān)系對(duì)數(shù)據(jù)轉(zhuǎn)換為圖數(shù)據(jù) / 鄰接矩陣

2. 傳統(tǒng)方法

傳統(tǒng)方法先讀入數(shù)據(jù),然后獲取關(guān)系對(duì),將關(guān)系對(duì)保存為圖,再用networkx.to_numpy_matrix()提取圖的鄰接矩陣,最后用scipy.sparse.csr_matrix()保存為稀疏矩陣。代碼如下:

# 導(dǎo)入包
import scipy.sparse as sp
import pandas as pd
import networkx as nx

# 讀取關(guān)系對(duì)數(shù)據(jù)
df = pd.read_table('ratings.txt', sep=' ', header=None) # 讀取數(shù)據(jù)集為 pandas
relation_df = pd.DataFrame(df, columns=[0, 1]) # 取出交互關(guān)系

# pandas 轉(zhuǎn) numpy
relation_list = []
for index, row in relation_df.iterrows(): 
    relation_list.append((row[0], row[1]))

g = nx.Graph(relation_list) # 交互關(guān)系轉(zhuǎn)換為圖
d_A = nx.to_numpy_matrix(g) # 生成圖的鄰接矩陣 numpy

s_A = sp.csr_matrix(d_A) # numpy 轉(zhuǎn)換為 稀疏矩陣
sp.save_npz('adj.npz', s_A)  # 保存稀疏矩陣
# csr_matrix_variable = sp.load_npz('adj.npz') # 讀取稀疏矩陣

3. 直接轉(zhuǎn)換為稀疏矩陣

傳統(tǒng)方法只能順利處理小型矩陣,遇到大矩陣時(shí),networkx.to_numpy_matrix()會(huì)報(bào)內(nèi)存溢出的錯(cuò)誤。解決辦法是不用兩步轉(zhuǎn)換,而是用networkx.to_scipy_sparse_matrix()方法直接從圖存儲(chǔ)為鄰接矩陣的稀疏矩陣格式。代碼如下:

# 導(dǎo)入包
import scipy.sparse as sp
import pandas as pd
import networkx as nx

# 讀取關(guān)系對(duì)數(shù)據(jù)
df = pd.read_table('ratings.txt', sep=' ', header=None) # 讀取數(shù)據(jù)集為 pandas
relation_df = pd.DataFrame(df, columns=[0, 1]) # 取出交互關(guān)系

# pandas 轉(zhuǎn) numpy
relation_list = []
for index, row in relation_df.iterrows(): 
    relation_list.append((row[0], row[1]))

g = nx.Graph(relation_list) # 交互關(guān)系轉(zhuǎn)換為圖
s_A = nx.to_scipy_sparse_matrix(g, dtype=int, format='csr') # 生成圖的鄰接矩陣的稀疏矩陣
sp.save_npz('adj.npz', s_A)  # 保存稀疏矩陣
# csr_matrix_variable = sp.load_npz('adj.npz') # 讀取稀疏矩陣

4. networkx.to_scipy_sparse_matrix()的用法

摘自 to_scipy_sparse_matrix — NetworkX 2.8.8 documentation

用法:

to_scipy_sparse_matrix(G, nodelist=None, dtype=None, weight='weight', format='csr')

將圖形鄰接矩陣作為SciPy 稀疏矩陣返回。

參數(shù):

  • G:圖
    NetworkX 圖,用于構(gòu)造稀疏矩陣。
  • nodelist:列表,可選
    行和列根據(jù) nodelist 中的節(jié)點(diǎn)進(jìn)行排序。如果nodelist為None,則排序由 G.nodes() 生成。
  • dtype:NumPy 數(shù)據(jù)類型,可選
    用于初始化數(shù)組的有效 NumPy格式的dtype。如果None,則使用 NumPy 默認(rèn)值(np.float64)。
  • weight:字符串或無(wú)可選(default=‘weight’)
    保存用于邊權(quán)重的數(shù)值的邊屬性。如果 None 則所有邊權(quán)重為 1。
  • format:{‘bsr’, ‘csr’, ‘csc’, ‘coo’, ‘lil’, ‘dia’, ‘dok’} 中的字符串
    要返回的矩陣類型(默認(rèn) ‘csr’)。對(duì)于某些算法,稀疏矩陣的不同實(shí)現(xiàn)可以表現(xiàn)得更好。

返回:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-426689.html

  • A:SciPy 稀疏矩陣
    圖的鄰接矩陣的稀疏矩陣。

到了這里,關(guān)于Python 將關(guān)系對(duì)數(shù)據(jù)轉(zhuǎn)換為圖數(shù)據(jù) / 鄰接矩陣的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包