cookie

Utilizamos cookies para mejorar tu experiencia de navegación. Al hacer clic en "Aceptar todo", aceptas el uso de cookies.

avatar

Data Science | Вопросы собесов

Разбираем вопросы с собеседований на Data Scientist. Сайт: https://easyoffer.ru/ Предложения: @easyoffer_adv

Mostrar más
avatarNetwork:easyofferRusia142 126Ruso153 469La categoría no está especificada
Publicaciones publicitarias
2 415
Suscriptores
+5224 horas
+3407 días
+95230 días

Carga de datos en curso...

Tasa de crecimiento de suscriptores

Carga de datos en curso...

Почему в нейроных сетях нельзя инициализировать веса нулями ? Спросят с вероятностью 14% Инициализация весов нулями в нейронных сетях является нежелательной практикой по нескольким причинам, связанным с динамикой обучения и эффективностью модели. Вот основные причины, по которым следует избегать такой инициализации: 1⃣Симметрия весов и проблема одинакового обучения Когда все веса инициализированы нулями, все нейроны в одном слое сети ведут себя одинаково во время прямого распространения сигнала. Это означает, что независимо от входных данных, все нейроны одного слоя будут вычислять одинаковые выходные данные и, следовательно, получать одинаковые ошибки во время обратного распространения. В результате, при обновлении весов, все веса будут обновляться одинаково, что эффективно делает нейроны в слое идентичными. Это приводит к тому, что такие нейроны не добавляют никакой дополнительной выразительной способности или разнообразия в модель, что существенно ограничивает её мощность. 2⃣Отсутствие начального разрушения симметрии Инициализация весов случайными значениями помогает разорвать симметрию весов, позволяя каждому нейрону изучать различные аспекты данных в процессе обучения. Это необходимо для того, чтобы каждый нейрон мог развиваться независимо и способствовать изучению разнообразных признаков в данных. Инициализация нулями препятствует этому процессу, сохраняя симметрию и, таким образом, ингибируя эффективное обучение. 3⃣Отсутствие градиентов для обучения Если все веса инициализированы нулями, градиенты ошибки, полученные в процессе обратного распространения, будут одинаковыми для всех весов. Это приводит к тому, что обновления весов также будут одинаковыми, и веса останутся одинаковыми на протяжении всего процесса обучения, не позволяя сети адекватно адаптироваться и учиться на основе предоставленных данных. 4⃣Неактивация нейронов Если активационная функция, такая как ReLU (Rectified Linear Unit), используется в нейронной сети, начальная инициализация весов нулями приведет к тому, что выходы всех нейронов будут нулями. Поскольку ReLU возвращает ноль для любых отрицательных входов и линейно пропускает положительные входы, нулевые веса приведут к нулевому выходу на всех нейронах, что делает нейроны фактически неактивными в процессе обучения. Рекомендации по инициализации: Вместо инициализации нулями рекомендуется использовать методы, такие как инициализация Хе (He initialization) или инициализация Глорота (Glorot/Xavier initialization), которые учитывают размеры предыдущего и следующего слоя для установки весов, что помогает в начальном разрушении симметрии и обеспечивает более эффективное обучение сети. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
👍 5
Photo unavailableShow in Telegram
❤️ Все платные курсы и книги выложили в Telegram Найденные материалы по всем популярным языкам программирования теперь доступны бесплатно. Выбирай направление и обучайся: — Frontend-разработчик — Backend-разработчик — Python-разработчик — Kotlin-разработчик — Swift-разработчик — Golang-разработчик — Java-разработчик — C#-разработчик — C/C++-разработчик — PHP-разработчик — Rust-разработчик — QA-тестировщик — DevOps-инженер 🔒 Ежедневно куча материалов сливается в канал Easy Dev
Mostrar todo...
1🤔 1
В чем разница между лист и кортежем ? Спросят с вероятностью 14% Списки (list) и кортежи (tuple) — это два различных типа данных, которые используются для хранения коллекций элементов. Они похожи, но имеют несколько ключевых отличий, определяющих их использование в различных сценариях программирования. Основные различия 1️⃣ИзменяемостьСписок (list) — изменяемый тип данных. Это значит, что после его создания вы можете изменять его содержимое (добавлять, удалять или изменять элементы). ✅Кортеж (tuple) — неизменяемый тип данных. После создания его содержимое не может быть изменено. Это делает кортежи более безопасными для использования в качестве ключей словарей или элементов множеств.
# Список
my_list = [1, 2, 3]
my_list[0] = 100
print(my_list)  # Вывод: [100, 2, 3]

