
- Главная
- Каталог
- Интернет технологии
- Python Ready | Программирование
Python Ready | Программирование
Авторский канал по разработке на Python.
Статистика канала
pip install pandas scikit-learn
{}
Импорт модулей:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
{}
Игрушечный учебный датасет. Создадим небольшой учебный набор данных — сообщения с метками спама:
data = pd.DataFrame({
"text": [
"Win a free lottery prize now",
"Limited offer buy today",
"Meeting scheduled at 10 am",
"Project report attached",
"Congratulations you won money",
"Let's discuss the budget"
],
"spam": [1, 1, 0, 0, 1, 0]
})
{}
Целевая переменная spam: 1 — спам, 0 — обычное сообщение.
X = data["text"]
y = data["spam"]
{}
Разделение данных на обучающую и тестовую выборки:
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.33,
random_state=42,
stratify=y
)
{}
Стратификация сохраняет долю спама в обеих выборках. TF-IDF (Term Frequency — Inverse Document Frequency) превращает текст в вектор признаков: TF отражает частоту терма в документе, IDF снижает вес слов, которые часто встречаются в корпусе.
Соберём пайплайн:
model = Pipeline(steps=[
("tfidf", TfidfVectorizer(
lowercase=True,
stop_words="english" # для русского нужен другой список/подход
)),
("clf", LogisticRegression(max_iter=1000))
])
model.fit(X_train, y_train)
{}
Pipeline гарантирует, что одинаковые преобразования применяются и при обучении, и при предсказании (без утечек и ручных ошибок).
Оценка качества:
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
{}
Важно: на таком маленьком наборе данных метрики будут нестабильны — это демонстрационный пример. На реальных данных обычно используют кросс-валидацию и отдельную валидационную выборку.
Метрики precision, recall и F1 особенно важны в спам-фильтрации, где ошибки разных типов имеют разную стоимость.
Пример классификации нового сообщения:
msg = ["You have been selected for a free gift card"]
prediction = model.predict(msg)[0]
prob = model.predict_proba(msg)[0][1]
print("Спам" if prediction == 1 else "Не спам")
print("Вероятность спама:", round(prob, 2))
{}
predict_proba возвращает вероятность класса, что позволяет настраивать порог срабатывания фильтра под нужный баланс precision/recall.
• Используем библиотеку NumPy для численных вычислений и работы с матрицами; • Реализуем итеративное обучение модели на наборе входных данных; • Проследим изменение ошибки и формирование корректных предсказаний; • Разберём ключевые элементы процесса обучения.Задача формирует фундаментальное понимание машинного обучения, которое лежит в основе систем анализа данных, рекомендаций, прогнозирования и автоматизации.
• Супер подробный и понятный разбор архитектуры трансформера;
• Пошаговая реализация ключевых компонентов — attention, positional encoding, FF-блоков и обучения;
• Практический запуск и обучение собственной мини-модели на Python и NumPy.
🔊 Продолжайте читать на Habr!
Оставляю ссылочку: GitHub📱
pip install pandas scikit-learn{}
Импорт библиотек:
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.pipeline import Pipeline{}
Создадим небольшой искусственный набор данных с показателями работы оборудования. Каждая строка — отдельное измерение, столбцы — сенсорные параметры:
data = pd.DataFrame({
"temperature": [22, 23, 21, 22, 24, 23, 22, 85],
"pressure": [101, 100, 102, 101, 99, 100, 101, 60],
"vibration": [0.3, 0.35, 0.32, 0.31, 0.34, 0.33, 0.30, 2.5]
}){}
Первые наблюдения соответствуют нормальной работе оборудования, последняя строка выглядит подозрительно — значения резко отличаются по всем параметрам.
Isolation Forest обучается только на признаках и не требует разметки. Масштабирование признаков для него не обязательно (алгоритм основан на деревьях и слабо чувствителен к масштабу), но часто используется для единообразия предобработки в пайплайнах:
model = Pipeline(steps=[
("scaler", StandardScaler()),
("iso", IsolationForest(
n_estimators=100,
contamination=0.1, # ожидаемая доля аномалий
random_state=42
))
])
model.fit(data){}
Параметр contamination задаёт предполагаемую долю аномалий в данных. Модель будет стремиться пометить примерно такую часть объектов как выбросы. Если точное значение неизвестно, его обычно подбирают экспериментально.
Получение меток аномалий:
labels = model.predict(data)
data["anomaly"] = labels
print(data){}
Каждому объекту присваивается метка: 1 — нормальное наблюдение; -1 — аномалия.
При необходимости можно получить не только метки, но и оценку степени аномальности через decision_function.
Важно использовать тот же обученный пайплайн. Это гарантирует применение тех же преобразований признаков:
new_point = pd.DataFrame([{
"temperature": 90,
"pressure": 55,
"vibration": 3.0
}])
result = model.predict(new_point)[0]
print("Аномалия" if result == -1 else "Норма"){}
Отзывы канала
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Python Ready | Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 34.5K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 20.0, количество отзывов – 1, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 6293.7 ₽, а за 17 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий