📕 Руководство по добавлению шума в синтетические данные с использованием 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
👀 12 лучших репозиториев GitHub по компьютерному зрению
Список из наиболее важных Awesome репозиториев GitHub, посвященных компьютерному зрению, которые охватывают широкий спектр исследовательских и образовательных тем. Огромный кладезь знаний из области CV.
1. Awesome Computer Vision
2. Computer Vision Tutorials by Roboflow
3. Transformer in Vision
4. Awesome Referring Image Segmentation
5. Awesome Vision Language Pretraining Papers
6. Awesome Vision and Language
7. Awesome Temporal Action Detection
8. Awesome Masked Autoencoders
9. Awesome Visual Transformer
10. Transformer-Based Visual Segmentation
11. CVPR 2023 Paper with Code
12. Awesome Deepfakes Detection
👍Лайк , если полезно
@data_analysis_ml
Список из наиболее важных Awesome репозиториев GitHub, посвященных компьютерному зрению, которые охватывают широкий спектр исследовательских и образовательных тем. Огромный кладезь знаний из области CV.
1. Awesome Computer Vision
2. Computer Vision Tutorials by Roboflow
3. Transformer in Vision
4. Awesome Referring Image Segmentation
5. Awesome Vision Language Pretraining Papers
6. Awesome Vision and Language
7. Awesome Temporal Action Detection
8. Awesome Masked Autoencoders
9. Awesome Visual Transformer
10. Transformer-Based Visual Segmentation
11. CVPR 2023 Paper with Code
12. Awesome Deepfakes Detection
👍Лайк , если полезно
@data_analysis_ml
👍35❤1🔥1
Лучший способ получать свежие обновлении и следить за трендами в разработке.
Машинное обучение: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
C#: t.iss.one/csharp_ci
C/C++/ t.iss.one/cpluspluc
Data Science: t.iss.one/datascienceiot
Devops: t.iss.one/devOPSitsec
Go: t.iss.one/Golang_google
Базы данных: t.iss.one/sqlhub
Rust: t.iss.one/rust_code
Javascript: t.iss.one/javascriptv
React: t.iss.one/react_tg
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Linux: t.iss.one/+A8jY79rcyKJlYWY6
Big Data: t.iss.one/bigdatai
Хакинг: t.iss.one/linuxkalii
Тестирование: https://t.iss.one/+F9jPLmMFqq1kNTMy
Java: t.iss.one/javatg
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка машинное обучение: https://t.iss.one/addlist/_FjtIq8qMhU0NTYy
🇬🇧Английский: t.iss.one/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4🥰1
• Установка и настройка
pip install scrapy
• Основы веб-скрепинга
Чтобы проиллюстрировать фундаментальную концепцию Scrapy, давайте создадим простой веб-скрепер, извлекающий данные с сайта. В этом примере мы будем извлекать цитаты с сайта “https://quotes.toscrape.com”. Изображение 1.
QuotesSpider
”, который наследуется от класса Scrapy Spider
. Мы указываем URL-адреса, с которых парсер начинает собирать данные. Метод “parse” является точкой входа парсера, в нем мы извлекаем нужные данные (цитаты и авторов) с помощью CSS-селекторов. Для возврата извлеченных данных мы используем оператор “yield
”.• Продвинутые техники скрапирования
Рассмотрим две важные техники парсинга: работу с пагинацией на страницах и извлечение данных из страниц всех собранных страниц. Изображение 2.
ProductSpider
” для сбора информации о товарах с сайта электронной коммерции. В методе “parse
” мы извлекаем название продукта и его цену со страниц. Кроме того, мы переходим по ссылкам на страницы с подробной информацией с помощью метода “response.follow
” и определяем отдельный метод “parse product
” для разбора страниц с подробной информацией об отдельных товарах. В методе “parse_product
” мы извлекаем дополнительные сведения, например, описание товара.• Обработка входа в систему и аутентификации
Scrapy предлагает функции для обработки сценариев входа в систему и аутентификации, что позволяет собирать данные из закрытых областей сайта. Пример обработки входа в систему с помощью
FormRequest
: Изображение 3.LoginSpider
” для обработки процесса входа в систему. В методе “parse
” мы извлекаем данные формы входа в систему, включая CSRF-токен. Затем мы отправляем форму входа в систему с помощью FormRequest
, передавая данные формы и функцию обратного вызова “after_login
” для обработки ответа. В методе “after_login
” можно выполнять дальнейшие операции Парсинга на аутентифицированных страницах.@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥3
🔥 Awesome Data Science: List of Resources for Data Scientists
Продолжаем публиковать крутые Awesome репозитории. Тщательно подобранный список Awesome ресурсов по науке о данных.
▪Статьи
▪Книги
▪Шпаргалки
▪Датасеты
▪Инструменты
▪Игры
▪Курсы
и многое другое
🖥 Github
👍Лайк , если полезно
@data_analysis_ml
Продолжаем публиковать крутые Awesome репозитории. Тщательно подобранный список Awesome ресурсов по науке о данных.
▪Статьи
▪Книги
▪Шпаргалки
▪Датасеты
▪Инструменты
▪Игры
▪Курсы
и многое другое
👍Лайк , если полезно
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥2🥰1
🦙 MM-Vet: Evaluating Large Multimodal Models for Integrated Capabilities
MM-Vet - новый оценочный бенчмарк, который проверяет большие мультимодальные модели (БММ) на сложных мультимодальных задачах.
▪Github
▪Модель
▪Статья
▪Датасет
@data_analysis_ml
MM-Vet - новый оценочный бенчмарк, который проверяет большие мультимодальные модели (БММ) на сложных мультимодальных задачах.
▪Github
▪Модель
▪Статья
▪Датасет
@data_analysis_ml
👍6🔥2❤1
Руководство по созданию бота YouTube с помощью LangChain и Pinecone Vectorstore 🤖📹
Просмотр часового видеоролика на YouTube по любой научной теме, безусловно, непростая задача. ИИ может помочь с этим.
К концу этого поста вы сможете создать свой собственный чат-бот для YouTube с искусственным интеллектом.
Я проведу вас через весь процесс шаг за шагом. Вы сможете:
•Создать модели OpenAI
•Загрузить исходные документы
•Разделить текст на фрагменты
• Создать и обработать векторные эмбеддинги
•Задать любой вопрос боту и получить ответ
Инициирование модели OpenAI
Запустим модель LLM и добавим в код ключ API. Мы будем использовать модель gpt-3.5-turbo , но вы можете выбрать любую другую.
Загрузка исходго видео.
Скопируйте и вставьте ссылку на видео с YouTube. Загрузите текст видео с помощью функции
Разделение текста на фрагменты
Размделим весь PDF-файл с текстом из видео на фрагменты с помощью функциии
Создание и хранение векторных эмбеддингов
Настроим функцию эмбедингов
Настроим запросы
С помощью этого чат-бота вы можете загрузить любое видео,, задать любые вопросы по нему и получить искомое за считанные секунды с помощью ии-бота.
📌Бесплатный курс от Activeloop на LangChain & Vector Databases in Production.
📌pinecone
📌Статья
@data_analysis_ml
Просмотр часового видеоролика на YouTube по любой научной теме, безусловно, непростая задача. ИИ может помочь с этим.
К концу этого поста вы сможете создать свой собственный чат-бот для YouTube с искусственным интеллектом.
Я проведу вас через весь процесс шаг за шагом. Вы сможете:
•Создать модели OpenAI
•Загрузить исходные документы
•Разделить текст на фрагменты
• Создать и обработать векторные эмбеддинги
•Задать любой вопрос боту и получить ответ
Инициирование модели OpenAI
Запустим модель LLM и добавим в код ключ API. Мы будем использовать модель gpt-3.5-turbo , но вы можете выбрать любую другую.
from langchain.llms import OpenAI
llm = OpenAI(model_name = 'gpt-3.5-turbo',
openai_api_key = 'ваш ключ',
temperature = 0.7)
Загрузка исходго видео.
Скопируйте и вставьте ссылку на видео с YouTube. Загрузите текст видео с помощью функции
loader.load()
и сохраните его в переменной, как показано ниже.from langchain.document_loaders import YoutubeLoader
loader = YoutubeLoader.from_youtube_url('<https://www.youtube.com/watch?v=ogEalPMUCSY&pp=ygUJTGFuZ2NoaWFu>')
doc = loader.load()
Разделение текста на фрагменты
Размделим весь PDF-файл с текстом из видео на фрагменты с помощью функциии
RecursiveCharacterTextSplitter.
Установим размер фрагмента 1000 и значение перекрытия фрагментов 10. Это позволит разбить документ на фрагменты по 1000 слов.from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=10)
text_chunks = text_splitter.split_documents(doc)
Создание и хранение векторных эмбеддингов
Настроим функцию эмбедингов
OpenAIEmbeddings
и хранилище векторов Pinecone
. Подключим pinecone. Загрузите все текстовые фрагменты в векторное хранилище с помощью функции Pinecone.from_texts.
from langchain.vectorstores import Pinecone
from langchain.embeddings import OpenAIEmbeddings
import pinecone
import tqdm
import os
embeddings = OpenAIEmbeddings(openai_api_key= 'ваш апи ключ')
pinecone.init(
api_key= 'PINECONE_API_KEY'
environment = 'PINECONE_API_ENVIRON'
)
index_name = 'chatchain'
docsearch = Pinecone.from_texts(texts = [t.page_content for t in text_chunks],embedding=embeddings, index_name=index_name)
Настроим запросы
similarity_searh
и k=4 выдаст 4 наиболее релевантных фрагмента, относящихся к нашему запросу. Передайте эти документы в load_qa_chain. Он просуммирует фрагменты в соответствии с нашим запросом и выдаст наилучший возможный ответ.from langchain.chains.question_answering import load_qa_chain
query = 'what is vector embeddings'
docs = docsearch.similarity_search(query, k=4)
chain = load_qa_chain(llm, chain_type = 'stuff')
chain.run(input_documents=docs, question=query)
С помощью этого чат-бота вы можете загрузить любое видео,, задать любые вопросы по нему и получить искомое за считанные секунды с помощью ии-бота.
📌Бесплатный курс от Activeloop на LangChain & Vector Databases in Production.
📌pinecone
📌Статья
@data_analysis_ml
👍13🔥6❤3🤔1
Дата-инженер контролирует и анализирует большие наборы данных. SQL — мощный инструмент выполнения запросов и манипулирования данными, и для создания эффективных решений здесь имеется немало продвинутых функциональных средств. Рассмотрим ряд важных для дата-инженеров тем SQL, иллюстрируя их примерами применения набора данных.
Пример набора данных
Имеется три таблицы:
• product_table с данными различных продуктов — название, цена, категория;
• category_table с данными о категориях продуктов;
• order_table с данными о заказах: заказанный продукт, его количество, дата заказа.
Вот схема каждой таблицы:
product_table
+----+----------------------+-------+-------------+
| id | Название | Цена | category_id |
+----+----------------------+-------+-------------+
| 1 | iPhone 13 | 1000 | 2 |
| 2 | Galaxy S21 | 800 | 2 |
| 3 | Pixel 6 | 700 | 2 |
| 4 | MacBook Air | 1000 | 4 |
| 5 | Surface Pro 8 | 1200 | 4 |
| 6 | iPad Pro | 800 | 3 |
| 7 | iPad Mini | 400 | 9 |
| 8 | Smart TV | 800 | 1 |
| 9 | Home Theater System | 600 | 1 |
| 10 | Galaxy S21 Ultra | 1400 | 2 |
| 11 | iPhone 13 Pro Max | 1300 | 2 |
| 12 | Pixel 6 Pro | 1000 | 2 |
+----+----------------------+-------+-------------+
category_table
+----+-------------+
| id | Название |
+----+-------------+
| 1 | Электроника |
| 2 | Телефоны |
| 3 | Планшеты |
| 4 | Ноутбуки |
| 5 | Бытовая техника |
| 6 | Одежда |
| 7 | Спорттовары |
| 8 | Игрушки |
| 9 | Аксессуары |
+----+-------------+
order_table
+----+------------+-------------+------------+
| id | product_id | Количество | Дата |
+----+------------+-------------+------------+
| 1 | 1 | 2 | 2022-03-28 |
| 2 | 2 | 1 | 2022-03-28 |
| 3 | 3 | 3 | 2022-03-29 |
| 4 | 4 | 1 | 2022-03-30 |
| 5 | 5 | 2 | 2022-03-31 |
| 6 | 6 | 3 | 2022-03-31 |
| 7 | 7 | 2 | 2022-03-31 |
| 8 | 8 | 1 | 2022-03-31 |
| 9 | 9 | 1 | 2022-03-31 |
+--------------------------------------------+
Фильтрация данных
Предложение WHERE — это важный SQL-функционал для фильтрования данных по конкретным условиям. WHERE, которым определяется условие включения данных в результаты, добавляется в конце оператора SELECT.
Пример. Чтобы получить все продукты дороже 1000 $, применяем WHERE для их фильтрации по цене, в результаты включаются только продукты дороже 1000 $:
SELECT *
FROM product_table
WHERE price > 1000;
Возвращаемый результат:
+----+---------------------+-------+-------------+
| id | Название | Цена | category_id |
+----+---------------------+-------+-------------+
| 5 | Surface Pro 8 | 1200 | 4 |
| 10 | Galaxy S21 Ultra | 1400 | 2 |
| 11 | iPhone 13 Pro Max | 1300 | 2 |
+----+---------------------+-------+-------------+
Объединения
Чтобы иметь полную картину о данных нескольких таблиц, эти таблицы объединяют. Для этого в SQL имеются внутренние, левые, правые и полные внешние объединения.
Пример. Чтобы получить список всех заказов и название заказанного продукта, с помощью объединения в SQL объединяем таблицы: в одной данные о заказе, в другой — о продукте:
SELECT order_table.*, product_table.name
FROM order_table
INNER JOIN product_table ON order_table.product_id = product_table.id;
📌 Читать дальше
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥱11❤2🔥2
🗺 Визуализируем графы взаимосвязей на картах
GraphMining (далее –GM) – одно из направлений анализа данных, которое позволяет представить комплексные данные в виде графов.
В Python наиболее популярными библиотеками для GM являются NetworkX, pyviz и graph-tool. С их помощью можно формировать и кастомизировать различные виды графов, а, так же, вычислять множество метрик для анализа.
Однако, есть проблема: стандартные библиотеки GM не работают с картами, а библиотеки для работы с картами не формируют графы. На самом деле существует очевидное и простое решение, которое я опишу далее.
В начале – импортируем необходимые библиотеки:
В 75% строках датасета количество операций от отправителя к получателю 5 или меньше. Отфильтруем данные, оставив наиболее сильные связи:
Далее, необходимо получить набор точек (nodes) с идентификаторами клиентов и их координатами и посчитать общую сумму операций у клиента – отправлений и поступлений:
Нормализуем объем операций, данный столбец будет использоваться в качестве параметра размера точки:
Обогащаем информацией о суммах отправлений и поступлений каждого идентификатора:
Получил всю необходимую информацию для нанесения точек на карту:
Далее эти точки необходимо соединить – формирую список ребер:
📌 Читать дальше
@data_analysis_ml
GraphMining (далее –GM) – одно из направлений анализа данных, которое позволяет представить комплексные данные в виде графов.
В Python наиболее популярными библиотеками для GM являются NetworkX, pyviz и graph-tool. С их помощью можно формировать и кастомизировать различные виды графов, а, так же, вычислять множество метрик для анализа.
Однако, есть проблема: стандартные библиотеки GM не работают с картами, а библиотеки для работы с картами не формируют графы. На самом деле существует очевидное и простое решение, которое я опишу далее.
В начале – импортируем необходимые библиотеки:
import folium
import pandas as pd
import numpy as np
Допустим, что у меня имеется датасет с аггрегированной информацией о переводах от одного клиента другому:data = pd.read_csv('data.csv', sep = ';')
В 75% строках датасета количество операций от отправителя к получателю 5 или меньше. Отфильтруем данные, оставив наиболее сильные связи:
data_clean = data[data['opers_cnt']>5]
Далее, необходимо получить набор точек (nodes) с идентификаторами клиентов и их координатами и посчитать общую сумму операций у клиента – отправлений и поступлений:
data_senders = data_clean.rename(
columns = {'id_send':'id','lat_send':'lat','lon_send':'lon'})[['id','lat','lon','opers_sum']]
data_receivers = data_clean.rename(
columns = {'id_recei':'id','lat_rec':'lat','lon_rec':'lon'})[['id','lat','lon','opers_sum']]
nodes = (pd.concat([data_senders, data_receivers])
.groupby(['id','lat','lon'])['opers_sum']
.sum()
.reset_index())
Нормализуем объем операций, данный столбец будет использоваться в качестве параметра размера точки:
nodes['opers_sum_scaled'] = (nodes['opers_sum']-nodes['opers_sum'].min()) / (nodes['opers_sum'].max()-nodes['opers_sum'].min())*20
Обогащаем информацией о суммах отправлений и поступлений каждого идентификатора:
id_send_opers = (data_clean.groupby(['id_send'])['opers_sum'].sum()
.reset_index()
.rename(columns = {'id_send':'id','opers_sum':'send_sum'}))
id_rec_opers = (data_clean.groupby(['id_recei'])['opers_sum'].sum()
.reset_index()
.rename(columns = {'id_recei':'id','opers_sum':'rec_sum'}))
nodes = nodes.merge(id_send_opers, on ='id', how = 'left')
nodes = nodes.merge(id_rec_opers, on ='id', how = 'left')
nodes = nodes.fillna(0)
Получил всю необходимую информацию для нанесения точек на карту:
Далее эти точки необходимо соединить – формирую список ребер:
edges = (pd.DataFrame(np.unique(np.array(['-'.join(sorted(edge)) for edge in zip(for_edges['id_send'],for_edges['id_recei'])])))[0]
.str.split('-', expand = True).rename(columns=({0:'id_x', 1:'id_y'})))
coords_list = nodes[['id','lat','lon']]
edges = edges.merge(coords_list.rename(columns={'id':'id_x'}), on ='id_x', how = 'left')
edges = edges.merge(coords_list.rename(columns={'id':'id_y'}), on ='id_y', how = 'left')
📌 Читать дальше
@data_analysis_ml
👍10❤5🔥5
🟡 Дайджест полезных материалов из мира Data science за неделю
Почитать:
— ML-искусство переживать проблемы: как избегать разочарований и находить аналоги товаров в периоды out-of-stock
— Генеративный ИИ с базой данных SQL: Персональный чатбот разработчика SQL
— Как мы научили ML-модель выбирать товары для акций в СберМаркете и увеличили ROI скидок в 8 раз
— Руководство по созданию бота YouTube с помощью LangChain и Pinecone
— Распределённое обучение с PyTorch на кластере для тех, кто спешит
— У вас неправильные перцептроны
— Как аугментация помогает нейронным сетям решать уравнения в частных производных
— Дропаем ранжирующие метрики в рекомендательной системе, часть 1: визуальный анализ и popularity bias
— «Диалектик», независимое социалистическое медиа, рассказывает о своих NLP проектах, публикует датасеты и делится кодом
— Скрытая угроза: критерии классификации атак на нейронные сети
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— ИИ самоучка: модель реконструкции голограмм с самоконтролируемым обучением
— Основные ресурсы нейронных сетей для начинающих и энтузиастов
— Анализ настроений в отзывах Trip Advisor с помощью модели трансформеров Hugging Face
— SaaS platform with integrated 3D body measurement technology
— Visualizing shapefiles in R with sf and ggplot2!
— Reading data from csv file
— Roadmap to Become a Database Engineer
— Integration of Machine Learning through AWS Batch
— ScoreCast: A Tool for Predicting Football Game Outcomes in Minor Leagues
— Global Generalization Injection: Using Generated Sentences in Pre-Training Transformers
— Grammar of Graphics: how it helps us to create clear visualizations and tell stories with data
— Data Science Zero to Hero - 2.1: The Machine Learning Cycle
— How Fast Does Your Website Need to Be?
Посмотреть:
🌐Как работать с декораторами в Python. Часть 1
🌐 Методы сокращения и улучшения кода на Python
🌐 Продвинутые методы улучшения кода на Python
🌐 Создаем продвинутый интерфейс на Python
🌐 Harvard CS50’s Artificial Intelligence with Python – Full University Course
🌐Реальное Собеседование Data Science | ВСЯ ТЕОРИЯ В ОДНОМ ВИДЕО
Хорошего дня!
❤️ Лайк, если полезно
@data_analysis_ml
Почитать:
— ML-искусство переживать проблемы: как избегать разочарований и находить аналоги товаров в периоды out-of-stock
— Генеративный ИИ с базой данных SQL: Персональный чатбот разработчика SQL
— Как мы научили ML-модель выбирать товары для акций в СберМаркете и увеличили ROI скидок в 8 раз
— Руководство по созданию бота YouTube с помощью LangChain и Pinecone
— Распределённое обучение с PyTorch на кластере для тех, кто спешит
— У вас неправильные перцептроны
— Как аугментация помогает нейронным сетям решать уравнения в частных производных
— Дропаем ранжирующие метрики в рекомендательной системе, часть 1: визуальный анализ и popularity bias
— «Диалектик», независимое социалистическое медиа, рассказывает о своих NLP проектах, публикует датасеты и делится кодом
— Скрытая угроза: критерии классификации атак на нейронные сети
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— ИИ самоучка: модель реконструкции голограмм с самоконтролируемым обучением
— Основные ресурсы нейронных сетей для начинающих и энтузиастов
— Анализ настроений в отзывах Trip Advisor с помощью модели трансформеров Hugging Face
— SaaS platform with integrated 3D body measurement technology
— Visualizing shapefiles in R with sf and ggplot2!
— Reading data from csv file
— Roadmap to Become a Database Engineer
— Integration of Machine Learning through AWS Batch
— ScoreCast: A Tool for Predicting Football Game Outcomes in Minor Leagues
— Global Generalization Injection: Using Generated Sentences in Pre-Training Transformers
— Grammar of Graphics: how it helps us to create clear visualizations and tell stories with data
— Data Science Zero to Hero - 2.1: The Machine Learning Cycle
— How Fast Does Your Website Need to Be?
Посмотреть:
🌐Как работать с декораторами в Python. Часть 1
🌐 Методы сокращения и улучшения кода на Python
🌐 Продвинутые методы улучшения кода на Python
🌐 Создаем продвинутый интерфейс на Python
🌐 Harvard CS50’s Artificial Intelligence with Python – Full University Course
🌐Реальное Собеседование Data Science | ВСЯ ТЕОРИЯ В ОДНОМ ВИДЕО
Хорошего дня!
❤️ Лайк, если полезно
@data_analysis_ml
❤30👍6🔥6
🤗Гайд по развертыванию моделей Hugging Faceс помощью BentoML: DeepFloyd IF.
В этой статье показано, как интегрировать DeepFloyd IF с BentoML.
▪DeepFloyd IF - это современная модель преобразования текста в изображение с открытым исходным кодом.
▪BentoML - это платформа с открытым исходным кодом для настройки и развертывания моделей машинного обучения.
📌 Читать
@data_analysis_ml
В этой статье показано, как интегрировать DeepFloyd IF с BentoML.
▪DeepFloyd IF - это современная модель преобразования текста в изображение с открытым исходным кодом.
▪BentoML - это платформа с открытым исходным кодом для настройки и развертывания моделей машинного обучения.
📌 Читать
@data_analysis_ml
👍6❤3🔥3