Анализ данных (Data analysis)
46.3K subscribers
2.33K photos
273 videos
1 file
2.06K links
Data science, наука о данных.

@haarrp - админ

@itchannels_telegram - 🔥 главное в ит

@ai_machinelearning_big_data - ML

@machinelearning_interview - вопросы с собесдований по Ml

РКН: clck.ru/3FmyAp
Download Telegram
🚀 ETL: Извлечение, преобразование, загрузка с Python!

🔎 Что такое ETL и почему он важен?

Представьте себе владельца перспективного стартапа, вооруженного невероятным алгоритмом искусственного интеллекта, который предсказывает риск развития диабета на основе роста и массы тела.
Однако ваши данные разбросаны по файлам CSV и JSON, а измерения производятся в разных единицах. Введите ETL!
ETL – аббревиатура от Extract, Transform, Load.
Извлечение, преобразование и загрузка данных 🧲 – это сбор огромного количества данных из различных источников, преобразование их в единый формат и загрузка в центральную базу данных или целевой файл. 🗄️

📝 Реализуем ETL с помощью Python

• Начнем с определения функции extract, которая предполагает использование функции glob из модуля glob.
• Эта удобная функция позволяет находить файлы с определенными расширениями (например, .json и .csv) и извлекать из них данные, преобразуя их в фреймы данных для дальнейшей обработки. 📁
Импортируем некоторые важные библиотеки, необходимые для выполнения операций!

В изображениях 1, 2, 3, 4.

🔄 Преобразование данных для обеспечения их целостности

@data_analysis_ml
🔥16👍51
🚗 Тест-драйв PyTorch 2.0 и заглядываем под капот «двушки»

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🔥51🥰1
📝 Предварительная обработка текста в NLP с помощью Python.

Продолжаем тему NLP.

Предварительная обработка текста является одним из основных и важнейших этапов обработки естественного языка (NLP). Ее основная цель - очистить и преобразовать необработанные текстовые данные в презентабельную форму, пригодную для анализа и прогностического моделирования.

На картинках приведены основные этмпы и распространенные методы предварительной обработки текста.

@data_analysis_ml
👍165🔥1
🤗 HuggingFace Model Downloader

Полезный инструмент, написанный на Go для загрузки HuggingFace моделей.

Утилита дает возможности многопоточной загрузки файлов LFS и гарантирует целостность загруженных моделей, проверяя их контрольную сумму SHA256.

Скачивание происходит в разы быстрее, чем при использовании Git LFS.

Скрипт загрузит нужную версию на основе os/arch и сохранит бинарник под именем "hfdownloader" в той же папке:

bash <(curl -sSL https://g.bodaay.io/hfd) -h

Github

@data_analysis_ml
🔥5👍31
This media is not supported in your browser
VIEW IN TELEGRAM
Файнтюниг Llama 2 на пользовательском наборе данных за 4 шага с помощью Lit-GPT.

📌Github
📌Подробная инструкция

@data_analysis_ml
🔥53👍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🔥65
Оптимизации работы Jupyter notebook при помощи параллельных вычислений (Библиотека Joblib)

В данном посте я расскажу о возможностях применения параллельных вычислений в интерактивной среде Jupyter notebook языка Python.

Для чего нам необходим параллелизм?

Параллелизм играет важную роль в задачах Data Science, так как может значительно ускорить вычисления и обработку больших объемов данных.

Вот некоторые основные причины, почему мультипроцессинг важен для этих задач:

🟢Ускорение вычислений: многие задачи в DS, такие как обучение моделей машинного обучения, кластеризация, обработка изображений и анализ больших данных, являются вычислительно интенсивными. Использование параллельных вычислений позволяет распределить работу между несколькими ядрами процессора или даже между несколькими компьютерами, что приводит к существенному ускорению выполнения задач.
🟢 Обработка больших объемов данных: параллельные вычисления позволяют эффективно распараллелить обработку данных, разделив ее на более мелкие части и выполняя их одновременно.
🟢 Оптимизация гиперпараметров: за счет параллельного выполнения экспериментов с различными значениями гиперпараметров можно ускорить процесс поиска оптимальных параметров модели.
🟢 Обработка потоковых данных: может быть необходимо обрабатывать потоковые данные в реальном времени. Мультипроцессинг позволяет эффективно обрабатывать и анализировать потоки данных, особенно в случае высоких нагрузок и необходимости обработки данных в режиме реального времени.

В языке Python уже есть реализация параллелизма на основе базового модуля — multiprocessing. Тогда почему в Jupyter notebook он не будет работать?

🟢 Читать

@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥42
📕 Руководство по добавлению шума в синтетические данные с использованием Python и Numpy

Что такое шум?

Шум — это в основном бессмысленная информация, добавляемая к данным, которая приводит к их повреждению или искажению.

Наличие шума в данных является результатом их неправильного сбора и хранения.

Например, набор табличных данных может собирать шум из-за человеческих ошибок, таких как небрежное отношение к точности данных, усечение данных, неправильная маркировка данных, программные ошибки и мошенническое вмешательство в данные. Нечеловеческие причины шума обычно включают проблемы с датчиком камеры, проблемы с микрофоном и неправильную фильтрацию, вызывающую шум в изображениях и звуке.

Неправильное хранение фотопленок может привести к появлению шумов на пленках. Тепловые колебания в материале могут вызвать шум в электрических сигналах, проходящих в этом материале. Шум в радиосигналах может быть вызван электромагнитными помехами в космосе.

Шум также может быть добавлен намеренно по причинам, которые вы узнаете в следующем разделе. ➡️

Читать

@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥2
🚀Petals

Petals — это фреймворк, который позволяет дата сайентистам совместно запускать большие языковые модели.

Вы загружаете небольшую часть модели, а затем объединяетесь с людьми, обслуживающими другие части, для проведения вычислений или файнтюнига.

Инструмент позволяет генерировать текст с помощью LLaMA-65B или BLOOM-176B, и настраивать их для своих собственных задач.

Работает под GNU/Linux, macOS и Windows с WSL2.

Возможность подключить свой графический процессор, для увеличение мощности Petals.

Github
Colab
Статья

@data_analysis_ml
👍52🔥2
📚Tricking Data Science

Настоящие кладезь знаний для дата сайентистов.

Будучи программистом, вы часто натыкаетесь на изящные трюки с кодом на StackOverflow или в блогах крутых специалистов и думаете про себя: "Эй, я должен это сохранить".

Вы сохраняете страницу в закладки, а через день забываете про это навсегда.

Но в голове у вас остается размытое значение, что есть какой-то действительно классный способ решения задачи, но вы не можете его вспомнить и написать код. С этим сталкиваются многие программисты, и все они по-разному справляются с этим (или не справляются) с этим. Так вот, эта книга - отличный способ справиться с этой проблемой.

Tricking Data Science - это коллекция фишек с кодом, советов, гайдов, проектов, библиотек, которые автор собрал за два года о науке о данных на Medium. Проект в виде книги опубликован в Jupyter Book.

📔 Книга

@data_analysis_ml
👍17🔥3🤨3🍌21
6 способов оптимизировать рабочий процесс в Pandas

#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🐳32🔥1🤔1
🚀 Отличный ,бесплатный мини-курс, который научит работе с LLM.

Курс содержит описание языковых моделей, описание задачи NLP с точки зрения теории информации и алгоритмов семплирования (т.е. генерации текста) с использованием языковых моделей.

В курсе представлены ноутбуки с кодом от базового до продвинутого, материалы по использованию Huggingface для генерации текста. Кроме того, будет предоставлено множество полезных ссылок на научные статьи и курсы.

📌 Курс

@data_analysis_ml
👍113🔥3👎1🤨1
🔮Как временные ряды помогают бороться с влиянием между группами в A/B-тестировании

Зачастую для того, чтобы правильно провести A/B-тест, может быть недостаточно случайно и стратифицированно разбить пользователей на группы. Могут помешать “сетевые эффекты“, которые сделают группы зависимыми. И это касается не только социальных сетей.

🪄Как понять, когда могут возникнуть такие проблемы? И как измерить, насколько сильно искажается эффект? Есть немало методов разного уровня сложности и надежности.

Но одним из самых простых и в то же время строгих методов является Interrupted Time Series Design.

Читайте статью о методе и делитесь своим мнением в комментах.
👍81🔥1