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 700 مشتركاً، محتلاً المرتبة 6 678 في فئة التكنولوجيات والتطبيقات والمرتبة 33 376 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 19 700 مشتركاً.
بحسب آخر البيانات بتاريخ 30 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -99، وفي آخر 24 ساعة بمقدار -7، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 7.92%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.70% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 561 مشاهدة. وخلال اليوم الأول يجمع عادةً 925 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل llm, nvidia, контекст, openai, архитектура.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Все о Data Science, машинном обучении и искусственном интеллекте: от базовой теории до cutting-edge исследований и LLM.
MAX - https://max.ru/devsp
Личный блог - @just_genych
По вопросам рекламы или разработки - @g_abashkin
РКН: https://vk.cc/cJPGXD”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 31 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
import tensorflow as tf from tensorflow.keras.datasets import cifar10 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense # Загрузка данных (X_train, y_train), (X_test, y_test) = cifar10.load_data() # Нормализация данных X_train, X_test = X_train / 255.0, X_test / 255.0 # Создание модели CNN model = Sequential([ Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), MaxPooling2D((2, 2)), Conv2D(64, (3, 3), activation='relu'), MaxPooling2D((2, 2)), Flatten(), Dense(128, activation='relu'), Dense(10, activation='softmax') ]) # Компиляция модели model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Обучение модели model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test)) # Оценка модели loss, accuracy = model.evaluate(X_test, y_test) print(f"Точность модели: {accuracy:.2f}")
find_similar_pairs(vectors, tolerance=0.05), которая возвращает все пары индексов, где косинусная разница между векторами меньше tolerance.
Дополнительные условия:
• Векторы могут быть высокой размерности (до 512) • Пара (i, j) считается дубликатом (i < j), если их cosine similarity ~ 1.0 • Не используйте внешние ML-библиотеки: только numpy • Функция должна быть оптимизирована — без грубой проверки каждой пары, если можноРешение задачи🔽
import numpy as np def cosine_similarity(a, b): a, b = np.array(a), np.array(b) return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)) def find_similar_pairs(vectors, tolerance=0.05): result = [] n = len(vectors) for i in range(n): for j in range(i + 1, n): sim = cosine_similarity(vectors[i], vectors[j]) if 1 - sim <= tolerance: result.append((i, j)) return result
yield, вместо полного возврата всех значений сразу. Они полезны для работы с большими объемами данных, так как сохраняют память, генерируя значения на лету.
➡️ Пример:
# Генератор для получения первых N чисел Фибоначчи
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# Используем генератор
for num in fibonacci(5):
print(num)
# Вывод: 0, 1, 1, 2, 3
🗣️ В этом примере генератор fibonacci вычисляет числа по запросу, вместо сохранения всех значений в памяти. Это делает генераторы особенно удобными для работы с потоками данных или бесконечными последовательностями.🖥 Подробнее тут
detect_outlier(data: List[List[float]], labels: List[str]) -> int, которая возвращает индекс выброса в списке. Гарантируется, что в labels один лейбл может быть "unknown", а может и вовсе отсутствовать — выброс может быть замаскирован.
Метрика — средняя евклидова дистанция до других представителей того же класса должна быть на порядок выше, чем у нормальных объектов.
Пример данных:
data = [ [1.1, 0.9], [1.2, 1.0], [0.9, 1.1], # cat [3.0, 3.1], [2.9, 3.0], [3.1, 2.9], # dog [5.0, 5.1], [5.1, 5.0], [8.0, 8.0], # last — выброс ] labels = ["cat", "cat", "cat", "dog", "dog", "dog", "bird", "bird", "bird"]Решение задачи🔽
import numpy as np from collections import defaultdict def detect_outlier(data, labels): data = np.array(data) grouped = defaultdict(list) for i, label in enumerate(labels): grouped[label].append(i) outlier_idx = -1 max_score = -1 for i, point in enumerate(data): label = labels[i] others = [j for j in grouped[label] if j != i] if not others: continue distances = [np.linalg.norm(point - data[j]) for j in others] avg_dist = np.mean(distances) if avg_dist > max_score: max_score = avg_dist outlier_idx = i return outlier_idx # Тест print(detect_outlier(data, labels)) # ➜ 8
