Ім'я файлу: ХТ_ЛР№3_КН-305_Пархомчук.docx Розширення: docx Розмір: 983кб. Дата: 19.08.2022 скачати Пов'язані файли: Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра АСУ Звіт до лабораторної роботи №4 з дисципліни “Хмарні технології” на тему: «Хмарні аплікації для аналізу даних та машинного навчання» Виконав: студент групи КН-305 Пархомчук Я.І. Прийняв: Рудавський Д.В. Львів-2022 р. Тема: Хмарні аплікації для аналізу даних та машинного навчання. Мета: Оволодіти практичними прийомами використання мови Python для розв’язання задач аналізу даних та машинного навчання, розгортання розроблених програм як хмарних аплікацій. Порядок виконання роботи Ознайомитись з теоретичним матеріалом щодо розв’язання задач аналізу даних та реалізації моделей машинного навчання за допомогою бібліотек мови програмування Python. 2. Для заданого варіанту завдання підготувати вхідні дані (навчальну та тестову вибірки) та написати програму розв’язання задачі мовою Python. Зверніть увагу на формат даних у вхідному файлі, розташування та типи вхідних і вихідних параметрів, розділювачі між параметрами. Передбачити наступні можливості (кожну з них реалізувати в окремому блоці (cell) із виведенням результатів на екран): • зчитування вхідних даних із заданого текстового файлу і попереднє опрацювання (за необхідності); • визначення базових статистичних характеристик вхідних даних (кількості об’єктів різних класів, мінімальні, максимальні та середні значення атрибутів); • відображення на діаграмі розподілу об’єктів різних класів (на площині, де осі відповідають двом обраним вхідним параметрам, точки різних кольорів відповідають об’єктам різних класів); • поділ вхідних даних на навчальну та тестову вибірки (забезпечити повторюваність поділу при повторних запусках програми); • реалізація моделей машинного навчання 2-х різних типів; • задання початкових значень параметрів кожної з моделей; • навчання побудованих моделей; • перевірка роботи моделей на тестовій вибірці; • налаштування моделей зміною значень їх параметрів; • виведення результатів (вихідних значень) на екран і у файл; • виведення результатів тестування (точності класифікації на тестовій вибірці та матриці помилок (confusion matrix)) на екран; • аналіз впливу значень параметрів моделі на результати навчання та тестування. 4. Визначити часові характеристики роботи програми (час на навчання та тестування кожної моделі, не враховуючи введення та виведення даних). 5. Розгорнути програму як хмарну аплікацію у віртуальній машині на обраній Вами у ЛР № 1 хмарній платформі, запустити і перевірити її у середовищі Jupyter Notebook. За необхідності встановити додаткові бібліотеки мови Python (наприклад, NumPy, Pandas, scikit-learn, Matplotlib, Seaborn). 6. Зробити висновок про ефективність та універсальність застосованих моделей, апаратних та програмних засобів хмарного середовища при розв’язанні даної задачі. 7. Оформити звіт про роботу за такою структурою: • назва роботи; • мета роботи; • послідовність роботи; • індивідуальне завдання; • формат файлу з вхідними даними; • текст програми; • код скрипту у середовищі Jupyter Notebook (в окремому файлі з назвою Прізвище-ЛР3.ipynb ); • результати роботи програми у середовищі Jupyter Notebook, часові характеристики; • інструкція користувачу щодо розгортання програми як хмарної аплікації, розміщення та подання вхідних даних, запуску програми на виконання; • висновки. Звіт доповнити екранограмами етапів роботи з хмарного середовища. Індивідуальне завдання Варіант №9 9. Класифікація улоговин та скель Набір даних описує силу віддачі сонарів під різними кутами для об’єктів двох класів – улоговини та скелі. Є 208 прикладів із 60 вхідними змінними (сили віддачі сонарів під різними кутами) та 1 вихідною змінною (клас: 0 – для улоговини і 1 – для скелі). Побудувати 2 моделі машинного навчання для класифікації улоговин та скель з мінімальною похибкою тестування. Для навчання використати випадкові 145 прикладів двох класів, інші – для тестування. Хід роботи Код програми: from datetime import datetime import time from pandas import read_csv from matplotlib import pyplot from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score from sklearn.model_selection import StratifiedKFold from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC import numpy as np import pandas as pd dataset = pd.read_table('v10_sonar.txt',sep='\s+', engine='python', header = None) dataset # Розділ датасету на навчальну і контрольну вибірки array = dataset.values # Вибір 60 стовбців X = array[:,1:61] # Вибір 0-го стовбця y = array[:,0] # Розділ X и y на навчальну і контрольну вибірки X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.35, random_state=2) # Завантаження алгоритмів моделей models = [] models.append(('LR', LogisticRegression(solver='liblinear', multi_))) models.append(('LDA', LinearDiscriminantAnalysis())) models.append(('KNN', KNeighborsClassifier())) models.append(('CART', DecisionTreeClassifier())) models.append(('NB', GaussianNB())) models.append(('SVM', SVC(gamma='auto'))) # Оцінювання моделі на кожній ітерації results = [] names = [] startTime = datetime.now() for name, model in models: kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True) cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy') results.append(cv_results) names.append(name) print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std())) print('Час підрахунку точності моделей:', (datetime.now() - startTime)) # Порівняння алгоритмів pyplot.boxplot(results, labels=names) pyplot.title('Порівняння алгоритмів') pyplot.show() startTime = datetime.now() # Створення прогнозу на контрольній вибірці model = LogisticRegression() model.fit(X_train, Y_train) predictions = model.predict(X_validation) print('Час навчання і прогнозу:', (datetime.now() - startTime)) # Оцінка прогнозу print('Точність прогнозу:', accuracy_score(Y_validation, predictions)) print(confusion_matrix(Y_validation, predictions)) print(classification_report(Y_validation, predictions)) Результати програми: Рис. 1. Відображення результатів порівняння 6-и методів Рис.2. Відображення результатів контрольного прогнозу Висновок Виконавши лабораторну роботу, я оволодів практичними прийомами використання мови Python для розв’язання задач аналізу даних та машинного навчання, розгортання розроблених програм як хмарних аплікацій. |