Невозможно получить возвращаемую переменную внутри цикла for - PullRequest
0 голосов
/ 24 июня 2019

Я создал следующую функцию в Python 3.7:

def spectralClustering(nClusters, dataset):
    adjMatrix = createAdjacencyMatrix(dataset)
    dataset_time_per_iter = []
    labels = []
    for i in range(iterations):
        print('------ Executing Iteration', i+1, '------')
        time_start = time.perf_counter()
        sc = SpectralClustering(affinity='precomputed', n_clusters=nClusters, n_init=10,
          n_neighbors=5, random_state=0)
        sc.fit(adjMatrix)
        labels.append(sc.labels_)
        print(labels)
    dataset_time_per_iter.append(time.perf_counter() - time_start)
    round(np.mean(dataset_time_per_iter),2), "sec (based on", len(range(iterations)), "rounds)"
    print("Minimum execution time:", 
    round(np.min(dataset_time_per_iter),2), "sec \nMaximum execution time:", round(np.max(dataset_time_per_iter),2), "sec\n")
    return labels

Объект sc.labels_ в цикле for - это пустой массив.Когда я выполняю функцию с т. Е. i=2 на шаге print(labels), я вижу в выводе значение меток:

[array([0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32), array([0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32)]

Когда я пытаюсь сделать print(labels) или повторно использовать переменную вдругая функция, я получаю сообщение об ошибке:

name 'labels' is not defined

Где ошибка в функции?Я использую неправильный оператор return?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...