# Кортеж
my_tuple = (1, 2, 3)
my_tuple[0] = 100  # Приведет к ошибке TypeError
2️⃣Память ✅Списки занимают больше памяти, так как предоставляют дополнительные возможности для управления данными (например, добавление или удаление элементов). ✅Кортежи занимают меньше памяти, что делает их более эффективными с точки зрения использования памяти при работе с большим объемом данных. 3️⃣Производительность ✅Операции с кортежами выполняются быстрее, чем с списками, из-за их статичной природы. Это особенно важно при обработке больших данных или в высокопроизводительных приложениях. 4️⃣ИспользованиеСписки чаще используются для данных, которые нуждаются в частом изменении (например, списки покупок, результаты, которые могут обновляться в процессе работы программы). ✅Кортежи используются там, где данные не должны изменяться после создания (например, конфигурационные данные программы, параметры функций).
# Список: хранение и изменение данных о студентах
students = ["Alice", "Bob", "Charlie"]
students.append("David")
print(students)  # Вывод: ['Alice', 'Bob', 'Charlie', 'David']

# Кортеж: хранение фиксированных данных
coordinates = (40.7128, 74.0060)  # Координаты Нью-Йорка
print(coordinates)
Список — это как рюкзак, в который вы можете класть и вынимать вещи, меняя его содержимое. Кортеж — это как посылка, запечатанная клейкой лентой: однажды упаковав вещи, вы не сможете их изменить без разрушения упаковки. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
4
Photo unavailableShow in Telegram
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам. ▪️ Как научиться отвлекаться от работы и отдыхать? ▪️ Как совместить кучу рабочих задач и время с семьей? ▪️ Как справиться с прокрастинацией? ▪️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит? Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни! 👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного.
Mostrar todo...
В чем различия между методами apply и applymap ? Спросят с вероятностью 14% Методы apply и applymap используются для применения функций к данным, но они работают на разных уровнях и имеют разные области применения. Метод apply Можно использовать как с объектами DataFrame, так и с Series для применения функции вдоль оси данных: ✅DataFrame: Применяется к каждой строке или столбцу в DataFrame. Можно указать ось для применения функции (axis=0 для столбцов, axis=1 для строк). ✅Series: Применяется к каждому элементу в Series. apply часто используется для агрегирующих функций, преобразований или для выполнения более сложной логики, которая включает в себя множество значений в строке или столбце. Пример использования на DataFrame:
import pandas as pd

df = pd.DataFrame({
    'A': range(1, 5),
    'B': range(10, 50, 10)
})

