Эти 3 строки не имеют правильного отступа:
new1 = [[] for x in range(len(centroids))]
y = []
lis = []
Они находятся внутри for i in range(k):
l oop, но их не должно быть, поскольку они не зависят от i
. Когда k == 0
, ни одно из этих назначений не будет выполнено, поэтому более поздний код, который пытается использовать эти переменные, получит ошибку.
Отмена отступа 1 уровня.
def clustering(self, parsedData=np.genfromtxt("0.txt"), iterCount=0, k=0, centroids=None):
if centroids is None: # when no centroids are passed in, randomize the centroids
np.random.seed(1111)
centroids = []
for i in range(k):
centroids.append(np.random.randint(0, len(parsedData[0]))) # adding centroid numbers from dataset
new1 = [[] for x in range(len(centroids))]
y = []
lis = []
...
I'm не уверен, но я думаю, что все остальные функции также с отступом неправильно. Только код, который заполняет centroids
случайным образом, должен быть в if centroids is None: