Делаем более детальное разбиение линиями
Следующий частично отрезаем по условию
x > 8.5 (можно запустить и увидеть остаток)
или x > 8.2 and y < 5.6
видим что состав кластеров не совсем ровны - может одна точки из 0 убежала в 2 кластер
Увеличиваем размер точки до 10 и масштаб
from turtle import *
def pokraska(k, m=50):
tracer(0)
up()
clr =colors[k]
for x, y in dk[k]:
goto(x*m,y*m)
dot(10,clr)
update()
dk ={0:[],1:[],2:[]}
colors ={0:'red',1:'green',2:'blue'}
for s in open('27-16B.txt'):
s = s.replace(',','.')
x,y = map(float,s.split())
if y > 7.5 :
dk[1].append((x,y))
elif x > 8.5 or x>8.2 and y < 5.6:
dk[2].append((x,y))
else :
dk[0].append((x,y))
for k in dk :
pokraska(k, 50)
print(k, len(dk[k]))
Убеждаемся, что так и случилось
меняем или x > 8.2 and y < 5.6
на или x > 8.2 and y < 5.4
Получаем идеальное разбиение