# Применение функции к каждому столбцу (по умолчанию axis=0)
result = df.apply(lambda x: x + 10)
print(result)
Пример использования на Series:
s = pd.Series([1, 2, 3])
result = s.apply(lambda x: x**2)
print(result)
Метод applymap Используется только с объектами DataFrame и применяется к каждому элементу в DataFrame. Этот метод подходит для поэлементных преобразований, таких как применение математических функций или форматирование строк.
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# Применение функции ко всем элементам DataFrame
result = df.applymap(lambda x: x**2)
print(result)
Основные различияОбласть применения: apply можно использовать как для строк и столбцов, так и для отдельных элементов в Series, в то время как applymap применяется только к каждому элементу DataFrame. ✅Использование: apply более универсален и мощен для разных типов операций, включая агрегации и более сложные преобразования, тогда как applymap ориентирован на поэлементные операции в DataFrame. apply используется для выполнения операций на целых строках или столбцах либо на элементах серий, делая его мощным инструментом для разных задач. applymap хорош для выполнения действий с каждым отдельным элементом таблицы, делая его удобным для простых, повторяющихся преобразований. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
👍 6
Зачем нужен метод dir для объектов ? Спросят с вероятностью 14% Метод dir() используется для автоматического перечисления атрибутов, методов и других идентификаторов, которые доступны для любого объекта. Это полезный инструмент для исследования и интерактивного программирования, особенно когда вы работаете с новыми библиотеками или объектами, структура и свойства которых вам не полностью известны. Зачем нужен dir() 1️⃣Интроспекция: Используется для интроспекции объектов, то есть для определения, какие свойства и методы они имеют. Это особенно полезно в средах разработки, где вы можете не знать точной структуры объекта. 2️⃣Отладка: Помогает понять объекты, с которыми они работают, что может значительно облегчить отладку кода, позволяя быстро проверить, какие методы и атрибуты доступны для объекта. 3️⃣Рефлексия: Это свойство, позволяющее программе манипулировать своими частями. С помощью dir() можно получить список, содержащий имена всех атрибутов, которые доступны в объекте, что может быть использовано для рефлексивного доступа к атрибутам и методам. Как она работает Когда вы вызываете dir() для объекта, возвращает список строк. Каждая строка — это имя атрибута или метода, доступного для объекта. Если вызвать dir() без аргументов, то будет возвращен список имен в текущей локальной области видимости.
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def start(self):
        print("Машина заведена")

car = Car("Toyota", "Corolla")

# Выведем список всех атрибутов и методов объекта car
print(dir(car))
В этом списке будут имена вроде __init__, start, а также множество других, наследуемых от базового класса object. Метод dir() помогает увидеть, что умеет объект: какие у него есть "кнопки" и "рычажки" (методы и свойства). Это как заглянуть внутрь игрушки, чтобы понять, из чего она сделана и как она работает. Это делает разработку более удобной и понятной, помогая быстро найти, что можно сделать с объектом. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
👍 5
Зачем нужен self super ? Спросят с вероятностью 14% В Python self и super() используются в контексте классов и объектно-ориентированного программирования (ООП). Они играют важные роли в определении и управлении поведением классов и их экземпляров. self self — это ссылка на текущий экземпляр класса. Используется внутри методов класса для доступа к атрибутам и методам этого же объекта. Это не ключевое слово в Python, а просто соглашение между программистами о названии первого аргумента метода в классе. Использование self позволяет однозначно указать, что операция или вызов метода относится к текущему объекту. Пример использования self:
class Car:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def display_info(self):
        print(f"Автомобиль {self.make} модель {self.model}")

car = Car("Toyota", "Corolla")
car.display_info()  # Вывод: Автомобиль Toyota модель Corolla
super() super() используется для вызова методов родительского класса. Это полезно, когда происходит наследование, и вы хотите расширить или изменить поведение методов в наследуемом классе, при этом не переопределяя родительскую функциональность полностью. super() возвращает временный объект родительского класса, через который можно вызывать его методы. Пример использования super():
class Vehicle:
    def __init__(self, category):
        self.category = category

class Car(Vehicle):
    def __init__(self, make, model):
        super().__init__('Transport')  # Вызов __init__ родительского класса
        self.make = make
        self.model = model

car = Car("Toyota", "Corolla")
print(car.category)  # Вывод: Transport
Зачем они нужны:`self`: Используется для обращения к атрибутам и методам текущего экземпляра, что позволяет методам класса работать с данными конкретного объекта. ✅`super()`: Позволяет классам наследовать и расширять функциональность родительских классов без необходимости полного их переопределения. Это способствует повторному использованию кода и упрощает управление изменениями в иерархии классов. self — это как паспорт объекта, он показывает, что методы и данные принадлежат конкретному объекту. super() используется, когда мы хотим добавить к своим возможностям возможности наших программных "родителей", не заменяя их полностью. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...

