🚀 ETL: Извлечение, преобразование, загрузка с Python!
🔎 Что такое ETL и почему он важен?
• Представьте себе владельца перспективного стартапа, вооруженного невероятным алгоритмом искусственного интеллекта, который предсказывает риск развития диабета на основе роста и массы тела.
• Однако ваши данные разбросаны по файлам CSV и JSON, а измерения производятся в разных единицах. Введите ETL!
ETL – аббревиатура от Extract, Transform, Load.
• Извлечение, преобразование и загрузка данных 🧲 – это сбор огромного количества данных из различных источников, преобразование их в единый формат и загрузка в центральную базу данных или целевой файл. 🗄️
📝 Реализуем ETL с помощью Python
• Начнем с определения функции extract, которая предполагает использование функции glob из модуля glob.
• Эта удобная функция позволяет находить файлы с определенными расширениями (например, .json и .csv) и извлекать из них данные, преобразуя их в фреймы данных для дальнейшей обработки. 📁
• Импортируем некоторые важные библиотеки, необходимые для выполнения операций!
В изображениях 1, 2, 3, 4.
🔄 Преобразование данных для обеспечения их целостности
@data_analysis_ml
🔎 Что такое ETL и почему он важен?
• Представьте себе владельца перспективного стартапа, вооруженного невероятным алгоритмом искусственного интеллекта, который предсказывает риск развития диабета на основе роста и массы тела.
• Однако ваши данные разбросаны по файлам CSV и JSON, а измерения производятся в разных единицах. Введите ETL!
ETL – аббревиатура от Extract, Transform, Load.
• Извлечение, преобразование и загрузка данных 🧲 – это сбор огромного количества данных из различных источников, преобразование их в единый формат и загрузка в центральную базу данных или целевой файл. 🗄️
📝 Реализуем ETL с помощью Python
• Начнем с определения функции extract, которая предполагает использование функции glob из модуля glob.
• Эта удобная функция позволяет находить файлы с определенными расширениями (например, .json и .csv) и извлекать из них данные, преобразуя их в фреймы данных для дальнейшей обработки. 📁
• Импортируем некоторые важные библиотеки, необходимые для выполнения операций!
В изображениях 1, 2, 3, 4.
🔄 Преобразование данных для обеспечения их целостности
@data_analysis_ml
🔥16👍5❤1
JIT-компиляция (Just-In-Time compilation) - это процесс, при котором код на высокоуровневом языке преобразуется в код на низкоуровневом языке, который может быть быстрее и эффективнее исполнен процессором или графическим ускорителем. torch.compile() использует TorchDynamo и заданный бэкенд для JIT-компиляции кода PyTorch.
Для того чтобы понять, как работает torch.compile() рассмотрим основные его компоненты, которые отвечают за различные аспекты JIT-компиляции кода PyTorch:
• TorchDynamo – это динамический компилятор, который анализирует код PyTorch и определяет, какие части кода могут быть скомпилированы в оптимизированные ядра. Отслеживает изменения в коде и перекомпилирует его при необходимости.
• AOT AutoGrad – это система автоматического дифференцирования, которая позволяет вычислять градиенты для скомпилированных ядер. Генерирует код для обратного распространения ошибки во время компиляции, а не во время исполнения, что ускоряет процесс обучения нейронных сетей.
• PrimTorch – это набор примитивных операций, которые используются для построения скомпилированных ядер. Включает в себя базовые математические и логические операции, а также операции над тензорами, такие как сложение, умножение, свертка и т.д.
• TorchInductor – это бэкенд для JIT-компиляции кода PyTorch в оптимизированные ядра для разных устройств. Поддерживает разные бэкенды и адаптирует код PyTorch к специфике каждого устройства.
Далее подробнее рассмотрим, как работают компоненты TorchDynamo и TorchInductor и как они взаимодействуют друг с другом, чтобы обеспечить JIT-компиляцию кода PyTorch.
📌Читать
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5❤1🥰1
📝 Предварительная обработка текста в NLP с помощью Python.
Продолжаем тему NLP.
Предварительная обработка текста является одним из основных и важнейших этапов обработки естественного языка (NLP). Ее основная цель - очистить и преобразовать необработанные текстовые данные в презентабельную форму, пригодную для анализа и прогностического моделирования.
На картинках приведены основные этмпы и распространенные методы предварительной обработки текста.
@data_analysis_ml
Продолжаем тему NLP.
Предварительная обработка текста является одним из основных и важнейших этапов обработки естественного языка (NLP). Ее основная цель - очистить и преобразовать необработанные текстовые данные в презентабельную форму, пригодную для анализа и прогностического моделирования.
На картинках приведены основные этмпы и распространенные методы предварительной обработки текста.
@data_analysis_ml
👍16❤5🔥1
🤗 HuggingFace Model Downloader
Полезный инструмент, написанный на Go для загрузки HuggingFace моделей.
Утилита дает возможности многопоточной загрузки файлов LFS и гарантирует целостность загруженных моделей, проверяя их контрольную сумму SHA256.
Скачивание происходит в разы быстрее, чем при использовании Git LFS.
Скрипт загрузит нужную версию на основе os/arch и сохранит бинарник под именем "hfdownloader" в той же папке:
▪ Github
@data_analysis_ml
Полезный инструмент, написанный на Go для загрузки HuggingFace моделей.
Утилита дает возможности многопоточной загрузки файлов LFS и гарантирует целостность загруженных моделей, проверяя их контрольную сумму SHA256.
Скачивание происходит в разы быстрее, чем при использовании Git LFS.
Скрипт загрузит нужную версию на основе os/arch и сохранит бинарник под именем "hfdownloader" в той же папке:
bash <(curl -sSL https://g.bodaay.io/hfd) -h
▪ Github
@data_analysis_ml
🔥5👍3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Файнтюниг Llama 2 на пользовательском наборе данных за 4 шага с помощью Lit-GPT.
📌Github
📌Подробная инструкция
@data_analysis_ml
📌Github
📌Подробная инструкция
@data_analysis_ml
🔥5❤3👍2
• Amazon CodeWhisperer -сервиc, который помогает создавать приложения с помощью ии-помошника по написанию кода с поддержкой ML.
• Stenography - Автоматическое документирование кода.
• tabnine -Крутой сервис для автозаполнение кода.
Помогает автоматически дописывать функции на
Генерирует блоки кода на основе комментариев на естественном языке.
• GPT Engineer - генерация кода с помощью ИИ.
• Code Mentor - оптимизирует и рефакторит код.
• Polycoder - Генерирует код на 12 языках программирования.
• Cogram - переводит текстовый запрос на язык баз данных и интегрируется со средой разработки Jupyter.
• Copilot by GitHub - облегчает написание кода через автодополнение.
• CodeT5 - преобразовывает запрос в код и дописывает начатые функции.
• Ghostwriter - ИИ- программист с искусственным интеллектом для генерации кода.
• Agent GPT - устанавливает в вашем браузере ИИ-агента, который помогает в выполнении поставленной задачи.
• Mintlify - ИИ, который пишет документацию и комментарии.
• ExplainDev - инструмент, который обучает в процессе и помогает разобраться в коде.
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥6❤5
Оптимизации работы Jupyter notebook при помощи параллельных вычислений (Библиотека Joblib)
В данном посте я расскажу о возможностях применения параллельных вычислений в интерактивной среде Jupyter notebook языка Python.
Для чего нам необходим параллелизм?
Параллелизм играет важную роль в задачах Data Science, так как может значительно ускорить вычисления и обработку больших объемов данных.
Вот некоторые основные причины, почему мультипроцессинг важен для этих задач:
🟢 Ускорение вычислений: многие задачи в DS, такие как обучение моделей машинного обучения, кластеризация, обработка изображений и анализ больших данных, являются вычислительно интенсивными. Использование параллельных вычислений позволяет распределить работу между несколькими ядрами процессора или даже между несколькими компьютерами, что приводит к существенному ускорению выполнения задач.
🟢 Обработка больших объемов данных: параллельные вычисления позволяют эффективно распараллелить обработку данных, разделив ее на более мелкие части и выполняя их одновременно.
🟢 Оптимизация гиперпараметров: за счет параллельного выполнения экспериментов с различными значениями гиперпараметров можно ускорить процесс поиска оптимальных параметров модели.
🟢 Обработка потоковых данных: может быть необходимо обрабатывать потоковые данные в реальном времени. Мультипроцессинг позволяет эффективно обрабатывать и анализировать потоки данных, особенно в случае высоких нагрузок и необходимости обработки данных в режиме реального времени.
В языке Python уже есть реализация параллелизма на основе базового модуля — multiprocessing. Тогда почему в Jupyter notebook он не будет работать?
🟢 Читать
@data_analysis_ml
В данном посте я расскажу о возможностях применения параллельных вычислений в интерактивной среде Jupyter notebook языка Python.
Для чего нам необходим параллелизм?
Параллелизм играет важную роль в задачах Data Science, так как может значительно ускорить вычисления и обработку больших объемов данных.
Вот некоторые основные причины, почему мультипроцессинг важен для этих задач:
В языке Python уже есть реализация параллелизма на основе базового модуля — multiprocessing. Тогда почему в Jupyter notebook он не будет работать?
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4❤2
📕 Руководство по добавлению шума в синтетические данные с использованием Python и Numpy
❓Что такое шум?
Шум — это в основном бессмысленная информация, добавляемая к данным, которая приводит к их повреждению или искажению.
Наличие шума в данных является результатом их неправильного сбора и хранения.
Например, набор табличных данных может собирать шум из-за человеческих ошибок, таких как небрежное отношение к точности данных, усечение данных, неправильная маркировка данных, программные ошибки и мошенническое вмешательство в данные. Нечеловеческие причины шума обычно включают проблемы с датчиком камеры, проблемы с микрофоном и неправильную фильтрацию, вызывающую шум в изображениях и звуке.
Неправильное хранение фотопленок может привести к появлению шумов на пленках. Тепловые колебания в материале могут вызвать шум в электрических сигналах, проходящих в этом материале. Шум в радиосигналах может быть вызван электромагнитными помехами в космосе.
Шум также может быть добавлен намеренно по причинам, которые вы узнаете в следующем разделе.➡️
▪Читать
@data_analysis_ml
❓Что такое шум?
Шум — это в основном бессмысленная информация, добавляемая к данным, которая приводит к их повреждению или искажению.
Наличие шума в данных является результатом их неправильного сбора и хранения.
Например, набор табличных данных может собирать шум из-за человеческих ошибок, таких как небрежное отношение к точности данных, усечение данных, неправильная маркировка данных, программные ошибки и мошенническое вмешательство в данные. Нечеловеческие причины шума обычно включают проблемы с датчиком камеры, проблемы с микрофоном и неправильную фильтрацию, вызывающую шум в изображениях и звуке.
Неправильное хранение фотопленок может привести к появлению шумов на пленках. Тепловые колебания в материале могут вызвать шум в электрических сигналах, проходящих в этом материале. Шум в радиосигналах может быть вызван электромагнитными помехами в космосе.
Шум также может быть добавлен намеренно по причинам, которые вы узнаете в следующем разделе.
▪Читать
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥2
🚀Petals
Petals — это фреймворк, который позволяет дата сайентистам совместно запускать большие языковые модели.
Вы загружаете небольшую часть модели, а затем объединяетесь с людьми, обслуживающими другие части, для проведения вычислений или файнтюнига.
Инструмент позволяет генерировать текст с помощью LLaMA-65B или BLOOM-176B, и настраивать их для своих собственных задач.
Работает под GNU/Linux, macOS и Windows с WSL2.
Возможность подключить свой графический процессор, для увеличение мощности Petals.
▪Github
▪Colab
▪Статья
@data_analysis_ml
Petals — это фреймворк, который позволяет дата сайентистам совместно запускать большие языковые модели.
Вы загружаете небольшую часть модели, а затем объединяетесь с людьми, обслуживающими другие части, для проведения вычислений или файнтюнига.
Инструмент позволяет генерировать текст с помощью LLaMA-65B или BLOOM-176B, и настраивать их для своих собственных задач.
Работает под GNU/Linux, macOS и Windows с WSL2.
Возможность подключить свой графический процессор, для увеличение мощности Petals.
▪Github
▪Colab
▪Статья
@data_analysis_ml
👍5❤2🔥2
📚Tricking Data Science
Настоящие кладезь знаний для дата сайентистов.
Будучи программистом, вы часто натыкаетесь на изящные трюки с кодом на StackOverflow или в блогах крутых специалистов и думаете про себя: "Эй, я должен это сохранить".
Вы сохраняете страницу в закладки, а через день забываете про это навсегда.
Но в голове у вас остается размытое значение, что есть какой-то действительно классный способ решения задачи, но вы не можете его вспомнить и написать код. С этим сталкиваются многие программисты, и все они по-разному справляются с этим (или не справляются) с этим. Так вот, эта книга - отличный способ справиться с этой проблемой.
Tricking Data Science - это коллекция фишек с кодом, советов, гайдов, проектов, библиотек, которые автор собрал за два года о науке о данных на Medium. Проект в виде книги опубликован в Jupyter Book.
📔 Книга
@data_analysis_ml
Настоящие кладезь знаний для дата сайентистов.
Будучи программистом, вы часто натыкаетесь на изящные трюки с кодом на StackOverflow или в блогах крутых специалистов и думаете про себя: "Эй, я должен это сохранить".
Вы сохраняете страницу в закладки, а через день забываете про это навсегда.
Но в голове у вас остается размытое значение, что есть какой-то действительно классный способ решения задачи, но вы не можете его вспомнить и написать код. С этим сталкиваются многие программисты, и все они по-разному справляются с этим (или не справляются) с этим. Так вот, эта книга - отличный способ справиться с этой проблемой.
Tricking Data Science - это коллекция фишек с кодом, советов, гайдов, проектов, библиотек, которые автор собрал за два года о науке о данных на Medium. Проект в виде книги опубликован в Jupyter Book.
📔 Книга
@data_analysis_ml
👍17🔥3🤨3🍌2❤1
#1. Отображение графиков в столбце DataFrame
Jupyter — это IDE на веб-основе. Поэтому при выводе DataFrame он отображается с использованием HTML и CSS. Это позволяет форматировать вывод так же, как и любую другую веб-страницу.
Одним из интересных способов такого форматирования является вставка встроенных графиков, которые появляются в столбце DataFrame. Их также называют “спарклайнами” (“sparklines”). В итоге мы получаем нечто подобное: *изображение 1.
Как это создать? Смотрите код ниже.
• Сначала выполним импорт:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from base64 import b64encode
from io import BytesIO
from IPython.display import HTML
%matplotlib inline
• Теперь создадим выдуманный набор данных:
n = 100
data = [
('Bitcoin', 40000*np.random.rand(n).round(2)),
('Ethereum', 2000*np.random.rand(n).round(2)),
('BNB', 500*np.random.rand(n).round(2)),
('Litecoin', 150*np.random.rand(n).round(2)),
]
df = pd.DataFrame(data, columns=['Name', 'Price History'])
df.head()
Name Price History
0 Bitcoin [24800.0, 12400.0, 14800.0, 24800.0, 20800.0, ...
1 Ethereum [1900.0, 380.0, 420.0, 1760.0, 800.0, 620.0, 1...
2 BNB [120.0, 170.0, 255.0, 255.0, 395.0, 150.0, 180...
3 Litecoin [126.0, 109.5, 94.5, 49.5, 81.0, 129.0, 66.0, ...
• В соответствии с четырьмя строками у нас есть список случайно сгенерированных историй цен. Теперь наша цель — добавить линейный график в каждую строку. Таким образом, мы можем создать функцию и использовать метод apply().
Как упоминалось выше, Jupyter отображает DataFrame с помощью HTML. Если мы придумаем способ, с помощью которого сможем предоставить HTML в качестве значения ячейки, ссылающейся на изображение, Jupyter сможет это отрисовать и отобразить соответствующий линейный график.
Вот код, который мы для этого используем:
def create_line(data, **kwags):
# Преобразование данных в список
data = list(data)
# Создание объекта фигуры и оси с заданным размером и аргументами ключевых слов
fig, ax = plt.subplots(1, 1, figsize=(3, 0.25), **kwags)
# Построение графика из данных
ax.plot(data)
# Удаление границ в графике
for k,v in ax.spines.items():
v.set_visible(False)
# Удаление делений у осей x и y
ax.set_xticks([])
ax.set_yticks([])
# Создание красной точки в последней точке данных
plt.plot(len(data) - 1, data[len(data) - 1], 'r.')
# Заполнение области под графиком с помощью alpha=0.1
ax.fill_between(range(len(data)), data, len(data)*[min(data)], alpha=0.1)
# Закрытие графика, чтобы он не отображался
plt.close(fig)
# Сохранение графика как изображения в формате png и получение его бинарных данных
img = BytesIO()
fig.savefig(img, format='png')
encoded = b64encode(img.getvalue()).decode('utf-8')
# Возвращение закодированных данных изображения в виде тега изображения HTML
return '<img src="data:image/png;base64,{}"/>'.format(encoded)
Хотя часть построения довольно очевидна, сосредоточимся на том, для чего предназначены последние четыре строки кода (не включая комментарии).
Цель состоит в том, чтобы преобразовать график в изображение, которое может быть отображено на веб-странице.
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🐳3❤2🔥1🤔1
🚀 Отличный ,бесплатный мини-курс, который научит работе с LLM.
Курс содержит описание языковых моделей, описание задачи NLP с точки зрения теории информации и алгоритмов семплирования (т.е. генерации текста) с использованием языковых моделей.
В курсе представлены ноутбуки с кодом от базового до продвинутого, материалы по использованию Huggingface для генерации текста. Кроме того, будет предоставлено множество полезных ссылок на научные статьи и курсы.
📌 Курс
@data_analysis_ml
Курс содержит описание языковых моделей, описание задачи NLP с точки зрения теории информации и алгоритмов семплирования (т.е. генерации текста) с использованием языковых моделей.
В курсе представлены ноутбуки с кодом от базового до продвинутого, материалы по использованию Huggingface для генерации текста. Кроме того, будет предоставлено множество полезных ссылок на научные статьи и курсы.
📌 Курс
@data_analysis_ml
👍11❤3🔥3👎1🤨1
🔮Как временные ряды помогают бороться с влиянием между группами в A/B-тестировании
Зачастую для того, чтобы правильно провести A/B-тест, может быть недостаточно случайно и стратифицированно разбить пользователей на группы. Могут помешать “сетевые эффекты“, которые сделают группы зависимыми. И это касается не только социальных сетей.
🪄Как понять, когда могут возникнуть такие проблемы? И как измерить, насколько сильно искажается эффект? Есть немало методов разного уровня сложности и надежности.
Но одним из самых простых и в то же время строгих методов является Interrupted Time Series Design.
Читайте статью о методе и делитесь своим мнением в комментах.
Зачастую для того, чтобы правильно провести A/B-тест, может быть недостаточно случайно и стратифицированно разбить пользователей на группы. Могут помешать “сетевые эффекты“, которые сделают группы зависимыми. И это касается не только социальных сетей.
🪄Как понять, когда могут возникнуть такие проблемы? И как измерить, насколько сильно искажается эффект? Есть немало методов разного уровня сложности и надежности.
Но одним из самых простых и в то же время строгих методов является Interrupted Time Series Design.
Читайте статью о методе и делитесь своим мнением в комментах.
Medium
Controlling Influence Between Groups in A/B Testing — Interrupted Time Series Design
A useful and reliable approach to try if you suspect the treatment group might affect the control group
👍8❤1🔥1