Криптография. Лабораторная работа 2. Лабораторная работа 2 Цель машинного обучения анализ данных
Скачать 0.69 Mb.
|
Лабораторная работа № 2 Цель машинного обучения – анализ данных. Данные – зарегистрированная информация; представление фактов, понятий или инструкций в форме, приемлемой для общения, интерпретации, или обработки человеком или с помощью автоматических средств (ISO/IEC/IEEE 24765-2010). Данные в машинном обучении – это представление информации об исследуемой задаче в виде множеств исследуемых объектов и множеств их характеристик, на основе которых строятся модели, разрабатываются подходы, методы и алгоритмы анализа для принятия решений. Качество данных – важный аспект машинного обучения. Для Аналитика (Data Scientist, Data Analyst, Data Mining Engineer) очень важно обладать правильными данными, что гарантирует эффективность обработки и построении прогнозов. На рисунке 1 представлены основные требования к данным. Остановимся на основных этапах решения задач машинного обучения. Этапы решения задач машинного обучения: 1. Постановка задачи. 2. Сбор и подготовка данных. 3. Предобработка данных и выделение ключевых признаков. 4. Выбор алгоритмов машинного обучения. 5. Обучение модели (моделей). 6. Оценка качества. 7. Эксплуатация модели. При подготовке данных можно применять следующие операции: - структурирование – приведение данных к табличному (матричному) виду; - заполнение пропусков; - отбор – исключение записей с отсутствующими или некорректными значениями, если нет возможности заполнения и устранения противоречивости; - нормализация – приведение числовых значений к определенному диапазону, например к диапазону 0...1; - кодирование – это представление категориальных данных в числовой форме. 1.1. Теоретический материал – Библиотека NumPy NumPy (NumericalPython) - это библиотека Python с открытым исходным кодом, которая используется практически во всех областях науки и техники. Это универсальный стандарт для работы с числовыми данными в Python. Если у вас уже есть Python, вы можете установить NumPy с помощью командной строки: pip install numpy Чтобы начать использовать NumPy необходимо импортировать соответствующую библиотеку: import numpy as np Основным объектом NumPy является однородный многомерный массив (в numpy называется numpy.ndarray). Это многомерный массив элементов (обычно чисел), одного типа. Наиболее важные атрибуты объектов ndarray: ndarray.ndim - число измерений (чаще их называют "оси") массива. ndarray.shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim. ndarray.size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape. ndarray.dtype - объект, описывающий тип элементов массива. Можно определить dtype, используя стандартные типы данных Python. NumPy здесь предоставляет целый букет возможностей, как встроенных, например: bool_, character, int8, int16, int32, int64, float8, float16, float32, float64, complex64, object_, так и возможность определить собственные типы данных, в том числе и составные. ndarray.itemsize - размер каждого элемента массива в байтах. ndarray.data - буфер, содержащий фактические элементы массива. Обычно не нужно использовать этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов. Подробнее о массивах в NumPy можно найти в официальной документации https://numpy.org/doc/stable/user/absolute_beginners.html 1.2.1 Пример Задача: Создать массив 5x2. Создать массив 5x2. Вывести все значения массива, значение элемента с индексом (3,1) и второй столбец. Индексация начинается с нуля. Решение: Ответ: 1.2.2 Пример Задача: Пример. Выполнить следующее: 1. Создать вектор (одномерный массив) размера 10, заполненный нулями. 2. Создать вектор размера 10, заполненный единицами. 3. Создать вектор размера 10, заполненный заданным числом. 4. Создать вектор со значениями от 10 до 19. Решение: Ответ: 1.2.3 Пример Задача: Создать массив 10x10 со случайными значениями, найти минимум, максимум и среднее значение. Решение: Ответ: 1.2.4 Пример Задача: Задать матрицу размерности 5 на 5 и поменять 2 строки в матрице местами. Решение: Ответ: 1.2.5 Пример Задача: Выяснить результат следующих выражений: 0 * np.nan np.nan == np.nan np.inf > np.nan np.nan - np.nan 0.3 == 3 * 0.1 Решение: Ответ: 1.2.6 Пример Задача: Отсортировать массив. Решение: Ответ: 1.3.1 Задание Задача: Создать 8x8 матрицу и заполнить еѐ в шахматном порядке нулями и единицами. Решение: Ответ: 1.3.2 Задание Задача: Создать 5x5 матрицу со значениями в строках от 0 до 4. Для создания необходимо использовать функцию arrange. Решение: Ответ: 1.3.3 Задание Задача: Создать массив 3x3x3 со случайными значениями. Решение: Ответ: 1.3.4 Задание Задача: Создать матрицу с 0 внутри, и 1 на границах. Решение: Ответ: 1.3.5 Задание Задача: Создайте массив и отсортируйте его по убыванию. Решение: Ответ: 1.3.6 Задание Задача: Создайте матрицу, выведите ее форму, размер и размерность. Решение: Ответ: 2.1. Теоретический материал – Библиотека Pandas Первым шагом в любом начинании в области машинного обучения является введение исходных данных в систему. Исходные данные могут вводиться вручную, содержаться в файле или храниться в интернете в каком- либо формате. Кроме того, часто требуется получить данные из нескольких источников. Библиотека pandas – это удобный и быстрый инструмент для работы с данными, обладающий большим функционалом. Если очень кратко, то pandas – это библиотека, которая предоставляет очень удобные с точки зрения использования инструменты для хранения данных и работе с ними. Библиотека pandas присутствует в стандартной поставке Anaconda. Если же ее там нет, то его можно установить отдельно. Для этого введите командной строке: pip install pandas Для импорта библиотеки используйте команду: import pandas as pd Библиотека pandas предоставляет две ключевые структуры данных: Series и DataFrame. Series – это одномерная структура данных, ее можно представить, как таблицу с одной строкой. С Series можно работать как с обычным массивом (обращаться по номеру индекса), и как с ассоциированным массивом, когда можно использовать ключ для доступа к элементам данных. DataFrame – это двумерная структура. Идейно она очень похожа на обычную таблицу, что выражается в способе ее создания и работе с ее элементами. 2.2.1 Пример Задача: Создать Series из списка Python, словаря Python, и массива Numpy (установить буквенные метки для последнего). Решение: Ответ: 2.2.2 Пример Задача: Дано два Series. Напечатать их первые элементы и все элементы после третьего (во втором фрейме). Решение: Ответ: 2.2.3 Пример Задача: Создайте новый фрейм данных. Решение: Ответ: 2.2.4 Пример Задача: Загрузите фрейм данных по ссылке: https://raw.githubusercontent.com/chrisalbon/simulated_datasets/master/titanic .csv Решение: Ответ: 2.2.5 Пример Задача: Пронализировать характеристики фрейма данных. Решение: Одна из самых простых вещей, которые мы можем сделать после загрузки данных, – это взглянуть на первые несколько строк с помощью метода head. На последние строки можно посмотреть с помощью функции tail. Мы также можем взглянуть на количество строк и столбцов: dataframe.shape. Кроме того, используя метод describe, мы можем получить описательную статистику для любых числовых столбцов. Более подробно с возможностями работы с фреймами данных можно узнать по ссылке ниже: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html Ответ: 2.2.6 Пример Задача: Выберите индивидуальные данные или срезы фрейма данных. Решение: Для выбора одной или нескольких строк, либо значений, можно использовать методы 1ос или iloc. Ответ: 2.2.7 Пример Задача: Требуется отобрать строки фрейма данных на основе некоторого условия. Необходимо сформировать новый фрейм данных из пассажиров первого класса. Решение: Ответ: 2.3.1 Задание Задача: Найдитн евклидово расстояние между двумя Series (точками) a и b, не используя встроенную формулу. Решение: Ответ: 2.3.2 Задание Задача: Найдите в Интернете ссылку на любой csv файл и сформируйте из него фрейм данных (например, коллекцию фреймов данных можно найти здесь: https://github.com/akmand/datasets ). Решение: 1. Ответ: 2.3.3 Задание Задача: Проделайте с получившемся из предыдущего задания фреймом данных те же действия, что и в примерах 2.2.5-2.2.7. Решение: Ответ: 3.1. Теоретический материал – Работа с числовыми данными Количественные данные что-то измеряют – будь то размер класса, ежемесячные продажи или оценки учащихся. Естественным способом представления этих величин является численным (например, 150 студентов, $529 392 продаж). Нормализация данных — это общепринятая задача предобработки в машинном обучении. Многие алгоритмы предполагают, что все признаки находятся в единой шкале, как правило, от 0 до 1 или от -1 до 1. Существует множество способов нормализации значений признаков, чтобы масштабировать их к единому диапазону и использовать в различных моделях машинного обучения. В зависимости от используемой функции, их можно разделить на 2 большие группы: линейные и нелинейные. При нелинейной нормализации в расчетных соотношениях используются функции логистической сигмоиды или гиперболического тангенса. В линейной нормализации изменение переменных осуществляется пропорционально, по линейному закону. На практике наиболее распространены следующие методы нормализации признаков: Минимакс – линейное преобразование данных в диапазоне [0..1], где минимальное и максимальное масштабируемые значения соответствуют 0 и 1 соответственно; Z-масштабирование данных на основе среднего значения и стандартного отклонения: производят деление разницы между переменной и средним значением на стандартное отклонение. При масштабировании данных мы будем использовать одну из популярных библиотек машинного обучения Scikit-learn. Библиотека содержит пакет sklearn.preprocessing, который предоставляет широкие возможности для нормализации данных. Следует отметить, что в целом алгоритмы обучения выигрывают от стандартизации набора данных. 3.2.1. Пример Задача: Прошкалируйте числовой признак в диапазон между двумя значениями. Решение: Ответ: 3.2.2. Пример Задача: Преобразуйте признак, чтобы он имел среднее значение 0 и стандартное отклонение 1. Решение: Мы можем увидеть эффект стандартизации, обратившись к среднему значению и стандартному отклонению результата нашего решения: Ответ: 3.2.3. Пример Задача: Дан фрейм данных dfTest = pd.DataFrame({'A':[14.00,90.20,90.95,96.27,91.21], 'B':[103.02,107.26,110.35,114.23,114.68], 'C':['big','small','big','small','small']}) Необходимо масштабировать его числовые столбцы. Решение: Ответ: 3.3.2 Задание Задача: Загрузить фрейм данных по ссылке: https://raw.githubusercontent.com/akmand/datasets/master/iris.csv. Необходимо выполнить нормализацию первого числового признака (sepal_length_cm) с использованием минимаксного преобразования, а второго (sepal_width_cm) с задействованием z-масштабирования. Решение: Ответ: |