uz
Feedback
Библиотека собеса по Data Science | вопросы с собеседований

Библиотека собеса по Data Science | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по Data Science и ответы на них. Учиться у нас: clc.to/GjjbkQ По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/7dfb7235 Для обратной связи: @proglibrary_feeedback_bot

Ko'proq ko'rsatish
4 488
Obunachilar
-424 soatlar
-97 kunlar
+530 kunlar
Postlar arxiv
Напишите код, который будет иллюстрировать Закон больших чисел (ЗБЧ) ЗБЧ утверждает, что при увеличении количества попыток сл
Напишите код, который будет иллюстрировать Закон больших чисел (ЗБЧ) ЗБЧ утверждает, что при увеличении количества попыток случайная величина стремится к своему математическому ожиданию. Для иллюстрации возьмём подбрасывание честной монетки. Математическое ожидание выпадения орла равно 0.5. С увеличением числа подбрасываний среднее значение количества выпавших орлов должно приближаться к 0.5.
import random
import matplotlib.pyplot as plt

total_flips = 0
numerical_probability = []
H_count = 0

for i in range(0, 5000):
    new_flip = random.choice(['H', 'T'])  
    total_flips += 1
    if new_flip == 'H':
        H_count += 1
    numerical_probability.append(H_count / total_flips)  

plt.figure(figsize=(10, 6))
plt.plot(numerical_probability, label='Численная вероятность орла')
plt.axhline(y=0.5, color='r', linestyle='-', label='Математическое ожидание (0.5)')
plt.xlabel("Количество бросков")
plt.ylabel("Численная вероятность орла")
plt.title("Закон больших чисел: Подбрасывание монеты")
plt.legend()

plt.show()
#программирование #теория_вероятностей

Верно ли, что классический градиентный спуск всегда найдёт глобальный минимум функции потерь и выдаст оптимальные параметры? Нет, неверно. Градиентный спуск эффективно работает на выпуклых функциях. В этом случае любой локальный минимум автоматически является глобальным. Однако без выпуклости данный метод оптимизации ничего не гарантирует. При этом невыпуклые функции встречаются повсеместно, в том числе в машинном обучении. Нередко при обучении градиентный спуск застревает в локальном минимуме и не может найти глобальный. Это означает, что найденное решение может не быть оптимальным. Для того, чтобы снизить вероятность такого исхода, применяются разные техники. Однако 100-процентной гарантии не дают и они. К вышеуказанным техникам относятся: ▫️выбор удачных начальных параметров; ▫️модификации градиентного спуска (стохастический градиентный спуск (SGD), градиентный спуск с моментом и др.). #машинное_обучение

Самые полезные каналы для программистов в одной подборке! Сохраняйте себе, чтобы не потерять 💾 🔥Для всех Библиотека программиста — новости, статьи, досуг, фундаментальные темы Книги для программистов IT-мемы Proglib Academy — тут мы рассказываем про обучение и курсы #️⃣C# Книги для шарпистов | C#, .NET, F# Библиотека шарписта — полезные статьи, новости и обучающие материалы по C# Библиотека задач по C# — код, квизы и тесты Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel ☁️DevOps Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps Вакансии по DevOps & SRE Библиотека задач по DevOps — код, квизы и тесты Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования 🐘PHP Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP Вакансии по PHP, Symfony, Laravel Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по PHP — код, квизы и тесты 🐍Python Библиотека питониста — полезные статьи, новости и обучающие материалы по Python Вакансии по питону, Django, Flask Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Python — код, квизы и тесты ☕Java Библиотека джависта — полезные статьи по Java, новости и обучающие материалы Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Java — код, квизы и тесты Вакансии для java-разработчиков 👾Data Science Книги для дата сайентистов | Data Science Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Data Science — код, квизы и тесты Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту 🦫Go Книги для Go разработчиков Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Go — код, квизы и тесты Вакансии по Go 🧠C++ Книги для C/C++ разработчиков Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++ Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по C++ — код, квизы и тесты Вакансии по C++ 💻Другие профильные каналы Библиотека фронтендера Библиотека мобильного разработчика Библиотека хакера Библиотека тестировщика 💼Каналы с вакансиями Вакансии по фронтенду, джаваскрипт, React, Angular, Vue Вакансии для мобильных разработчиков Вакансии по QA тестированию InfoSec Jobs — вакансии по информационной безопасности 📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈 🤖Также у нас есть боты: Бот с IT-вакансиями Бот с мероприятиями в сфере IT Мы в других соцсетях: 🔸VK 🔸YouTube 🔸Дзен 🔸Facebook * 🔸Instagram * * Организация Meta запрещена на территории РФ

