Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кластеризация.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
41.09 Кб
Скачать

2.2 Описание выбранного языка программирования.

Я буду писать свою программу на языке Python.

Python – это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.

Я выбрал Python потому что:

1) Python понятен и прост в освоении.

2) Стандартная библиотека python имеет все необходимые для моей программы функции.

3) Python очень популярный язык программирования – легко найти ответ на любой вопрос.

2.3 Программа для кластерного анализа.

Разработанная программа состоит из двух основных частей:

  1. Функции расчета положения кластеров

def rastoyanie(x):

i=0

d=[]

while i!=len(centers):

a=((x[0]-centers[i][0])**2+(x[1]-centers[i][1])**2)**0.5

a=int(a)

d.append(a)

i+=1

a=min(d)

i=0

while i!=len(d):

if a==d[i]:

return([a,i])

i+=1

clusters=[]

i=0

while i<g:

clusters.append([])

i+=1

coord=[]

while i<len(points):

a=rastoyanie(points[i])

j=a[1]

clusters[j].append(points[i])

coord.append(points[i])

coord.append(a)

i+=1

  1. Минимального графического оформления

root = Tk()

canv = Canvas(root, width = 500, height = 500, bg ='black')

but=Button(text ="NextStep")

but.pack(side='bottom')

but.bind("<Button-1>", event)

but=Button(text ="Auto")

but.pack(side='bottom')

but.bind("<Button-1>", events)

canv.pack()

root.mainloop()

Заключение

В ходе курсовой работы был выполнен ряд следующих задач:

  1. произведено исследование метода кластерного анализа

  2. Проанализированы программы кластерного анализа

  3. Сделаны выводы и разработаны концепцию собственного программного продукта.

  4. Произведена реализация программного продукта для кластерного анализа в среде программирования Python.

В дальнейшем данный программный продукт будет дорабатыватся:

1)Расширение функционала для Excel файлов

2)Доработка графического интерфейса

Таким образом на основе всего вышесказанного можно заключить, что поставленные задачи выполнены, а цель курсовой работы достигнута.

Список использованных источников литературы

1 – Гашков С. Б. Кластерный анализ и его применение. — М.: МЦНМО, 2004. — (Библиотека «Математическое просвещение»).

2 – Яглом И. k-means // Квант. — 1970. — № 6. — С. 2-10.

ПРИЛОЖЕНИЕ

Код программы кластерного анализа

from math import *

from tkinter import *

import random

import numpy

colors=['red','teal','gold','darkblue','white','green','pink','violet','aqua','purple']

g=int(input('Введите кол-во центров: '))

root = Tk()

canv = Canvas(root, width = 500, height = 500, bg ='black')

points=[]

i=0

while i<=100:

x=random.randint(0,500)

y=random.randint(0,500)

points.append([x,y])

i+=1

centers=[]

i=0

while i<g:

x=random.randint(0,500)

y=random.randint(0,500)

canv.create_oval([x,y],[x+10,y-10],fill=colors[i])

centers.append([x,y])

i+=1

print(centers)

i=0

def rastoyanie(x):

i=0

d=[]

while i!=len(centers):

a=((x[0]-centers[i][0])**2+(x[1]-centers[i][1])**2)**0.5

a=int(a)

d.append(a)

i+=1

a=min(d)

i=0

while i!=len(d):

if a==d[i]:

return([a,i])

i+=1

clusters=[]

i=0

while i<g:

clusters.append([])

i+=1

coord=[]

while i<len(points):

a=rastoyanie(points[i])

j=a[1]

clusters[j].append(points[i])

coord.append(points[i])

coord.append(a)

i+=1

i=0

j=1

while j<len(coord):

x=coord[i][0]

y=coord[i][1]

color=coord[j][1]

canv.create_oval([x,y],[x+7,y-7],fill=colors[color])

i+=2

j+=2

def event(x):

global centers

global clusters

global colors

newcenters=[]

i=0

while i!=len(centers):

newcenters.append([])

x=[e[0] for e in clusters[i]]

y=[e[1] for e in clusters[i]]

x=int(numpy.mean(x))

y=int(numpy.mean(y))

canv.create_oval([centers[i][0],centers[i][1]],[centers[i][0]+10,centers[i][1]-10],fill='black')

canv.create_oval([x,y],[x+10,y-10],fill=colors[i])

newcenters[i].append(x)

newcenters[i].append(y)

i+=1

if centers==newcenters:

global win

win = Toplevel(root,relief=SUNKEN,bd=10,bg="black")

win.title("Кластеризация Завершена!")

but=Button(win,text ="Ok")

but.pack()

side=('bottom')

but.bind("<Button-1>", exit)

else:

centers=newcenters

clusters=[]

i=0

while i<g:

clusters.append([])

i+=1

coord=[]

while i<len(points):

a=rastoyanie(points[i])

j=a[1]

clusters[j].append(points[i])

coord.append(points[i])

coord.append(a)

i+=1

i=0

j=1

while j<len(coord):

x=coord[i][0]

y=coord[i][1]

color=coord[j][1]

canv.create_oval([x,y],[x+7,y-7],fill=colors[color])

i+=2

j+=2

def events(x):

newcenters=[]

while centers!=newcenters:

event(x)

print("Кластеризация завершена!")

but=Button(text ="NextStep")

but.pack(side='bottom')

but.bind("<Button-1>", event)

but=Button(text ="Auto")

but.pack(side='bottom')

but.bind("<Button-1>", events)

canv.pack()

root.mainloop()