
Data Science
292
return min(range(self.k),
key=lambda i: squared
_
distance(input, self.means[i]))
def train(self, inputs: List[Vector]) -> None:
#
일단
임의로
군집을
할당한다
.
assignments = [random.randrange(self.k) for
_
in inputs]
with tqdm.tqdm(itertools.count()) as t:
for
_
in t:
#
중심점을
구한
후
군집을
새로
할당한다
.
self.means = cluster
_
means(self.k, inputs, assignments)
new
_
assignments = [self.classify(input) for input in inputs]
#
군집이
바뀐
수를
세고
종료할
것인지를
판단
num
_
changed = num
_
differences(assignments, new
_
assignments)
if num
_
changed == 0:
return
#
그렇지
않으면
새로
할당된
군집을
저장하고
,
새
중심점을
구한다
.
assignments = new
_
assignments
self.means = cluster
_
means(self.k, inputs, assignments) ...