❓100 Вопросов по Машинному обучению (Machine Learning) - Вопрос_19
? Как работает Batch Normalization в PyTorch ? (Часть_2)
Масштабирование и сдвиг: После центрирования и масштабирования активаций, они масштабируются путем умножения на масштабирующий (scaling) коэффициент и сдвигаются путем добавления смещающего (shifting) коэффициента. Эти коэффициенты являются обучаемыми параметрами и оптимизируются вместе с другими параметрами модели.
Вывод активаций: Нормализованные и сдвинутые активации передаются на вход следующего слоя нейронной сети.
? Телеграм-канал: t.me/DenoiseLAB (Если вы хотите быть в курсе всех последних новостей и знаний в области анализа данных);
TIOBE Software опубликовала январский рейтинг популярности языков программирования, в котором по сравнению с январём 2023 года выделяется перемещение языка JavaScript с седьмого на шестое место, языка PHP с 10 на 7 место, Scratch с 20 на 10 место (рост популярности на 0.83%), Go — c 12 на 11, Fortran — с 27 на 12 (+0.64%), Object Pascal — c 17 на 13, MatLab — с 15 на 14, Kotlin — с 25 на 17 и Cobol — с 31 на 20.
Языком года назван C#, который сохранил 5 место, но стал лидером по росту популярности (+1.43%).
За год снизилась позиция в рейтинге языков: Visual Basic — с 6 на 8 место, SQL — с 8 на 9, Ассемблер — с 9 на 15, Swift — c 11 на 16, Ruby — с 16 на 18, Rust — c 18 на 19 (при этом популярность Rust выросла на 0.18%).
Рейтинг продолжает возглавлять язык Python, но за год его популярность снизилась на 2.39%. Популярность языка C снизилась на 4.81%, C++ — на 2.95%, а Java — 4.34%.
Индекс популярности TIOBE строит свои выводы на основе анализа статистики поисковых запросов в таких системах, как Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu.
В январском рейтинге PYPL, в котором используется Google Trends, тройка лидеров за год не изменилась: первое место занимает язык Python, далее следуют Java и JavaScript. Языки С/C++ поднялись на 4 место, вытеснив язык С# (год назад произошла обратная ротация). По сравнению с январём прошлого года выросла популярность R (+1), Rust (+1), Ada (+2), Dart (+2), Lua (+2), Perl (+1), Haskell (+1).
❓100 Вопросов по Машинному обучению (Machine Learning) - Вопрос_17
? Можете ли вы объяснить, как работает Prophet для прогнозирования временных рядов ? (Часть_2)
Прогнозирование: После оценки компонентов Prophet создает фрейм данных для прогноза, который включает будущие даты. Затем он использует оцененные параметры для генерации прогнозируемых значений временного ряда и доверительных интервалов.
Визуализация результатов: Prophet предоставляет инструменты для визуализации результатов прогнозирования. Он может построить график исходного временного ряда, прогнозируемых значений и доверительных интервалов, чтобы помочь пользователю оценить качество прогноза.
? Телеграм-канал: t.me/DenoiseLAB (Если вы хотите быть в курсе всех последних новостей и знаний в области анализа данных);
❓100 Вопросов по Машинному обучению (Machine Learning) - Вопрос_17
? Можете ли вы объяснить, как работает Prophet для прогнозирования временных рядов ? (Часть_1)
Декомпозиция временного ряда: Prophet автоматически декомпозирует временной ряд на несколько компонентов:
Тренд: Prophet моделирует гибкий нелинейный тренд, который может быть линейным или логистическим, в зависимости от данных.
Сезонность: Prophet обнаруживает и моделирует периодические сезонные компоненты, такие как ежедневные, еженедельные или ежегодные сезонности.
Праздники: Prophet позволяет включить информацию о праздниках и других событиях, которые могут влиять на временной ряд.
Оценка компонентов: Prophet использует метод максимального правдоподобия для оценки параметров тренда, сезонности и праздников в данных. Он оптимизирует функцию потерь, которая учитывает как среднеквадратичную ошибку (MSE) для тренда, так и MSE для сезонности.
? Телеграм-канал: t.me/DenoiseLAB (Если вы хотите быть в курсе всех последних новостей и знаний в области анализа данных);
На днях вышла статья, где мной проводился анализ задач через API Codewars. Для тех, кто не успел ознакомиться, можно пройти по ссылке: https://habr.com/ru/articles/783326/
В данной статье был проведён опрос, результаты которого определили, что сообщество желает посмотреть решение задачи в GitHub.
Состоялся релиз статического анализатора Mypy 1.8 (pypi.org). исходные код проекта выложен на GitHub под открытой лицензией MIT.
Новый выпуск проекта включает в себя новые функции, улучшения производительности и исправления ранее найденных разработчиками ошибок.
Mypy — статический анализатор типов для Python, который позволяет находить ошибки несоответствия типов в коде. Впервые инструмент Mypy показал Юкка Лехтосало на PyCon в октябре 2012 года. В декабре 2012 года вышел первый релиз. В 2016 году инструмент поддержал создатель Python Гвидо ван Россум. В феврале 2023 года вышла версия 1.0, а в марте 2023 — версия 1.1.1.
❓100 Вопросов по Машинному обучению (Machine Learning) - Вопрос_14 (Часть_1)
Какие подходы могут помочь модели сохранить стабильность популяции при изменении данных?
Кросс-валидация (Cross-Validation): Кросс-валидация позволяет оценить производительность модели на разных подмножествах данных. Например, метод k-fold cross-validation разбивает данные на k подмножеств, называемых фолдами. Модель обучается на k-1 фолдах и оценивается на оставшемся фолде. Этот процесс повторяется k раз, каждый раз используя разные фолды. Таким образом, модель оценивается на различных подмножествах данных, что помогает выявить ее стабильность популяции.
Стратифицированная выборка (Stratified Sampling): При формировании обучающей и тестовой выборок можно использовать стратифицированный подход. Это означает, что при разделении данных на выборки будут сохранены пропорции классов или распределений признаков. Такой подход помогает уменьшить возможное искажение данных при изменении популяции.
t.me/DenoiseLAB (Еесли вы хотите быть в курсе всех последних новостей и знаний в области анализа данных);
Разберём задачу на Python, которая может встретиться на собеседованиях. Согласно условию, нужно найти среднее значение списка чисел.
Решение задачи может выглядеть так:
def find_average(numbers):
# Проверяем, что список не пустой, чтобы избежать деления на ноль
if len(numbers) == 0:
return 0 # Если список пустой, возвращаем 0
# Вычисляем сумму всех чисел в списке
total = sum(numbers)
# Вычисляем среднее значение
average = total / len(numbers)
return average
Пример использования:
numbers = [10, 20, 30, 40, 50]
avg = find_average(numbers)
print(avg) # Вывод: 30.0
Первым шагом в коде выше проходит проверка, что список numbers не пустой — это позволяет избежать деления на ноль и ошибок. Если список не пустой, вычисляем сумму всех чисел в списке с помощью функции sum(). Затем делим эту сумму на количество чисел в списке, чтобы найти среднее значение, и возвращаем его.
Annotated из модуля typing в Python предназначен для добавления метаданных к аннотации. Метаданные, добавленные с помощью Annotated, могут быть использованы инструментами статического анализа или во время выполнения. Во время выполнения метаданные хранятся в атрибуте __metadata__.
from typing import Annotated
# Синтаксис: Annotated[тип_данных, метаданные]
def say_hello(name: Annotated[str, "this is just metadata"]) -> str:
return f"Hello {name}"
Логика обработка метаданных зависит от фреймворка или библиотек, в которых используется Annotated. Если логики для обработки метаданных нет, то метаданные игнорируются.
from typing import Annotated
from pydantic import Field, TypeAdapter
# Функция Field используется для настройки и добавления метаданных
# к полям моделей. Field(gt=0) - значит greater than т.е. больше чем 0
PositiveInt = Annotated[int, Field(gt=0)]
# TypeAdapter предоставляет часть функциональности методов экземпляра
# BaseModel в т.ч. валидацию с использованием метаданных из Annotated
ta = TypeAdapter(PositiveInt)
print(ta.validate_python(1))
#> 1
print(ta.validate_python(-1))
#> pydantic_core._pydantic_core.ValidationError:
В первом случае вернёт 1, во втором ошибку валидации т.к. значение должно быть > 0.
❓100 Вопросов по Машинному обучению (Machine Learning) - Вопрос_9
?Вопрос_9: В чем разница между Rapids, Vaex, Pandas, Polars, Modin, Dask они же все для анализа данных ?
✔️Ответ:
Pandas предоставляет гибкие структуры данных, такие как DataFrame, и мощные инструменты для манипуляции, фильтрации, агрегации и анализа данных. Pandas обычно используется для работы с небольшими и средними объемами данных, которые могут поместиться в оперативную память одного компьютера;
Dask позволяет обрабатывать данные, превышающие объем доступной оперативной памяти, с использованием распределенных вычислений. Dask предоставляет абстракции, такие как DataFrame и Array, которые подобны структурам данных из Pandas и NumPyx;
Polars обладает высокой производительностью благодаря использованию Rust в своей реализации, а также предлагает возможности параллельной обработки данных. Она может работать с большими объемами данных и поддерживает некоторые распределенные вычисления;
Vaex использует ленивые вычисления и эффективные алгоритмы для выполнения операций над данными. Она обладает высокой производительностью и может работать с многопоточностью, многопроцессорностью и распределенными вычислениями;
Modin предоставляет интерфейс, совместимый с Pandas, но с оптимизированной производительностью. Она использует различные движки обратной совместимости, такие как Dask и Ray, для распределенных и параллельных вычислений.
LofiTray - любая онлайн-трансляция в фоновом режиме в Вашей панели задач!
Для нетерпеливых: инструкция ниже, а так же на гитхабе проекта
Предыстория:
Привет Хабр! На днях я лично столкнулся с проблемой: для комфортной работы люблю включать известный стрим на Lofi girlи работать под фоновую музыку, но каждый раз открывать его в браузере, занимать им лишнюю вкладку и занимать немало ресурсов ради фоновой вкладки.
Так родилась идея для проекта и несколько месяцев не доходили руки. На прошлой неделе меня угораздило приболеть и освободившиеся 3 вечера я посветил LofiTray (tray - так обычной называют значки на панели задач)
Что это такое вообще?
- Это утилита для виндовс. Она позволяет включать/выключать, а также выбирать трансляции с YouTube. Функционал минимальный, покрывающий выполнение конкретной задачи - играть музон на фоне и не более.
А это не вирус?
- Нет, не вирус. Для всеобщего спокойствия, проверил через VirusTotal. Можете проверить установщик/распакованную программу (лежит в папке dist в репозитории), да хоть сам проект с гитхаба.
Как скачать?
- По кнопке в инструкции на ГитХабе. Продублирую эти 2 пункта здесь:
Если у Вас не установлен VLC media player, установите его перед загрузкой LofiTray. С помощью API этого плеера программа воспроизводит трансляцию в фоновом режиме
Скачайте и запустите установщик LofiTray ?скачать?
В ближайших планах починить отображение ошибок в windows 11. А в дальнейших - добавить полноценное gui-меню, так как уже есть запросы от друзей
Вебинар «Открытое собеседование на джуниор Python-разработчика»
Покажем, как проходит собеседование для новичков на позицию Python-разработчика. Вы узнаете, какие вопросы задают и как оценивают ответы кандидата. Опытные эксперты дадут рекомендации по подготовке и ответят на ваши вопросы о профессии.
Доступен выпуск проекта RustPython 0.3, развивающего интерпретатор языка программирования Python, написанный на языке Rust. RustPython нацелен на обеспечение совместимости с CPython 3.11 и более новыми выпусками. Проект основал Shing Lyu, один из разработчиков движка Servo и участник перевода CSS-движка Firefox на компоненты, написанные на языке Rust. Для оценки текущего состояния разработки можно использовать web-интерфейс с интерпретатором RustPython, скомпилированным в WebAssembly. Код распространяется под лицензией MIT.
RustPython состоит из парсера кода на Python в абстрактное синтаксическое дерево (AST), компилятора AST в байткод и виртуальной машины для выполнения байткода. Для ускорения выполнения предоставляется начальная реализация JIT-компилятора, преобразующего python-функции в машинный код. Поддерживается компиляция RustPython в форму универсального WASI-модуля на WebAssembly, который может запускаться в различных операционных системах.
Проектом также предоставляются средства для интеграции кода на языке Python в проекты на языке Rust, без применения биндингов на основе CPython - RustPython позволяет встраивать Python-конструкции непосредственно в код на языке Rust и использовать Python в качестве языка скриптования в приложениях. Из проектов, уже использующих RustPython, отмечаются СУБД GreptimeDB, игровой движок pyckitup, игра Robot Rumble и linter Ruff.
Я провел несколько лет используя Geeknote, хороший проектик. Он то уже готов, но там сейчас тесты не проходят, базовые функции перестали работать после миграции на третий Питон.
Проект может быть интересен и полезен изучающим Python - тут вы сможете практиковаться и положить себе в CV что являетесь мантейнером этого проекта.
Я бы и сам, но нет на это времени :(
Только что добавил в Guru - это пользовательский репозиторий пакетов для Gentoo, как apt для Ubuntu или aur для Arch.
Можно ли придумать что-то более классическое, чем решение задачи на удаление дубликатов из отсортированного массива? Не уверены, поэтому в новом выпуске «Алгоритмической качалки» взяли на разбор задачу №26 с Leetcode (Remove Duplicates from Sorted Array).
Предлагайте свои решения в комментариях, а также делитесь задачами, которые можно было бы разобрать в рамках «АК».
А мы продолжаем тихой сапой захватывать ветку с постами в хабе Python и публикуем свежий выпуск «Алгоритмической качалки». В этот раз Альбина разбирала задачу под номером 58, которая звучит, как Length of Last Word. Кажется, что найти длину последнего слова в предложении довольно легко, но на самом деле пришлось приложить немного усилий, чтобы решить этот алгоритм.
Кстати, вы можете предлагать свои варианты решения в комментариях, а также предлагать задачи, которые Альбина возьмет на разбор в следующих выпусках.