👍 2
Чем отличаются str и repr ? Спросят с вероятностью 14% Функции str() и repr() используются для получения строкового представления объектов, но они служат разным целям и работают по-разному. Функция str() Предназначена для получения "приятного" строкового представления объекта, которое может быть представлено пользователю. Она старается сделать строку более читабельной и понятной. Если метод __str__() не определен в классе объекта, использует метод __repr__() как запасной вариант.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name}, возраст {self.age} лет"

person = Person("Иван", 30)
print(str(person))  # Вывод: Иван, возраст 30 лет
Функция repr() Предназначена для получения официального строкового представления объекта, которое может быть использовано для воссоздания того же объекта при помощи интерпретатора. repr() должна быть максимально точной и содержать информацию о всех атрибутах объекта. Результат repr() часто используется для отладки и разработки, так как он дает больше деталей о объекте.
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person('{self.name}', {self.age})"

person = Person("Иван", 30)
print(repr(person))  # Вывод: Person('Иван', 30)
Основные отличияЦель: str() используется для удобочитаемого представления объекта, а repr() — для точного и однозначного представления, часто с целью отладки или журналирования. ✅Вывод: str() старается быть читабельным; repr() — точным и полным, позволяя воссоздать объект при помощи его вывода в интерпретаторе Python. str() делает описание объекта понятным и красивым для людей. repr() делает описание точным и полным, чтобы программисты могли понять все детали объекта или даже воссоздать объект по этому описанию. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...

👍 2
Photo unavailableShow in Telegram
🔥Тесты для подготовки к собеседованию🔥 Выбери своё направление: 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. С/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift
Mostrar todo...
🔥 5😁 1
Что известно про юнет ? Спросят с вероятностью 14% U-Net — это архитектура свёрточной нейронной сети (CNN), которая была специально разработана для задач семантической сегментации, то есть для процесса классификации каждого пикселя изображения на определенные категории. Особенности архитектуры: 1⃣Форма "U": Как следует из названия, архитектура сети имеет форму буквы "U", которая состоит из двух основных частей: сверточной (сжимающей) и разверточной (расширяющей). 2⃣Сжимающий путь: В первой части (левая сторона U) происходит несколько операций свертки и пулинга, которые постепенно уменьшают размер пространственных данных, увеличивая при этом глубину (количество фильтров или карт признаков). Этот путь помогает сети абстрагироваться от исходных данных и выявлять ключевые признаки. 3⃣Расширяющий путь: Вторая часть (правая сторона U) состоит из операций "апсэмплинга" или транспонированной свертки, которые увеличивают размер карт признаков, стремясь восстановить пространственные размеры исходного изображения. При этом уровни с левой стороны соединяются с правой стороной через "пропускаемые соединения". 4⃣Пропускаемые соединения (skip connections): Одна из ключевых особенностей U-Net — это наличие пропускаемых соединений, которые передают карты признаков из сверточной части непосредственно к соответствующим слоям в разверточной части. Это позволяет сети использовать как глубокую, так и поверхностную информацию для точной сегментации. Применения: Изначально архитектура была разработана для сегментации биомедицинских изображений, но благодаря своей эффективности и точности архитектура нашла применение и в других областях, таких как: ✅Анализ аэрофотоснимков; ✅Автоматическая сегментация объектов на сценах уличного движения; ✅Применение в задачах, связанных с аграрным сектором и мониторингом окружающей среды. Преимущества:Высокая точность: Демонстрирует высокую точность в задачах сегментации, особенно когда доступно ограниченное количество данных. ✅Эффективность: Архитектура позволяет достаточно эффективно использовать обучающие данные, что критично в областях с ограниченными наборами данных, как, например, в медицинской визуализации. U-Net продолжает оставаться одной из наиболее популярных архитектур для сегментации изображений, и с тех пор было предложено множество его модификаций и улучшений, направленных на повышение точности и эффективности в различных задачах. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 207 вопроса на Data Scientist. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Mostrar todo...
🤔 2
Elige un Plan Diferente

Tu plan actual sólo permite el análisis de 5 canales. Para obtener más, elige otro plan.