Data Science | Machinelearning [ru]
Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM. MAX - https://max.ru/devsp Личный блог - @just_genych По вопросам рекламы или разработки - @g_abashkin РКН: https://vk.cc/cJPGXD
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Data Science | Machinelearning [ru]
تُعد قناة Data Science | Machinelearning [ru] (@devsp) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 19 696 مشتركاً، محتلاً المرتبة 6 672 في فئة التكنولوجيات والتطبيقات والمرتبة 33 379 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 19 696 مشتركاً.
بحسب آخر البيانات بتاريخ 31 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -102، وفي آخر 24 ساعة بمقدار -1، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 7.84%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.63% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 544 مشاهدة. وخلال اليوم الأول يجمع عادةً 913 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل llm, nvidia, контекст, openai, архитектура.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM.
MAX - https://max.ru/devsp
Личный блог - @just_genych
По вопросам рекламы или разработки - @g_abashkin
РКН: https://vk.cc/cJPGXD”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 01 نوفمبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
"A", "B", "C"), который был закодирован в виде One-Hot Encoding, а затем данные были искажены случайным шумом.
Реализуйте функцию recover_category(matrix, labels), которая по входной матрице matrix (список списков, где каждая строка — вектор с плавающими значениями после шума) и списку labels (названия категорий в нужном порядке) должна восстановить название исходной категории для каждой строки — ту, у которой была 1 до добавления шума.
Шум малый, но может нарушать точные значения (например, 1.0 становится 0.91, 0.0 — 0.08 и т.п.).
Решение задачи🔽
def recover_category(matrix, labels): result = [] for row in matrix: max_index = row.index(max(row)) result.append(labels[max_index]) return result # Пример использования matrix = [ [0.05, 0.92, 0.03], [0.89, 0.06, 0.12], [0.12, 0.08, 0.83] ] labels = ["A", "B", "C"] print(recover_category(matrix, labels)) # Ожидаемый результат: ['B', 'A', 'C']
plot_distributions, которая принимает DataFrame и автоматически определяет числовые и категориальные признаки. Затем строит гистограммы или bar-графики в зависимости от типа данных. Это удобно для EDA (исследовательского анализа данных).
Решение задачи🔽
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns def plot_distributions(df, max_categories=10): for column in df.columns: plt.figure(figsize=(6, 4)) if pd.api.types.is_numeric_dtype(df[column]): sns.histplot(df[column].dropna(), kde=True) plt.title(f'Гистограмма: {column}') elif df[column].nunique() <= max_categories: df[column].value_counts().plot(kind='bar') plt.title(f'Категории: {column}') else: print(f'Пропущен {column}: слишком много уникальных категорий') continue plt.tight_layout() plt.show() # Пример использования df = pd.DataFrame({ 'age': [23, 45, 31, 35, 62, 44, 23], 'gender': ['male', 'female', 'female', 'male', 'male', 'female', 'female'], 'income': [40000, 50000, 45000, 52000, 61000, 48000, 46000] }) plot_distributions(df)
KNeighborsClassifier и сделайте предсказание. Это классическая задача для первых шагов в машинном обучении.
Решение задачи🔽
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # Загружаем данные iris = load_iris() X, y = iris.data, iris.target # Делим на обучающую и тестовую выборки X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Обучаем модель model = KNeighborsClassifier(n_neighbors=3) model.fit(X_train, y_train) # Предсказание y_pred = model.predict(X_test) # Оценка качества print(f"Точность: {accuracy_score(y_test, y_pred):.2f}")
logging в Python?
logging — это встроенный модуль Python для создания логов, которые помогают отлаживать и мониторить работу приложений.
➡️ Пример:
import logging
# Настройка базового уровня логирования
logging.basicConfig(level=logging.INFO)
# Создание лога
logging.info("Приложение запущено")
logging.warning("Это предупреждение!")
logging.error("Произошла ошибка")
🗣️ В этом примере модуль logging создаёт сообщения разного уровня важности. Логирование позволяет отслеживать работу приложений и находить проблемы в коде.🖥 Подробнее тут
X — список списков с числовыми признаками. Один или несколько признаков были случайно сгенерированы, и не несут полезной информации (то есть, они не коррелируют ни с одним другим).
Нужно реализовать функцию drop_random_features(X, threshold=0.05), которая вернёт индексы признаков, слабо коррелирующих со всеми остальными (по модулю корреляции Пирсона).
Если признак не коррелирует ни с одним другим больше, чем на threshold, он считается псевдослучайным и подлежит удалению.
Цель:
Найти признаки, которые не имеют статистической связи с другими и потенциально являются шумом. Возвращать нужно их индексы.Решение задачи🔽
import numpy as np def drop_random_features(X, threshold=0.05): X = np.array(X) n_features = X.shape[1] to_drop = [] for i in range(n_features): max_corr = 0 for j in range(n_features): if i != j: corr = abs(np.corrcoef(X[:, i], X[:, j])[0, 1]) max_corr = max(max_corr, corr) if max_corr < threshold: to_drop.append(i) return to_drop # Пример использования np.random.seed(42) X = np.column_stack([ np.linspace(1, 10, 100), # линейный np.linspace(10, 1, 100), # обратный np.random.rand(100), # шум np.linspace(5, 50, 100) + np.random.rand(100) * 0.1 # почти линейный ]) print(drop_random_features(X, threshold=0.2)) # Ожидаемый результат: [2] — третий признак случайный
