Основи програмування Python
Інженерія штучного інтелекту охоплює процеси, що включають розробку, впровадження та оптимізацію AI-систем для вирішення практичних задач у різних галузях. Основна мета інженерії штучного інтелекту полягає в створенні алгоритмів і моделей, здатних автоматизувати виконання завдань, аналізувати великі обсяги даних та приймати рішення.
Python – Мова програмування для штучного інтелекту
Python є однією з найпопулярніших мов програмування, що активно використовується для розробки рішень у галузі штучного інтелекту (ШІ) та машинного навчання (ML). Її переваги включають:
Легкість у навчанні та читанні коду
Велика кількість бібліотек для ШІ
Кросплатформеність
Приклади застосування Python у штучному інтелекті:
Аналіз настроїв (Sentiment analysis)
Класифікація зображень (Image classification)
Прогноз погоди (Weather prediction)
Комп'ютерний зір: виявлення об'єктів (Computer vision: object detection)
Основи Python
Що таке Python?
Python – це високорівнева мова програмування, створена у 1991 році Гвідо ван Россумом. Основна мета Python – зробити програмування доступним і зрозумілим для новачків.
Приклад найпростішої програми на Python:
print("Hello, World!")
Відступи
У Python відступи (пробіли або табуляція) використовуються для позначення блоків коду. Це приклад відступів у коді:
if 5 > 2:
print("5 більше ніж 2")
Коментарі
Коментарі допомагають пояснити код для себе чи інших розробників. У Python коментарі починаються зі символу # і ігноруються інтерпретатором.
# Коментарі
# це - коментар
# 5 + 10 - це теж коментар
15 + 10 # а те що зліва - не коментар, тому вираз буде порахований
Імена змінних
Змінні та функції у Python зазвичай використовують стиль snake_case, де слова розділяються нижнім підкресленням.
Змінні, типи даних, умовні оператори
Змінні – це назви областей пам'яті комп'ютера, які зберігають дані. Python підтримує кілька типів даних: числа, рядки, списки, тощо. Ось приклад використання змінних та умовних операторів:
age = 18
if age >= 18:
print("Дорослий")
else:
print("Неповнолітній")
Цикли
Для повторення дій у Python використовуються цикли. Python підтримує два основних типи циклів: for та while.
Приклад циклу for:
for i in range(5):
print(i) # Виведе числа від 0 до 4
Приклад циклу while:
count = 0
while count < 5:
print(count)
count += 1
Модулі
Для виконання стандартних задач у Python використовуються модулі. Існують як вбудовані модулі, так і зовнішні, написані іншими розробниками. Наприклад, для роботи з машинним навчанням можна використовувати модуль sklearn:
import sklearn
from sklearn.linear_model import LogisticRegression
Модулі спрощують процес розробки та забезпечують доступ до великої кількості готових функцій та алгоритмів.
Python як калькулятор
На відміну від багатьох інших мов програмування, у Python не потрібно додаткових конструкцій для виконання простих математичних операцій. Достатньо просто написати математичний вираз — і це вже буде повноцінна програма, яку можна виконати. Не потрібно оголошувати змінні, використовувати спеціальні функції або оператори, як це часто буває в інших мовах. Це робить Python особливо зручним для швидких обчислень та прототипування, що є однією з його ключових переваг.
# додавання
5 + 3
# Віднімання
10 - 2
# Множення
4 * 7
# Піднесення до степеня
2 ** 3
Ділення в Python: три оператори
У Python для виконання ділення використовуються три різні оператори:
Знак ділення ( / ): Оператор ділення завжди повертає дробове число (число із плаваючою комою), навіть якщо обидва операнди є цілими числами. Приклад:
7 / 2 # Результат: 3.5
Цілочисельне ділення ( // ): Оператор цілочисельного ділення повертає лише цілу частину результату, відкидаючи дробову частину. Приклад:
7 // 2 # Результат: 3
Залишок від ділення ( % ): Оператор залишку від ділення повертає залишок після поділу одного числа на інше. Приклад:
7 % 2 # Результат: 1
Створення змінних
Змінні дозволяють зберігати дані для подальшого використання.
# Приклад змінних:
x = 10
y = 25
# Можна виконувати операції над змінними так само, як над числами.
x + y
# Можна змінювати значення змінних
x = x + 5
Виведення на екран за допомогою print
Рядки у Python — це послідовності символів, які можуть включати букви, цифри, пробіли, символи та навіть емодзі. У Python рядки можна оголошувати за допомогою одинарних або подвійних лапок:
'Це рядок у Python'
"І це теж рядок у Python"
Створення змінних із рядками та виведення їх на екран:
greeting = "Привіт, світ!"
print(greeting)
Функція print дозволяє виводити будь-яку інформацію на екран. Наприклад:
name = "Roman"
age = 30
print("Мене звати", name, "і мені", age, "років.")
Об'єднання (також називається словом конкатенація, від англійського concatenate) рядків:
first_name = "Roman"
last_name = "Illiych"
full_name = first_name + " " + last_name
print("Повне ім'я:", full_name)
У Python деякі операції з рядками можна виконувати через крапку (.), викликаючи спеціальні функції, які призначені для роботи саме з рядками. Після того, як ви створили змінну з текстом, ви можете застосовувати до неї вбудовані функції (методи), що дозволяють змінювати або аналізувати цей текст. Наприклад, перетворити текст у великі або малі літери, порахувати кількість разів, скільки певний символ зустрічається в тексті, або замінити одне слово на інше:
# Перетворення рядка на великі літери
print("Рядок великими літерами:", greeting.upper())
# Перетворення рядка на малі літери
print("Рядок малими літерами:", greeting.lower())
# Підрахунок кількості входжень символу або підрядка
print("Кількість входжень 'в':", greeting.count('в'))
# Отримання частини рядка
substring = greeting[0:6] # Символи з 0 до 5
print("Підрядок:", substring)
# Замінювання частини рядка
new_greeting = greeting.replace("світ", "Python")
print("Змінений рядок:", new_greeting)
Лабораторна робота: перші кроки з інтерпретатором Python
Завдання №1: Розрахунок формули
Ви працюєте над програмою для розрахунку площі та об'єму циліндра. Використайте наступні формули:
Площа основи циліндра:
A = π r^2
де A — площа основи, r — радіус основи циліндра, а π — константа (3.14159).
Об'єм циліндра:
V = A × h
де V — об'єм циліндра, A — площа основи, а h — висота циліндра.
Завдання:
Створіть змінні для радіуса r та висоти h.
Використайте значення π = 3.14159, змінну назвіть pi.
Обчисліть площу основи A.
Обчисліть об'єм циліндра V.
Виведіть на екран результати розрахунків з точністю до 2 знаків після коми.
При радіусі r = 5 і висоті h = 10 ваш код повинен вивести:
Площа основи: 78.54
Об'єм циліндра: 785.40
# Почніть вашу програму із створення змінних:
r = ...
h = ...
pi = ...
Завдання №2: Робота з текстом для обробки природної мови (NLP)
Ви починаєте знайомитися з машинним навчанням. Ваше завдання — навчитися працювати з рядками (текстовими даними), що є основою для багатьох завдань в NLP (natural language processing, сфера машинного навчання пов'язана із обробкою природної мови), таких як аналіз тексту або робота з повідомленнями від користувачів.
Опис завдання:
Задана текстова фраза:
"Привіт! Я вивчаю машинне навчання і Python."Вам потрібно виконати наступні дії:
Крок 1: Вивести довжину цієї фрази за допомогою функції len().
Крок 2: Перевести фразу в нижній регістр за допомогою функції lower().
Крок 3: Перевести фразу у верхній регістр за допомогою функції upper().
Крок 4: Порахувати, скільки разів у тексті зустрічається слово "машинне" за допомогою count().
Крок 5: Замінити слово "Python" на "NLP" за допомогою replace().
Ви маєте отримати такі результати виконання програми:
Довжина фрази: 43 символи.
Фраза у нижньому регістрі: "привіт! я вивчаю машинне навчання і python."
Фраза у верхньому регістрі: "ПРИВІТ! Я ВИВЧАЮ МАШИННЕ НАВЧАННЯ І PYTHON."
Слово "машинне" зустрічається: 1 раз.
Нова фраза після заміни: "Привіт! Я вивчаю машинне навчання і NLP."
Додаткове завдання:
Якщо ви завершили ці кроки, спробуйте вивести перші 5 символів і останні 5 символів цієї фрази окремо.
Завдання №3 (*): Робота з текстом для обробки природної мови (NLP)
Опис завдання:
Задана текстова фраза:
"Машинне навчання — це підгалузь штучного інтелекту, що надає комп'ютерам здатність до навчання без явного програмування логіки."Виконайте наступні дії:
Крок 1: Виведіть кількість слів у фразі (підказка: можна використати метод split() для поділу рядка на слова).
Крок 2: Підрахуйте, скільки разів зустрічається слово "навчання".
Крок 3: Видаліть усі коми з тексту (використовуйте метод replace()).
Крок 4: Розбийте текст на окремі речення (підказка: використовуйте split('.')).
Крок 5: Перетворіть текст у формат списку слів і видаліть стоп-слова.
Список стоп-слів для видалення:
"це", "що", "і", "без".
Додаткове завдання:
Після виконання попередніх кроків, з'єднайте отримані слова назад в один рядок через пробіл та виведіть новий текст.
Умовні оператори
Умовні оператори у Python використовуються для прийняття рішень на основі певних умов. Наприклад:
age = 18
if age >= 18:
print("Дорослий")
else:
print("Неповнолітній")
Правильний відступ має важливе значення для коректного виконання умов.
Функції в Python
Огляд функцій, їх визначення та використання в програмуванні на Python.
Списки, бібліотеки для машинного навчання
Списки відіграють ключову роль у машинному навчанні, оскільки вони дозволяють зберігати та обробляти дані — основу будь-якої моделі штучного інтелекту. У машинному навчанні моделі тренуються на великих наборах даних, які можуть містити тисячі або мільйони прикладів. Оскільки алгоритми машинного навчання постійно працюють з великими масивами даних, робота із списками - це фундамент для їхньої роботи.
Списки в Python
Список — це структура даних у Python, яка дозволяє зберігати кілька значень в одному об'єкті. Списки дозволяють працювати з набором елементів, які можуть мати різні типи. Списки є впорядкованими, тому можна звертатися до елементів за їхнім індексом (номером по порядку).
Основні властивості списків:
Списки можна змінювати: додавати, видаляти або змінювати елементи.
Вони можуть містити елементи різних типів (рядки, числа тощо).
Списки підтримують різні операції, такі як додавання елементів, обчислення суми, пошук максимального і мінімального значення тощо.
Приклад створення списку:
my_list = [1, 2, 3, 4, 5]
my_list[0]
my_list[2]
my_list[-1]
# зріз, або "слайс" lst[a:b] - отримання частини списка lst від елемента №a до №b (невключно)
my_list[0:3]
my_list.append(60) # додати новий елемент в масив
# списки можуть містити не тільки числа, а ще їх можна об'єднувати
['яблуко'] + ['ананас', 'апельсин']
print('найбільший елемент: ', max(my_list))
print('найменший елемент: ', min(my_list))
print('кількість елементів: ', len(my_list))
Бібліотека NumPy
NumPy — це популярна бібліотека Python для числових обчислень. Вона містить велику кількість функцій для роботи з масивами чисел, які не підтримуються вбудованими списками Python.
NumPy використовують для:
Створення та роботи з масивами даних.
Швидкого виконання математичних операцій над масивами.
Лінійної алгебри, статистичних операцій та генерації випадкових чисел.
Приклад використання NumPy для створення масиву:
import numpy as np
my_array = np.array([1, 2, 3, 4, 5])
import numpy as np
# щоб створити масив, потрібно викликати функцію np.array(...)
my_array = np.array(my_list)
my_array
# Обчислення середнього значення
np.mean(my_array)
# Мінімальне та максимальне число
print(np.min(my_array))
print(np.max(my_array))
np.sum(my_array)
# можна застосувати умову до елементів масиву, щоб відфільтрувати необхідні значення
my_array[my_array <= 20]
Бібліотека scikit-learn
scikit-learn — це одна з найпопулярніших бібліотек для машинного навчання, підрозділу штучного інтелекту, що вивчає методи побудови алгоритмів, здатних навчатися.
Основні можливості scikit-learn:
Легке створення та навчання моделей машинного навчання.
Містить готові алгоритми, такі як лінійна регресія, дерево рішень, метод найближчих сусідів і багато інших.
Включає функції для попередньої обробки даних, оцінювання моделей та налаштування їх параметрів.
Давайте використаємо цю бібліотеку для простої задачі прогнозування даних лінійною функцією.
Що таке лінійна регресія?
Лінійна регресія — це простий і поширений метод машинного навчання, який використовується для прогнозування залежності між змінними. Модель лінійної регресії намагається знайти лінію, що найкраще описує зв'язок між незалежною змінною (вхідні дані) і залежною змінною (результат або прогноз).
Формула лінійної регресії
Лінійна регресія моделює залежність між двома змінними за допомогою рівняння прямої:
y = kx + b
де:
y — прогнозоване значення,
x — незалежна змінна (вхід),
k — кут нахилу (коефіцієнт або вага),
b — точка перетину з віссю y (зміщення або інтерсепт).
Мета лінійної регресії — знайти такі значення k і b, щоб лінія найкраще відповідала даним, мінімізуючи помилку між реальними і прогнозованими значеннями.
Приклад
Якщо у вас є дані про продажі автомобілів за роками, лінійна регресія може допомогти спрогнозувати продажі на наступний рік на основі цих даних.
Лінійна регресія є одним із найпростіших алгоритмів для прогнозування, і її часто використовують як базову модель.
Лінійна регресія з NumPy та scikit-learn
Припустимо, ви хочете прогнозувати оцінки студентів на основі кількості годин навчання. Для цього можна використати лінійну регресію для моделювання цієї залежності.
Розглянемо такі дані:
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])
# Створення та навчання моделі
model = LinearRegression()
model.fit(years, students)
# Прогноз на 2022 та 2023 роки
model.predict(np.array([[2022], [2023]]))
Кількість студентів що навчаються в навчальному закладі
Лабораторна робота №2
Завдання №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 = (∑ scores) / n
Знайдіть мінімальну та максимальну оцінки:
np.min(scores), np.max(scores)
Завдання №3: Прогнозуємо розмір мишей
Вчимося працювати із scikit-learn.
Використайте таблицю для створення прогнозної моделі розміру мишей.
Вік миші (дні) Розмір миші (см)
5 3.1
10 4.2
15 5.0
20 5.8
25 6.4
30 7.0
Дані для прогнозу розміру мишей
Використовуючи ці дані, створіть модель лінійної регресії для прогнозування розміру миші на основі її віку.