Основи інженерії штучного інтелекту 10-11 класи
Цей документ містить навчальні матеріали для учнів та вчителів курсу «Основи інженерії штучного інтелекту». Навчальна програма курсу за вибором "Основи інженерії штучного інтелекту" Автори: Рибак О.С., Радер Р.І. Протокол №7 від 19.08.2024. Зареєстровано у каталозі надання грифів навчальних матеріалів та навчальних програм № 4.0164-2024 (Текст програми (pdf))
8. Основи машинного навчання
8.1. Практична робота: Машинне навчання, Python та миші
Лінійна регресія - метод машинного навчання
Лінійна регресія — це простий і поширений метод машинного навчання, який використовується для прогнозування залежності між змінними. Модель лінійної регресії шукає пряму, що найкраще описує зв'язок між незалежною змінною (вхідними даними) і залежною змінною (результатом або прогнозом).
Формула лінійної регресії
Лінійна регресія моделює залежність між двома змінними за допомогою рівняння прямої:y = kx + b
де:
- y — прогнозоване значення,
- x — незалежна змінна (вхід),
- k — кут нахилу (коефіцієнт або вага),
- b — точка перетину з віссю y (зміщення або інтерсепт).
Мета лінійної регресії — знайти такі значення k
і b
, щоб лінія найкраще відповідала даним, мінімізуючи помилку між реальними і прогнозованими значеннями.
Приклад
Якщо у вас є дані про продажі автомобілів за роками, лінійна регресія може допомогти спрогнозувати продажі на наступний рік на основі цих даних.
Лінійна регресія є одним із найпростіших алгоритмів для прогнозування, і її часто використовують як базову модель.
Припустимо, ви хочете прогнозувати оцінки студентів на основі кількості годин навчання. Для цього можна використати лінійну регресію для моделювання залежності.
Приклад коду:
import numpy as np
from sklearn.linear_model import LinearRegression
# Дані: роки та кількість студентів
years = np.array([[2017], [2018], [2019], [2020], [2021]])
students = np.array([400, 420, 450, 470, 490])
Намалюємо графік за допомогою бібліотеки matplotlib:
import matplotlib.pyplot as plt
plt.plot(years, students, marker='o', linestyle='-', color='b')
Параметри функції plot() означають, що ми будуємо графік по точках із масивом years по вісі X, students по вісі Y. Точки мають бути позначені кружечками (o), лінія має бути суцільною (-), а колір має бути синім (b - blue).
Тепер ми можемо створити модель лінійної регресії, яка підбере параметри прямої так, щоб вона максимально точно відповідала нашим даним:
# Створення та навчання моделі
model = LinearRegression()
model.fit(years, students)
# Прогноз на 2022 та 2023 роки
predictions = model.predict(np.array([[2022], [2023]]))
print(predictions)
Результатом роботи нашої програми буде масив з двох чисел:
array([515., 538.])
що відповідають прогнозній кількості студентів на 2022 та 2023 рік.
Але спочатку, давайте потренуємось працювати із списками.
Завдання №1: Операції зі списками
Дано два списки:
- Список імен студентів:
['Олександр', 'Іван', 'Марія', 'Анна', 'Софія']
- Відповідні оцінки за тест:
[78, 85, 88, 90, 92]
Операції:
- Виведіть ім’я студента, що знаходиться на другій позиції.
- Виведіть оцінку, яку отримала Анна.
- Додайте нове ім’я
"Віктор"
і оцінку95
до списків. - Виведіть оновлений список студентів та їхні оцінки.
Очікуваний результат:
Іван
90
['Олександр', 'Іван', 'Марія', 'Анна', 'Софія', 'Віктор']
[78, 85, 88, 90, 92, 95]
Завдання №2: Операції з масивами NumPy
Створіть масив з оцінками студентів:
import numpy as np
scores = np.array([85, 90, 78, 92, 88, 95, 67, 84, 91, 75])
Операції:
- Обчисліть середнє значення оцінок:
mean_score = np.mean(scores)
- Знайдіть мінімальну та максимальну оцінки:
min_score = np.min(scores)
max_score = np.max(scores)
Завдання №3: Прогнозуємо розмір мишей за допомогою лінійної регресії
Використовуйте scikit-learn для створення прогнозної моделі розміру мишей на основі їхнього віку.
Дані:
Вік миші (дні) | Розмір миші (см) | Вага миші (г) |
---|---|---|
5 | 3.1 | 3 |
10 | 4.2 | 6 |
15 | 5.0 | 12 |
20 | 5.8 | 16 |
25 | 6.4 | 22 |
30 | 7.0 | 28 |
42 | 7.5 | 30 |
Використовуючи ці дані, створіть модель лінійної регресії для прогнозування розміру миші на основі її віку.
Код:
import numpy as np
from sklearn.linear_model import LinearRegression
# Дані
age = np.array([[5], [10], [15], [20], [25], [30]])
size = np.array([3.1, 4.2, 5.0, 5.8, 6.4, 7.0])
# Створення моделі
model = LinearRegression()
model.fit(age, size)
# Прогноз для 35 днів
prediction = model.predict(np.array([[35]]))
print(f"Прогнозований розмір миші для 35 днів: {prediction[0]:.2f} см")
Додаткове завдання:
Використовуючи ці дані, створіть модель лінійної регресії для прогнозування розміру миші на основі її ваги, а не віку. Спрогнозуйте, яка має бути довжина миші, у якої вага - 1 кг?