"Машинное обучение? Это как магия, но с питоном вместо волшебной палочки."
— кто-то с кофе в руках и багом в голове
📍 Начнём с самого начала.
Что вообще такое машинное обучение?
Если по-простому: машинное обучение (ML) — это способ научить компьютер делать что-то без явного программирования. То есть, не писать:
if температура > 30:
напиши("На улице жарко")
А сказать компьютеру: "Вот тебе куча данных о погоде и людских реакциях, научись сам понимать, когда жарко". И он научится.
Компьютер сам строит модель (математическую), на основе которой принимает решения. Всё это — машинное обучение.
🔧 Как это работает?
- Собираем данные
- Обрабатываем их
- Обучаем модель
- Проверяем, хорошо ли она работает
- Используем в реальных задачах
А теперь — не просто теория, а пять реальных задач, от простого к сложному. Все на Python, с пояснениями каждой строки. Начнём с самого лайтового.
🧁 Пример 1: Угадай калорию по названию продукта (наивно, но весело)
Задача:
У нас есть список продуктов и их калорийность. Надо научить модель предсказывать калории нового продукта.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LinearRegression
# 1. Наши данные: продукты и их калории
products = ["яблоко", "шоколад", "огурец", "бургер", "банан"]
calories = [52, 546, 16, 295, 89]
# 2. Преобразуем слова в числа (машины не понимают текст)
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(products)
# 3. Создаём модель линейной регрессии
model = LinearRegression()
# 4. Обучаем модель
model.fit(X.toarray(), calories)
# 5. Пробуем предсказать калории
test = vectorizer.transform(["пицца"])
prediction = model.predict(test.toarray())
print(f"Пицца по мнению модели содержит примерно {prediction[0]:.0f} ккал.")
👉 Комментарий: Модель пока глуповата — она просто смотрит на буквы в слове. Но для начала — сойдёт!
🧪 Пример 2: Определяем, спам ли письмо
Задача:
Получаем текст письма и хотим понять — это спам или нет.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
# 1. Примеры писем и их метки: 1 — спам, 0 — не спам
emails = [
"Вы выиграли 1 000 000 рублей",
"Привет, как дела?",
"Купите сейчас и получите подарок!",
"Давайте встретимся в пятницу",
"Срочно! Вы должны это увидеть"
]
labels = [1, 0, 1, 0, 1]
# 2. Векторизация текста
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)
# 3. Обучение модели
model = MultinomialNB()
model.fit(X, labels)
# 4. Тестирование
test_email = "Получите подарок прямо сейчас"
test_vector = vectorizer.transform([test_email])
result = model.predict(test_vector)
print("СПАМ" if result[0] == 1 else "НЕ СПАМ")
👉 Комментарий: Простая модель, но уже вполне рабочая. Используется на практике в антиспам-фильтрах.
📊 Пример 3: Предсказываем цену квартиры (для аналитиков)
Задача:
Предсказывать цену на квартиру по количеству комнат, этажу и площади.
import pandas as pd
from sklearn.linear_model import LinearRegression
# 1. Пример данных
data = {
"rooms": [1, 2, 3, 2, 4],
"floor": [1, 3, 5, 2, 10],
"area": [35, 50, 70, 45, 90],
"price": [3.5, 5.0, 7.5, 4.8, 9.0] # миллионы рублей
}
df = pd.DataFrame(data)
# 2. Подготовка признаков и целевой переменной
X = df[["rooms", "floor", "area"]]
y = df["price"]
# 3. Модель
model = LinearRegression()
model.fit(X, y)
# 4. Прогноз
new_flat = [[2, 4, 55]]
prediction = model.predict(new_flat)
print(f"Прогнозируемая цена: {prediction[0]:.2f} млн рублей")
👉 Комментарий: Линейная регрессия — классика. Удивительно, насколько много можно предсказать с её помощью.
🕹️ Пример 4: Играем в угадай число с нейросетью (немного фана)
Задача:
Модель пытается научиться угадывать число от 0 до 100 по подсказкам "меньше/больше".
(Это полуигровой пример — покажу основу в следующей части, здесь пока идею.)
🧠 Пример 5: Распознавание рукописных цифр (ближе к реальному ML)
Задача:
Обучаем модель распознавать цифры 0-9 по изображениям. Используем датасет MNIST.
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 1. Загружаем изображения цифр
digits = load_digits()
X = digits.data # Пиксели (64 признака)
y = digits.target # Цифры (0-9)
# 2. Делим на тренировку и тест
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 3. Обучаем модель случайного леса
model = RandomForestClassifier()
model.fit(X_train, y_train)
# 4. Тестируем
y_pred = model.predict(X_test)
print("Точность:", accuracy_score(y_test, y_pred))
👉 Комментарий: Это уже ближе к настоящим нейросетям. Хотя и не Deep Learning, но результат очень достойный!
💡 Подведём итоги
Машинное обучение — это не магия, а просто умная статистика. Даже без сложной математики вы уже можете:
- Научить модель определять спам
- Предсказывать цены
- Узнавать цифры
- И просто играть с текстами
🤔 А что дальше?
Если тебе понравилось — жми "сохранить", делись с другом или пиши мне, если остались вопросы.
"Часть 2: Как работает ML на Python".