Міністерство освіти і науки УкраїниНТУУ «КПІ ім. І. Сікорського»
Кафедра цифрових технологій в енергетиці
Вступ до інтелектуального аналізу даних
Лабораторна робота № 1
Варіант №21
Лабораторна робота № 1
Робота з датасетом. Аналіз датасету. Опанування базових навичок мови R
Завдання
1. Імпортувати дані, що відповідають вашому варіанту, до системи R.
2. Проаналізувати дані, що відповідають вашому варіанту, і визначити мету класифікації та ознаку, яка містить мітку класу.
3. Виконати попередній аналіз даних, застосувавши описові статистики:
a. Вивести на екран перші 15 рядків.
b. Визначити виміри та структуру масиву даних.
c. Визначити частку даних кожного класу в загальному наборі.
d. Визначити стандартне квадратичне відхилення та коефіцієнт асиметрії для кожної ознаки числового типу.
e. Обчислити матрицю кореляції для ознак.
4. Виконати візуалізацію даних.
a. Побудувати гістограми для ознак числових типів та стовпчикові діаграми для категоріальних типів.
b. Побудувати діаграму аналізу кореляції.
c. Побудувати діаграми «ящик з вусами» (box and whiskers plot) для ознак числових типів
d. Побудувати попарні діаграми розсіяння (scatterplot) для ознак числових типів
e. Побудувати графіки емпіричної функції розподілу (density) для ознак числових типів
5. Зробити висновки та написати звіт.
Варіант №21 (1) /
По варіанту ми маємо набір даних для оцінки точної кількості мешканців у кімнаті за допомогою кількох неінтрузивних датчиків навколишнього середовища, таких як температура, світло, звук, CO2 та PIR.
Хід роботи
1. Імпортувати дані, що відповідають вашому варіанту, до системи R.
/
Отримуємо змінну з даними на 10129 записів з 19 змінних.
/
2. Проаналізувати дані, що відповідають вашому варіанту, і визначити мету класифікації та ознаку, яка містить мітку класу.
Можемо побачити, що метою класифікації є визначення точної кількості мешканців у кімнаті готелю. Для цього використовуються різні датчики. Міткою класу (вихідною змінною) буде змінна Room_Occupancy_Count.
3. Виконати попередній аналіз даних, застосувавши описові статистики:
a. Вивести на екран перші 15 рядків.
Виводимо за допомогою head(data, n=15), де n=15 – кількість рядків, яку потрібно вивести.
/
b. Визначити виміри та структуру масиву даних.
Це робимо за допомогою dim(data) та str(data) відповідно. Перша функція виводить розміри масиву даних (бачимо 10129 записів по 19 змінних), а str() виводить інформацію про структуру об'єкта. Вона показує тип даних, розмір, список елементів, які містяться в об'єкті та інші деталі. Ми бачимо на скріншоті скільки записів і змінних, що є купа змінних (дата, час, с1_темп,…).
/
c. Визначити частку даних кожного класу в загальному наборі.
Це ми можемо зробити так: round(prop.table(table(data$Date))*100, 2). Цей код визначає частку даних кожного класу у стовпці Date у відсотках. Він спочатку викликає функцію table(), яка підраховує, скільки раз з’являється кожен клас в стовпці. Потім функція prop.table() використовується для визначення частки даних кожного класу відносно загальної кількості випадків. Після цього ми множимо на 100 і округляємо до 2 знаків після коми. У коді розраховано частку даних кожного класу для більшості стовпчиків.
Також можемо це все скоротити за допомогою циклу фор, який проходиться по всім елементам, отриманих за допомогою sapply(sapply(data[,], table), prop.table). Тут ми приміняємо до всіх стовпчиків data спочатку функцію table, а потім prop.table.
/
/
/
d. Визначити стандартне квадратичне відхилення та коефіцієнт асиметрії для кожної ознаки числового типу.
Для визначення коефіцієнту асиметрії скористаємось функцією skewness() бібліотеки moments. Цей показник є мірою нормальності розподілу даних. Якщо він рівний 0, то розподіл є симетричним. Якщо більше 0, то розподіл скошений вправо, а якщо менше, то скошений вліво. Як бачимо, дані скошені вправо. За допомогою sapply() примінимо skewness() до 3-19 колонки фрейму – саме тут числові значення.
/
Стандартне квадратичне відхилення можна обчислити за до...