Я создал следующую функцию в 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
?