Лабы 2022-2023 / 2 сем / Baraeva_Elizaveta_lb3
.docМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В. И. Ульянова (Ленина)
Кафедра МО ЭВМ
отчет
по лабораторной работе №3
по дисциплине «Информатика»
Тема: Введение в анализ данных
Студентка гр. 2383 |
|
Бараева Е. Н. |
Преподаватель |
|
Иванов Д. В. |
Санкт-Петербург
2023
Цель работы.
Познакомиться с анализом данных при помощи библиотеки sklearn, а также реализовать программу с выполнением поставленной задачи, используя язык программирования Python.
Задание.
Вариант 4
Вам необходимо провести кластеризацию существующих сортов ириса для расширения ассортимента цветочного магазина. Для этого необходимо использовать библиотеку sklearn и встроенный в него набор данных об ирисах.
Реализуйте следующие функции:
load(): напишите код загрузки датасета load_iris с параметром return_X_y=True и верните первые сто элементов (классы опустить).
train_and_predict(X, n_clusters, random_state): напишите код, который обучит модель на данных X с кол-вом кластеров n_cluster, random_state, предскажет X и вернёт предсказанные данные.
optimal_n_clusters(X, n_clusters, random_state): напишите код, который обучит данные X с кол-вом кластеров n_cluster, random_state и вернёт инерцию.
Обращение к датасетам происходят через datasets, к классу кластеризации – MiniBatchKMeans.
Выполнение работы.
В функции load() был загружен датасет с помощью функции load_iris() с параметром return_X_y=True, который отвечает за возвращаемые данные функции. Затем возвращаются первые 100 элементов.
В функции train_and_predict() была обучена модель на данных X с помощь функции MiniBatchKMeans() и метода fix(). В функцию MiniBatchKMeans() были переданы: количество кластеров, количество создаваемых случайных чисел. После этого был применен метод predict(X), который прогнозирует, к какому ближайшему кластеру принадлежит каждая выборка в X.
В функции optimal_n_clusters(), как и в train_and_predict(), была обучена модель данных с помощь функции MiniBatchKMeans() и метода fix(), но в конце был применен метод inertia_. Этот метод возвращает сумму квадратов расстояний выборок до ближайшего к ним центра кластера.
Разработанный программный код см. в приложении А.
Тестирование.
Результаты тестирования представлены в табл. 1.
Таблица 1 – Результаты тестирования
№ п/п |
Входные данные |
Выходные данные |
Комментарии |
1. |
print(load()) |
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] [4.6 3.1 1.5 0.2] [5. 3.6 1.4 0.2]] |
Проверка функции load(). Было взято первые 5 элементов. Верно. |
2. |
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]]) print(optimal_n_clusters(X, 2)) |
16.045778756163884 |
Проверка функции optimal_n_clusters(). Верно. |
3. |
X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]]) print(train_and_predict(X, 5, 100)) |
[4 2 0 1 3 1] |
Проверка функции train_and_predict(). Верно. |
Вывод.
В ходе лабораторной работы был изучен метод кластеризации данных при помощи библиотеки sklearn, и реализована программа, загружающая и обучающая данные, а также предсказывающая и считающая инерцию.
ПРИЛОЖЕНИЕ А ИСХОДНЫЙ КОД ПРОГРАММЫ
Название файла: main_lb3.py
from sklearn import datasets
from sklearn.cluster import MiniBatchKMeans
def load():
iris = datasets.load_iris(return_X_y=True)
return iris[0][:100]
def train_and_predict(X, n_clusters=1, random_state=42):
return MiniBatchKMeans(n_clusters=n_clusters, random_state=random_state).fit(X).predict(X)
def optimal_n_clusters(X, n_clusters=1, random_state=42):
return MiniBatchKMeans(n_clusters=n_clusters, random_state=random_state).fit(X).inertia_
