Інженерія штучного інтелекту охоплює процеси, що включають розробку, впровадження та оптимізацію 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 — висота циліндра.

Завдання:

  1. Створіть змінні для радіуса r та висоти h.

  2. Використайте значення π = 3.14159, змінну назвіть pi.

  3. Обчисліть площу основи A.

  4. Обчисліть об'єм циліндра V.

  5. Виведіть на екран результати розрахунків з точністю до 2 знаків після коми.

При радіусі r = 5 і висоті h = 10 ваш код повинен вивести:

  • Площа основи: 78.54

  • Об'єм циліндра: 785.40

# Почніть вашу програму із створення змінних:

r = ...

h = ...

pi = ...


Завдання №2: Робота з текстом для обробки природної мови (NLP)

Ви починаєте знайомитися з машинним навчанням. Ваше завдання — навчитися працювати з рядками (текстовими даними), що є основою для багатьох завдань в NLP (natural language processing, сфера машинного навчання пов'язана із обробкою природної мови), таких як аналіз тексту або робота з повідомленнями від користувачів.

Опис завдання:

  1. Задана текстова фраза:
    "Привіт! Я вивчаю машинне навчання і Python."

  2. Вам потрібно виконати наступні дії:

    • Крок 1: Вивести довжину цієї фрази за допомогою функції len().

    • Крок 2: Перевести фразу в нижній регістр за допомогою функції lower().

    • Крок 3: Перевести фразу у верхній регістр за допомогою функції upper().

    • Крок 4: Порахувати, скільки разів у тексті зустрічається слово "машинне" за допомогою count().

    • Крок 5: Замінити слово "Python" на "NLP" за допомогою replace().

Ви маєте отримати такі результати виконання програми:

  • Довжина фрази: 43 символи.

  • Фраза у нижньому регістрі: "привіт! я вивчаю машинне навчання і python."

  • Фраза у верхньому регістрі: "ПРИВІТ! Я ВИВЧАЮ МАШИННЕ НАВЧАННЯ І PYTHON."

  • Слово "машинне" зустрічається: 1 раз.

  • Нова фраза після заміни: "Привіт! Я вивчаю машинне навчання і NLP."

Додаткове завдання:

Якщо ви завершили ці кроки, спробуйте вивести перші 5 символів і останні 5 символів цієї фрази окремо.

Завдання №3 (*): Робота з текстом для обробки природної мови (NLP)

Опис завдання:

  1. Задана текстова фраза:
    "Машинне навчання — це підгалузь штучного інтелекту, що надає комп'ютерам здатність до навчання без явного програмування логіки."

  2. Виконайте наступні дії:

    • Крок 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]

Виконайте наступні операції:

  1. Виведіть ім’я студента, що знаходиться на другій позиції.

  2. Виведіть оцінку, яку отримала Анна.

  3. Додайте нове ім’я "Віктор" і оцінку 95 до списків.

  4. Виведіть оновлений список студентів та їхні оцінки.

Очікуваний результат:

Іван

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


Дані для прогнозу розміру мишей

Використовуючи ці дані, створіть модель лінійної регресії для прогнозування розміру миші на основі її віку.



Остання зміна: середа 27 листопада 2024 19:27 PM