😎Разработчик, управляй памятью эффективно! 👉Начните на бесплатном вебинаре онлайн-курса «Программист С» — «Реализация динам
😎Разработчик, управляй памятью эффективно! 👉Начните на бесплатном вебинаре онлайн-курса «Программист С» — «Реализация динамических структур данных на Си и Python»: регистрация Структура вебинара: - Примеры динамических структур данных - Схемы управления динамической памятью в С и Python - Реализация бинарного дерева на С и Python - Применение функций управления динамической памятью. Вебинар будет полезен: - Программистам, изучающим языки С и Python, для развития навыков в области эффективного управления памятью. - Разработчикам в области больших данных. 🤝Понравится вебинар — продолжите обучение на курсе по специальной цене и даже в рассрочку! Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 Erid 2VtzqwWFxhS

Что делает метод Монте-Карло? На самом деле, это группа методов для изучения случайных процессов. В целом, однако, суть методов можно описать как многократную имитацию некого процесса с помощью компьютера. Можно также рассматривать метод Монте-Карло как вероятностную модель, которая способна включать в прогнозирование элемент неопределённости или случайности. Это даёт более чёткую картину, чем детерминированный прогноз. Например, для прогнозирования финансовых рисков нужен анализ десятков или сотен факторов. Финансовые аналитики используют моделирование методом Монте-Карло для определения вероятности каждого возможного исхода. Процесс моделирования состоит из таких шагов: ▫️Создание математической модели. ▫️Определение входных значений. ▫️Создание большого набора случайных выборок на основе распределения выбранных данных. ▫️Проведение расчётов. ▫️Анализ результатов. Нередко модели машинного обучения используются для тестирования и подтверждения результатов моделирования методом Монте-Карло. #теория_вероятностей

Напишите линейную регрессию на Python с нуля Это один из самых простых алгоритмов. Он включает следующие шаги: 1️⃣ Инициализация параметров. 2️⃣ Вычисление предсказаний. 3️⃣ Вычисление функции потерь. 4️⃣ Обновление параметров с помощью градиентного спуска. 5️⃣ Повторение до сходимости.
import numpy as np

class LinearRegression:
    def __init__(self, learning_rate=0.01, n_iters=1000):
        self.learning_rate = learning_rate
        self.n_iters = n_iters

    def fit(self, X, y):
        n_samples, n_features = X.shape
        self.weights = np.zeros(n_features)
        self.bias = 0

        for _ in range(self.n_iters):
            model_preds = self.predict(X)
            dw = (1 / n_samples) * np.dot(X.T, (model_preds - y))
            db = (1 / n_samples) * np.sum(model_preds - y)

            self.weights -= self.learning_rate * dw
            self.bias -= self.learning_rate * db

    def predict(self, X):
        return np.dot(X, self.weights) + self.bias
#машинное_обучение #программирование

Как бы вы разработали инструмент распознавания капчи? Разберём все этапы такого проекта. ✔️ Сбор данных Необходимо найти датасет с изображениями капчи. Самый простой подходящий набор изображений можно найти, например, на Kaggle. Если нужна специфичная система, то следует заняться сбором картинок самостоятельно. ✔️ Предобработка изображений Можно преобразовать изображения в подходящий для обработки формат, например, сделать их чёрно-белыми. Также можно расширить датасет, просто изменив уже имеющиеся картинки: повернуть, отразить, исказить и др. ✔️ Выбор и тренировка модели Самый очевидный выбор — свёрточная нейронная сеть (CNN). Обученную сеть следует проверить на отдельном наборе данных. ✔️ Развёртывание модели Нужно внедрить модель в приложение или систему, где она будет использоваться. Здесь следует отталкиваться от среды. #машинное_обучение

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

⚙️ Ключевое слово delete С помощью ключевого слова delete можно удалить можно удалить из методы из области видимости. Появило
⚙️ Ключевое слово delete С помощью ключевого слова delete можно удалить можно удалить из методы из области видимости. Появилось в C++11, до этого проблема с запретом использования методов решалась переносом их в private область, но это не давала гарантии, что метод может быть использован внутри класса

