Неделя 1: Введение в машинное обучение
1. Теоретическая часть
1.1. Что такое машинное обучение?
Машинное обучение (ML) — это подраздел искусственного интеллекта, который позволяет компьютерам обучаться на данных без явного программирования.
Основные типы ML:
1. Supervised Learning (Обучение с учителем)
o Модель обучается на размеченных данных (есть входные признаки и правильные ответы).
o Примеры задач:
§ Регрессия (предсказание числовых значений, например, цены дома)
§ Классификация (отнесение объекта к категории, например, спам/не спам)
2. Unsupervised Learning (Обучение без учителя)
o Модель ищет паттерны в данных без готовых ответов.
o Примеры задач:
§ Кластеризация (группировка похожих объектов, например, сегментация клиентов)
§ Понижение размерности (PCA, t-SNE)
3. Reinforcement Learning (Обучение с подкреплением)
o Агент обучается, получая награды за правильные действия (например, игры, робототехника).
1.2. Python для машинного обучения
Основные библиотеки:
Библиотека
Назначение
NumPy
Работа с многомерными массивами и линейной алгеброй
Pandas
Анализ и обработка табличных данных
Matplotlib/Seaborn
Визуализация данных
Scikit-learn
Классические алгоритмы ML
TensorFlow/PyTorch
Глубокое обучение
Установка окружения
Установка:
bash
Copy
conda create -n ml_course python=3.9
conda activate ml_course
conda install numpy pandas matplotlib scikit-learn jupyter
1.3. Основы линейной алгебры для ML
1. Векторы и матрицы
Вектор — одномерный массив чисел (например, [1, 2, 3]).
Матрица — двумерный массив (например, таблица чисел).
Пример в NumPy:
python
Copy
import numpy as np
vector = np.array([1, 2, 3]) # Вектор
matrix = np.array([[1, 2], [3, 4]]) # Матрица 2x2
2. Основные операции
Сложение векторов: a + b
Скалярное произведение: np.dot(a, b)
Умножение матриц: np.matmul(A, B) или A @ B
Транспонирование: A.T
2.1. Работа с NumPy
Создание массивов
python
Copy
import numpy as np
# Создание вектора и матрицы
vector = np.array([1, 2, 3])
matrix = np.array([[1, 2], [3, 4]])
# Нулевая и единичная матрицы
zeros = np.zeros((3, 3)) # 3x3 из нулей
identity = np.eye(3) # Единичная матрица 3x3
# Генерация случайных чисел
random_array = np.random.rand(2, 2) # Матрица 2x2 со случайными значениями [0, 1)
Операции с матрицами
python
Copy
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# Поэлементное сложение
C = A + B # [[6, 8], [10, 12]]
# Умножение матриц
D = A @ B # [[19, 22], [43, 50]]
# Обратная матрица
inv_A = np.linalg.inv(A)
2.2. Визуализация данных (Matplotlib)
График функции
python
Copy
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100) # 100 точек от 0 до 10
y = np.sin(x)
plt.plot(x, y, label="sin(x)", color="blue")
plt.title("График синуса")
plt.xlabel("x")
plt.ylabel("sin(x)")
plt.legend()
plt.grid()
plt.show()
Гистограмма
python
Copy
data = np.random.randn(1000) # 1000 случайных чисел из нормального распределения
plt.hist(data, bins=30, alpha=0.7)
plt.title("Гистограмма случайных данных")
plt.show()
3. Домашнее задание
Задача 1: Операции с матрицами
Даны матрицы:
Copy
A = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
Вычислить:
1. A + B
2. A @ B
3. Определитель матрицы A
4. Обратную матрицу для A
Решение:
python
Copy
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("A + B =", A + B)
print("A @ B =", A @ B)
print("det(A) =", np.linalg.det(A))
print("inv(A) =", np.linalg.inv(A))
Задача 2: Визуализация данных
Построить графики:
1. y = x^2 для x от -5 до 5
2. Гистограмму 1000 случайных чисел из нормального распределения (np.random.randn)
Решение:
python
Copy
# График параболы
x = np.linspace(-5, 5, 100)
y = x ** 2
plt.plot(x, y)
plt.title("y = x^2")
plt.show()
# Гистограмма
data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.title("Нормальное распределение")
plt.show()
Итоги недели
✅ Познакомились с основами ML и типами задач.
✅ Настроили Python-окружение (NumPy, Matplotlib).
✅ Разобрали линейную алгебру для ML.
✅ Научились работать с матрицами и визуализировать данные.
Следующая тема: Линейная регрессия и градиентный спуск.