- •Курсовая работа
- •Глава 1 Кластерный анализ 4
- •Глава 2 Программа кластерного анализа 12
- •Введение
- •Глава 1 Кластерный анализ
- •1.1 Основные понятия
- •1.2 Задачи и условия:
- •1.3 Типология задач кластеризации:
- •1.4 Примеры применения:
- •Глава 2 Программа кластерного анализа
- •2.1 Выбор методологии разработки программного обеспечения.
- •2.2 Описание выбранного языка программирования.
- •2.3 Программа для кластерного анализа.
- •Заключение
- •Список использованных источников литературы
2.2 Описание выбранного языка программирования.
Я буду писать свою программу на языке Python.
Python – это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Я выбрал Python потому что:
1) Python понятен и прост в освоении.
2) Стандартная библиотека python имеет все необходимые для моей программы функции.
3) Python очень популярный язык программирования – легко найти ответ на любой вопрос.
2.3 Программа для кластерного анализа.
Разработанная программа состоит из двух основных частей:
Функции расчета положения кластеров
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
Минимального графического оформления
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()
Заключение
В ходе курсовой работы был выполнен ряд следующих задач:
произведено исследование метода кластерного анализа
Проанализированы программы кластерного анализа
Сделаны выводы и разработаны концепцию собственного программного продукта.
Произведена реализация программного продукта для кластерного анализа в среде программирования 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()
