Saya mencoba menemukan node tetangga di jaringan grafik. Saya telah mengimpor data di coa_train dan sekarang mencoba menemukan node tetangga.


import matplotlib.pyplot as plt
from math import isclose
from sklearn.decomposition import PCA
import os
import networkx as nx
import numpy as np
import pandas as pd
#from stellargraph import StellarGraph, datasets
#from stellargraph.data import EdgeSplitter
from collections import Counter
import multiprocessing
#from IPython.display import display, HTML
from sklearn.model_selection import train_test_split

%matplotlib inline

def readTrainingData(tr):
    trainingData = []
    with open(tr) as f:
        for line in f:
            a1, a2 = line.strip().split()
            trainingData.append((a1, a2))
    return trainingData
coa_train = readTrainingData("training.txt")

coa_train

[('8193', '16056'),
 ('24578', '21968'),
 ('24578', '18297'),
 ('24578', '16770'),
 ('24578', '17038'),
 ('8195', '2072'),
 ('8195', '20568'),

----------------------
import collections

def getNeighbors(data):
    
    neighbors=collections.defaultdict(set)
    
    for pair in data:
        
        neighbors[pair[0]].add(pair[1])
        
        neighbors[pair[1]].add(pair[0])
        
        

        return neighbors

coa_neighbors= getNeighbors("coa_train")
  

Di sini, saya mendapatkan kesalahan seperti:

IndexError                                Traceback (most recent call last)
<ipython-input-41-c775c56181f7> in <module>
     13         return neighbors
     14 
---> 15 coa_neighbors= getNeighbors("coa_train")
     16 

<ipython-input-41-c775c56181f7> in getNeighbors(data)
      5     for pair in data:
      6 
----> 7         neighbors[pair[0]].add(pair[1])
      8 
      9         neighbors[pair[1]].add(pair[0])

IndexError: string index out of range

Saya tidak dapat melihat alasan untuk kesalahan ini, karena saya yakin indeks 0 dan 1 dalam data coa_train valid.

0
Zerone 18 Mei 2021, 08:30

2 jawaban

Jawaban Terbaik

Anda memasukkan string ke dalam fungsi

getNeighbors("coa_train")

Tapi itu harus menjadi variabel sebagai gantinya

getNeighbors(coa_train)

Dengan string sebagai argumen, loop

for pair in data:

Akan memberi Anda karakter tunggal. Dan dengan satu karakter, Anda tidak dapat melakukan pair[1] lagi.

3
Thomas Weller 18 Mei 2021, 05:39

Anda meneruskan parameter string ke fungsi

coa_neighbors= getNeighbors("coa_train")

Maka kamu,

for pair in data:

Traverse karakter tunggal dari string Anda jadi itu sebabnya ia memberikan indeks di luar jangkauan kesalahan. coba ini..

coa_neighbors= getNeighbors(coa_train)

Saya harap ini berhasil.

0
Pravin Rathod 18 Mei 2021, 06:00