Перечислите этапы разработки ML-приложения 1️⃣ Постановка задачи На этом этапе также стоит определиться с метриками (бизнес-метриками и DS-метриками), чтобы в дальнейшем оценивать модель. Помимо этого, можно идентифицировать все свои ограничения. 2️⃣ Сбор и предобработка данных Сюда же относится этап генерации новых признаков. Не исключено, что к этому этапу придётся неоднократно возвращаться. 3️⃣ Разведочный анализ данных На этом этапе нужно тщательно изучить данные, сформулировать гипотезы. 4️⃣ Обучение модели Сначала стоит строить бейзлайн — модель без параметров. После этого можно настраивать модели и тестировать их. 5️⃣ Развёртывание ML-модели На этом этапе необходимо перевести код в промышленный вид. Возможно придётся добавить бэкенд, фронтенд и др. Тут же обычно проводится A/B-тестирование. 6️⃣ Поддержка модели Стоит подключить dashboard для отслеживания метрик, механизмы для мониторинга работы ML-модели, чтобы вовремя отлавливать ошибки. #машинное_обучение

🐍 Задача про умножение матриц Условие: Вам даны две матрицы, нужно написать функцию для их умножения. Матрицы могут быть квадратными или прямоугольными. Решение: Напишем решение на чистом Python
def matrix_multiply(A, B):
    # Сначала проверим, можем ли мы вообще перемножить эти матрицы
    if len(A[0]) != len(B):
        raise ValueError("Number of A columns must equal number of B rows.")
    
    # Инициализируем результирующую матрицу, заполненную нулями
    result = [[0 for _ in range(len(B[0]))] for _ in range(len(A))]
    
    # Перемножим матрицы
    for i in range(len(A)):
        for j in range(len(B[0])):
            for k in range(len(B)):
                result[i][j] += A[i][k] * B[k][j]
    
    return result

# Проверим функцию на примере
A = [[1, 2, 3],
     [4, 5, 6]]

B = [[7, 8],
     [9, 10],
     [11, 12]]

result = matrix_multiply(A, B)
for row in result:
    print(row)
#программирование #линейная_алгебра

Расскажите про линейные модели: где используются и как обучаются? Такие модели выявляют линейные зависимости в данных. Наиболее известны линейная и логистическая регрессии. Первая применяется для предсказания значения зависимой переменной, для задачи регрессии. Вторая — для задач классификации. 🎓 Обучение линейных моделей можно проводить с помощью градиентного спуска. Для линейной и логистической регрессии процесс обучения имеет схожие шаги, но различается используемой функцией потерь. ▪️Линейная регрессия. Её обучение заключается в нахождении оптимальных коэффициентов, или весов, перед признаками в уравнении прямой. Чтобы найти веса с помощью градиентного спуска, сначала нужно инициализировать вектор весов случайными числами. Затем нужно вычислить градиент функции потерь (обычно MSE — среднеквадратичное отклонение) и обновить веса, вычитая из них произведение градиента с learning rate. Шаги повторяют, например, до тех пор, как функция потерь не стабилизируется. ▪️Логистическая регрессия. Главное отличие от линейной регрессии заключается в функции потерь — здесь используется log-loss (логарифмическая функция потерь). Процедура обновления весов остается схожей. #машинное_обучение

Хардкорный курс по математике для тех, кто правда любит математику! Начать с вводных занятий можно здесь, ответив всего на 4
Хардкорный курс по математике для тех, кто правда любит математику! Начать с вводных занятий можно здесь, ответив всего на 4 вопроса – https://proglib.io/w/7889d59a Что вас ждет: – Вводный урок от CPO курса – Лекции с преподавателями ВМК МГУ по темам: теория множеств, непрерывность функции, основные формулы комбинаторики, матрицы и операции над ними, градиентный спуск – Практические задания для закрепления материала и ссылки на дополнительные материалы. ⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/7889d59a

Почему XGBoost в среднем показывает производительность лучше, чем Случайный лес (Random Forest)? На самом деле оба алгоритма могут давать хорошие результаты, но XGBoost чаще используется в ML-соревнованиях для достижения наивысшего балла. У этого алгоритма есть несколько полезных свойств: ▫️XGBoost включает в себя механизмы регуляризации. Это помогает уменьшить переобучение и улучшить обобщающую способность модели. ▫️XGBoost строит деревья последовательно: каждое новое дерево исправляет ошибки, сделанные предыдущим.Random Forest же строит деревья параллельно с использованием метода усреднения. Последовательная коррекция ошибок в XGBoost часто приводит к лучшей производительности на многих задачах. ▫️У XGBoost более гибкие гиперпараметры, что улучшает его настройку под датасет. #машинное_обучение

