Библиотека собеса по Data Science | вопросы с собеседований
الذهاب إلى القناة على Telegram
Вопросы с собеседований по Data Science и ответы на них. Курс по Ai-агентам: https://clc.to/9L0Tqg По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/7dfb7235 Для обратной связи: @proglibrary_feeedback_bot
إظهار المزيد4 487
المشتركون
-124 ساعات
+57 أيام
+3930 أيام
أرشيف المشاركات
Какие могут быть проблемы в данных? Как вы бы их исправляли?
В данных могут быть ошибки, дубликаты, пропущенные значения.
🔹Ошибки могут быть связаны с человеческим фактором, например, невнимательностью, или вызваны сбоями в работе оборудования, записывающего какие-либо показатели. Чтобы исправить ошибки, нам нужно выяснить, чем они были вызваны. После этого можно будет выбрать верную стратегию.
Распространённым типом ошибок являются неверные значения. Поэтому необходимо проверить, что данные не противоречат своей природе. Например, цена товара не может быть отрицательной.
🔹Дубликаты в данных следует удалять. Найти их и удалить можно, например, с помощью Pandas, методов duplicated и drop_duplicates.
🔹Неверные типы значений могут испортить анализ и дальнейшую работу с данными. Например, некоторый показатель записан в виде строк, хотя нам было бы предпочтительнее работать с ним как с типом float. Нужно привести все типы к требуемым. Даты и время можно перевести в объекты datetime.
🔹Обработка пропущенных значений также требует понимания природы данных. В целом, тут есть несколько основных методов:
▫️удалить объекты с пропусками,
▫️заменить пропуски на среднее значение, медиану или моду,
▫️провести множественную импутацию данных (MICE).
🔹Также стоит провести поиск аномалий (выбросов) в данных. В зависимости от ситуации, аномалии можно отфильтровать, скорректировать или проанализировать отдельно.
#машинное_обучение
#предобработка_данных
Что такое VIF (variance inflation factor)?
VIF — это метрика, используемая для оценки мультиколлинеарности между признаками в моделях машинного обучения. Мультиколлинеарность возникает, когда два или более признака в модели сильно коррелированы друг с другом.
VIF измеряет, насколько много дисперсии коэффициента регрессии оцениваемого признака объясняется другими признаками в модели. Принцип расчёта метрики заключается в том, чтобы поочередно принимать каждый из признаков за целевую переменную и строить модель линейной регрессии на основе оставшихся независимых переменных.
Значение VIF больше 10 обычно считается признаком наличия мультиколлинеарности.
#машинное_обучение
#статистика
Описание какого алгоритма дано выше?
Этот алгоритм используется для кластеризации. Он инициализируется с заранее определённым числом кластеров и работает, перемещая центроиды кластеров так, чтобы минимизировать суммарное квадратичное отклонение между точками данных и соответствующими центроидами.
🤖 Напоминаем, что у нас есть еженедельная email-рассылка, посвященная последним новостям и тенденциям в мире искусственного интеллекта.
В ней:
● Новости о прорывных исследованиях в области машинного обучения и нейросетей
● Материалы о применении ИИ в разных сферах
● Статьи об этических аспектах развития технологий
● Подборки лучших онлайн-курсов и лекций по машинному обучению
● Обзоры инструментов и библиотек для разработки нейронных сетей
● Ссылки на репозитории с открытым исходным кодом ИИ-проектов
● Фильмы, сериалы и книги
👉Подписаться👈
Зачем нужно масштабирование признаков? Как бы вы его провели?
Допустим, у нас есть линейная регрессия с двумя независимыми переменными, у которых совершенно разный масштаб. Например, значения одного признака находятся в диапазоне от 0 до 100, а второго — от 0 до 1. Чтобы подстроиться под такие признаки, модель подберёт коэффициенты так, что первый будет небольшим, а второй — большим.
Проблема тут возникает на этапе обучения. Дело в том, что скорость оптимизации таких коэффициентов не будет одинаковой: ведь при градиентном спуске мы найдём две частные производные и подберём единый для обеих производных коэффициент скорости обучения. В результате, на каждой итерации мы будем получать различающиеся значения градиента для разных направлений.
Есть несколько способов масштабирования:
▫️Нормализация.
В данном случае все значения будут находиться в диапазоне от 0 до 1.
▫️Стандартизация.
Масштабирует значения с учётом стандартного отклонения.
Для нормализации, например, можно использовать метод MinMaxScaler из scikit-learn. Для стандартизации в этой же библиотеке есть метод StandardScaler.
#машинное_обучение
Напишите код, который будет иллюстрировать Закон больших чисел (ЗБЧ)
ЗБЧ утверждает, что при увеличении количества попыток случайная величина стремится к своему математическому ожиданию. Для иллюстрации возьмём подбрасывание честной монетки. Математическое ожидание выпадения орла равно 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: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
⚙️ Ключевое слово 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 (логарифмическая функция потерь). Процедура обновления весов остается схожей.
#машинное_обучение
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
