Найти в Дзене
Анастасия Софт

🧠 Машинное обучение для обычных людей. 🔹 Часть 2: Как работает ML на Python

или "Что такое pandas, sklearn и как с этим жить" "Jupyter Notebook — это как тетрадь, только магия работает внутри ячеек."
— программист с кофе и 14 открытыми вкладками Stack Overflow Перед тем как начать строить модель, нужно собрать инструменты. И нет, отвертки не подойдут. Нам нужны: Запускаем Jupyter Notebook и поехали 🚀 У нас есть данные: сколько часов студент учился, сколько проспал, сколько играл в Dota — и итоговая оценка. Мы хотим предсказать, сколько баллов он наберёт на экзамене. import pandas as pd
# Загружаем данные (или создаём прямо в коде)
data = pd.DataFrame({
"hours_study": [1, 2, 3, 4, 5, 6, 7],
"hours_sleep": [8, 7, 6, 6, 5, 5, 4],
"hours_dota": [5, 4, 3, 2, 2, 1, 0],
"score": [50, 55, 60, 70, 75, 85, 95]
})
# Показываем, что у нас в табличке
data.head() 👉 Комментарий: DataFrame — это как Excel в Python: таблица с колонками. Мы создали мини-опрос студентов и их оценки. import seaborn as sns
import matplotlib.pyplot as plt
# Строим корреляционн
Оглавление
Как работает ML на Python
Как работает ML на Python

или "Что такое pandas, sklearn и как с этим жить"

"Jupyter Notebook — это как тетрадь, только магия работает внутри ячеек."

— программист с кофе и 14 открытыми вкладками Stack Overflow

📦 Что нам понадобится?

Перед тем как начать строить модель, нужно собрать инструменты. И нет, отвертки не подойдут. Нам нужны:

  • Jupyter Notebook — наша интерактивная лаборатория.
  • pandas — библиотека для работы с табличками (в духе Excel, но лучше).
  • scikit-learn (sklearn) — мощная библиотека машинного обучения.
  • matplotlib/seaborn — графики, визуализация, всё как мы любим.

Запускаем Jupyter Notebook и поехали 🚀

📘 Первая реальная задача: Предсказание оценок студентов

💡 Сценарий:

У нас есть данные: сколько часов студент учился, сколько проспал, сколько играл в Dota — и итоговая оценка. Мы хотим предсказать, сколько баллов он наберёт на экзамене.

🔨 Шаг 1: Подготовим данные

import pandas as pd

# Загружаем данные (или создаём прямо в коде)
data = pd.DataFrame({
"hours_study": [1, 2, 3, 4, 5, 6, 7],
"hours_sleep": [8, 7, 6, 6, 5, 5, 4],
"hours_dota": [5, 4, 3, 2, 2, 1, 0],
"score": [50, 55, 60, 70, 75, 85, 95]
})

# Показываем, что у нас в табличке
data.head()

👉 Комментарий: DataFrame — это как Excel в Python: таблица с колонками. Мы создали мини-опрос студентов и их оценки.

🔍 Шаг 2: Визуализируем данные

import seaborn as sns
import matplotlib.pyplot as plt

# Строим корреляционную матрицу
sns.heatmap(data.corr(), annot=True, cmap="coolwarm")
plt.title("Корреляции между признаками")
plt.show()

👉 Комментарий: Видим, что "учёба" и "оценка" хорошо коррелируют, а "Dota" — наоборот, чем больше Dota, тем меньше баллов 😅

🧠 Шаг 3: Обучим модель

from sklearn.linear_model import LinearRegression

# Признаки (X) и целевая переменная (y)
X = data[["hours_study", "hours_sleep", "hours_dota"]]
y = data["score"]

# Создаём и обучаем модель
model = LinearRegression()
model.fit(X, y)

👉 Комментарий: LinearRegression — простая модель, которая учится находить зависимость вида:

score = a * hours_study + b * hours_sleep + c * hours_dota + d

🤖 Шаг 4: Предсказываем

# Пример нового студента
new_student = pd.DataFrame({
"hours_study": [5],
"hours_sleep": [6],
"hours_dota": [1]
})

# Прогноз
prediction = model.predict(new_student)
print(f"Предсказанная оценка: {prediction[0]:.1f} баллов")

👉 Комментарий: Модель сама рассчитала балл по формуле, которую выучила на прошлых примерах.

🔁 Ещё 4 примера, чтобы закрепить 🔥

🧾 Пример 2: Предсказание зарплаты по опыту (лайт версия)

exp_data = pd.DataFrame({
"years_experience": [0.5, 1, 2, 3, 4, 5],
"salary_k": [30, 35, 45, 55, 65, 75]
})

X = exp_data[["years_experience"]]
y = exp_data["salary_k"]

model = LinearRegression()
model.fit(X, y)

print(f"Прогноз зарплаты при 2.5 годах опыта: {model.predict([[2.5]])[0]:.1f} тыс руб.")

👉 Комментарий: Чем больше опыта, тем выше з/п. Модель это легко схватывает.

📦 Пример 3: Классификация — поступит ли студент

from sklearn.linear_model import LogisticRegression

admit_data = pd.DataFrame({
"GPA": [2.5, 3.0, 3.5, 3.8, 4.0, 4.2],
"Passed": [0, 0, 1, 1, 1, 1]
})

X = admit_data[["GPA"]]
y = admit_data["Passed"]

model = LogisticRegression()
model.fit(X, y)

# Прогноз для студента с GPA 3.3
print("Поступит" if model.predict([[3.3]])[0] == 1 else "Не поступит")

👉 Комментарий: Это уже классификация, а не регрессия. Модель решает: 0 или 1 — поступит или нет.

💬 Пример 4: Предсказание отзыва — положительный или негативный

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

reviews = ["отличный фильм", "ужасный фильм", "неплохой, но затянутый", "прекрасно!", "скучно"]
labels = [1, 0, 1, 1, 0]

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(reviews)

model = MultinomialNB()
model.fit(X, labels)

test_review = vectorizer.transform(["фильм был отличный"])
print("Положительный отзыв" if model.predict(test_review)[0] == 1 else "Негативный отзыв")

👉 Комментарий: Учим модель "понимать" текст. CountVectorizer превращает слова в числа.

⚡ Пример 5: Определение кредитного риска (mini-продуктовый кейс)

risk_data = pd.DataFrame({
"age": [25, 45, 35, 50, 23],
"salary": [30000, 80000, 50000, 120000, 25000],
"debt": [0, 1, 0, 1, 1],
"approved": [1, 0, 1, 0, 0]
})

X = risk_data[["age", "salary", "debt"]]
y = risk_data["approved"]

model = LogisticRegression()
model.fit(X, y)

new_applicant = [[30, 60000, 0]]
print("Кредит одобрен" if model.predict(new_applicant)[0] == 1 else "Отказ")

👉 Комментарий: Уже ближе к реальному продукту: модель смотрит на профиль клиента и принимает решение.

🧮 А что под капотом?

Все эти модели:

  • Ищут закономерности в данных
  • Строят математическую модель
  • Предсказывают результат для новых случаев

И это всё можно делать с помощью sklearn и pandas — без матана и боли.

🎯 Выводы

  • Вы уже можете строить модели!
  • Jupyter + pandas + sklearn = ваш новый лучший друг
  • Всё, что нужно — немного данных, логика и пара строчек кода
  • ML — это не сложно. Это структурированное здравомыслие

⏭ Что дальше?

Часть 3 "От очистки до прогноза — весь путь данных. Чистим, нормализуем, тренируем. Метрики качества и «что делать, если модель тупит»"