Главная страница
Навигация по странице:

  • Загрузка данных.

  • Стандартизация данных.

  • Приведение к диапазону.

  • Нелинейные преобразования.

  • Дискретизация признаков.

  • Методы оптимизации ЛР1. Предобработка данных


    Скачать 0.51 Mb.
    НазваниеПредобработка данных
    АнкорМетоды оптимизации ЛР1
    Дата26.09.2022
    Размер0.51 Mb.
    Формат файлаdocx
    Имя файлаKovalyov_P_D_MO_LR1.docx
    ТипОтчет
    #698826


    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра МО ЭВМ


    отчет

    по лабораторной работе №1

    по дисциплине «Машинное обучение»

    Тема: Предобработка данных



    Студент гр. 9304




    Ковалёв П.Д.

    Преподаватель




    Жангиров Т.Р.



    Санкт-Петербург

    2022

    Цель работы.


    Ознакомиться с методами предобработки данных из библиотеки Scikit Learn.

    Задание.


    Загрузка данных.

    1. Загрузить датасет по ссылке: https://www.kaggle.com/datasets/andrewmvd/heart-failure-clinical-data. Данные представлены в виде csv таблицы.

    2. Создать Python скрипт. Загрузить датасет в датафрейм, и исключить бинарные признаки и признак времени.

    3. Построить гистограммы признаков.

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

    5. Так как библиотека Sklearn работает с NumPy массива, то преобразуйте датафрейм к двумерному массиву NumPy, где строка соответствует наблюдению, а столбец признаку.

    Стандартизация данных

    1. Подключите модуль Sklearn. Настройте стандартизацию на основе первых 150 наблюдений используя StandardScaler.

    2. Стандартизируйте все данные

    3. Постройте гистограммы стандартизированных данных

    4. Сравните данные до и после стандартизации. Опишите, что изменилось и почему.

    5. Рассчитайте мат. ожидание и СКО до и после стандартизации. На основании этих значений выведите для каждого признака формулы по которым они стандартизировались.

    6. Сравните значений из формул с полями mean_ и var_ объекта scaler

    7. Проведите настройку стандартизации на всех данных и сравните с результатами настройки на основании 150 наблюдений

    Приведение к диапазону

    1. Приведите данные к диапазону используя MinMaxScaler

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

    3. Через параметры MinMaxScaler определите минимальное и максимальное значение в данных для каждого признака

    4. Аналогично трансформируйте данные используя MaxAbsScaler и RobustScaler. Постройте гистограммы. Определите к какому диапазону приводятся данные.

    5. Напишите функцию, которая приводит все данные к диапазону [-5 10]

    Нелинейные преобразования

    1. Приведите данные к равномерному распределению используя QuantileTransformer

    2. Постройте гистограммы и сравните с исходными данными

    3. Определите, как и на что влияет значение параметра n_quantiles

    4. Приведите данные к нормальному распределению передав в QuantileTransformer параметр output_distribution=‘normal’

    5. Постройте гистограммы и сравните с исходными данными

    6. Самостоятельно приведите данные к нормальному распределению используя PowerTransformer

    Дискретизация признаков

    1. Проведите дискретизацию признаков, используя KBinsDiscretizer, на следующее количество диапазонов:

    • age – 3

    • creatinine_phosphokinase – 4

    • ejection_fraction – 3

    • platelets – 10

    • serum_creatinine – 2

    • serum_sodium – 4

    1. Постройте гистограммы. Объясните полученные результаты.

    2. Через параметр bin_edges_ выведите диапазоны каждого интервала для каждого признака.



    Выполнение работы.


    Загрузка данных.

    1. Был загружен датасет.

    2. Далее был создан Python скрипт, после чего датасет был загружен в датафрейм с последующим исключением бинарных признаков и признака времени. Результат можно видеть на рисунке 1.



    Рисунок 1 – Загрузка датасета и удаление признаков

    1. Далее были построены гистограммы признаков, которые можно видеть на рисунке 2.



    Рисунок 2 – Гистограммы признаков

    1. На основании гистограмм были определены диапазоны значений дли каждого из признаков, а также возле какого значения лежит наибольшее количество наблюдений. Имеем:

    Для age: диапазон значений от 40 до 95, наибольшее количество наблюдений лежит около значения 60.

    Для creatinine_phosphokinase: диапазон значений от 0 до 8000, наибольшее количество наблюдений лежит около значения 0.
    Для ejection_fraction: диапазон значений от 15 до 80, наибольшее количество наблюдений лежит около значения 37.

    Для platelets: диапазон значений от 0 до 900000, наибольшее количество наблюдений лежит около значения 250000.

    Для serum_creatinine: диапазон значений от 0 до 9, наибольшее количество наблюдений лежит около значения 1.

    Для serum_sodium: диапазон значений от 0 до 150, наибольшее количество наблюдений лежит около значения 137.

    1. Датафрейм был преобразован к двумерному массиву NumPy. Это можно видеть на рисунке 3.



    Рисунок 3 – Преобразование датафрейма в массив NumPy


    Стандартизация данных.

    1. Был подключен модуль Sklearn и настроена стандартизация на основе первых 150 наблюдений.

    2. Все данные были стандартизированы.

    3. Были построены гистограммы стандартизированных данных. Их можно видеть на рисунке 4.



    Рисунок 4 – Гистограммы стандартизированных данных

    1. Наибольшее количество наблюдений лежит в пределах 0, при этом, диапазоны значений значительно уменьшились, чаще всего встречается диапазон от -2 до 2. Стандартизация приводит все исходные значения набора данных, независимо от их начальных распределений и единиц измерения, к набору значений из распределения с нулевым средним и стандартным отклонением, равным 1. Стандартизированное значение вычисляется по формуле:

    ,

    где – мат. ожидание, а – среднеквадратичное отклонение.

    1. Были рассчитаны мат.ожидания и СКО до и после стандартизации. Результаты представлены на рисунке 5.



    Рисунок 5 – Мат.ожидания и СКО до и после стандартизации

    1. На рисунке 6 представлены значения полей mean_ и var_ объекта scaler.



    Рисунок 6 – Значения полей mean_ и var_

    1. Была проведена настройка стандартизации на всех данных. Результат представлен на рисунке 7.



    Рисунок 7 – Стандартизация всех данных

    Как можно видеть, в случае стандартизации всех данных, значения мат.ожиданий и СКО несколько отклонились от значений, полученных при стандартизации первых 150 значений.


    Приведение к диапазону.

    1. Данные были приведены к диапазону при помощи MinMaxScaler.

    2. Были построены гистограммы. Их можно видеть на рисунке 8.



    Рисунок 8 - Гистограммы

    По сравнению с исходными данными все диапазоны находятся в пределах от 0 до 1.

    1. Через параметры MinMaxScaler были определены минимальное и максимальное значения в данных для каждого признака. Это можно видеть на рисунке 9.



    Рисунок 9 – Минимальное и максимальное значения в данных

    1. На рисунках 10 и 11 представлены гистограммы данных, стандартизированных при помощи MaxAbsScaler и RobustScaler соответственно.



    Рисунок 10 – Гистограмма с использованием MaxAbsScaler

    Масштабирование привело данные к диапазону от 0 до 1. MaxAbsScaler масштабирует данные по максимальному абсолютному значению.



    Рисунок 11 – Гистограмма с использованием RobustScaler

    Robust Scaler удаляет медиану и масштабирует данные в соответствии с диапазоном квантилей.

    1. На рисунке 12 представлен код функции и её вызов для отрисовки гистограмм, а на рисунке 13 представлены сами гистограммы.



    Рисунок 12 – Код функции и её вызова



    Рисунок 13 – Гистограммы

    Нелинейные преобразования.

    1. Данные были приведены к равномерному распределению при помощи QuantileTransformer.

    2. Были построены гистограммы данных. Это можно видеть на рисунке 14.



    Рисунок 14 – Гистограммы

    Данные лежат в диапазон от 0 до 1 и имеют равномерное распределение.

    1. Параметр n_quantiles влияет на количество вычисляемых квантилей.

    2. Данные были приведены к нормальному распределению.

    3. На рисунке 15 представлены гистограммы с нормальным распределением.



    Рисунок 15 – Гистограммы

    По гистограммам видно, что данные имеют нормальное распределение.

    1. Данные были приведены к нормальному (Гауссовому) распределению при помощи PowerTransformer(). Результаты представлены на рисунке 16.



    Рисунок 16 – Гистограммы

    Дискретизация признаков.

    1. Была проведена дискретизация признаков при помощи KBinsDiscretizer.

    2. На рисунке 17 представлены гистограммы дискретизации признаков.



    Рисунок 17 – Гистограммы

    По гистограммам видно, что данные были разделены на интервалы.

    1. На рисунке 18 представлены диапазоны каждого интервала для каждого признака.



    Рисунок 18 – Диапазоны интервалов

    Выводы.


    Были изучены предоставленные библиотекой Scikit-learn средства для стандартизации данных, средства нелинейных преобразований и метод дискретизации данных, которые в процессе были опробованны на наборе данных.


    написать администратору сайта