Уже слышали про GitVerse? Это новая платформа для совместной разработки и хостинга кода от СберТеха. Сервис полностью российс
Уже слышали про GitVerse? Это новая платформа для совместной разработки и хостинга кода от СберТеха. Сервис полностью российский – работать с ним удобно, безопасно и надежно. С GitVerse разработчики смогут создавать проекты с открытым и закрытым кодом, переносить репозитории с других площадок, привлекать новых участников и назначать задачи. А еще: - делать код-ревью и объединять изменения; - оптимизировать рабочий процесс: назначать ответственных за ревью и отслеживать результат; - получать запросы на слияние и объединять ветки; - подписываться на обновления пользователей и репозиториев и оставаться в курсе активностей команды; - общаться с ИТ-сообществом, узнавать новости и читать материалы про open source. Вся функциональность GitVerse доступна разработчикам бесплатно. Зарегистрируйтесь и откройте возможности GitVerse уже сейчас.

🐍🗺️ Геокодирование для Data Scientists: вводное руководство с примерами Может возникнуть ситуация, когда набор данных содер
🐍🗺️ Геокодирование для Data Scientists: вводное руководство с примерами Может возникнуть ситуация, когда набор данных содержит адрес, но широта и долгота отсутствуют. В этом случае первым шагом для дополнения данных будет добавление этой пары координат. Этот процесс преобразования адреса в широту и долготу называется геокодированием. В новой статье разбираем три различных способа геокодирования с помощью Geopy. 🔗 Читать статью 🔗 Зеркало

Какова связь между собственными значениями и собственными векторами в PCA (методе главных компонент)? В PCA собственные значения и собственные векторы играют ключевую роль в преобразовании исходных данных в новую систему координат. 🔹Собственные значения — связаны с каждым собственным вектором и представляют собой величину дисперсии данных вдоль соответствующего собственного вектора. 🔹Собственные векторы — это направления или оси в исходном пространстве признаков, вдоль которых данные изменяются сильнее всего или проявляют наибольшую дисперсию. Связь между ними определяется как: A*V = lambda*V, где A = ковариационная матрица, полученная из исходной матрицы признаков V = собственный вектор lambda = собственное значение. Большее собственное значение означает, что соответствующий собственный вектор захватывает больше дисперсии в данных. Сумма всех собственных значений равна общей дисперсии в исходных данных. Следовательно, долю общей дисперсии, объясняемую каждой главной компонентой, можно вычислить, разделив её собственное значение на сумму всех собственных значений. #машинное_обучение #линейная_алгебра

Что такое отчёт о классификации (classification report)? Как его интерпретировать? По сути, отчёт о классификации — это сводка о производительности модели-классификатора, представляющая различные метрики. Вот эти метрики: 🔹Точность (Precision) — отношение истинно положительных предсказаний к общему числу предсказанных положительных. Precision = TP/(TP+FP) 🔹Полнота (Recall) — отношение истинно положительных предсказаний к общему числу фактических положительных. Recall = TP / (TP + FN) 🔹F1-мера — гармоническое среднее точности и полноты. F1-мера = 2 * (Точность * Полнота) / (Точность + Полнота) где, TP = Истинно положительный TN = Истинно отрицательный FP = Ложноположительный FN = Ложноотрицательный Отчёт о классификации можно создать, например, с помощью библиотеки scikit-learn, используя функцию classification_report. В такой отчёт также включён показатель support, который указывает на количество фактических вхождений класса в наборе данных. #машинное_обучение

В чём разница между частотной вероятностью и байесовской вероятностью? Это два разных подхода к интерпретации вероятности, которые часто противопоставляются. 🔹Частотная вероятность Основывается на идее долгосрочной стабильности частот событий. В этой интерпретации вероятность события определяется как предел относительной частоты его наблюдения в серии однородных независимых испытаний. То есть этот подход предполагает, что вероятность может быть объективно измерена путём повторения эксперимента в одинаковых условиях множество раз. Пример: вы бросаете справедливый шестигранный кубик большое количество раз и подсчитываете, сколько раз выпадает шестёрка. Если вы бросите кубик 600 раз и обнаружите, что шестёрка выпала 100 раз, то по частотному подходу вероятность выпадения шестёрки на этом кубике будет 100/600 или 1/6. 🔹Байесовская вероятность Байесовский подход рассматривает вероятность как меру уверенности или степени веры в наступление события. Для определения степени уверенности при получении новой информации в байесовской теории используется теорема Байеса. Пример: допустим, что у вас есть редкая болезнь, которая встречается у 1 из 10000 человек. Тест на эту болезнь имеет чувствительность 99% (вероятность того, что тест окажется положительным у больного человека) и специфичность 99% (вероятность того, что тест окажется отрицательным у здорового человека). Если ваш тест на болезнь оказался положительным, байесовская вероятность того, что вы действительно больны, будет рассчитываться с учётом этих данных и априорной вероятности заболевания (1/10000), что даст вам другое и, возможно, менее интуитивное значение вероятности, чем простая интерпретация результата теста. #теория_вероятностей