📌esProc SPL - это скриптовый язык для обработки данных, с хорошо продуманными богатыми функциями и мощным синтаксисом, который может исполняться в Java-программе через интерфейс JDBC и вычисляться независимо.
• Github
• Документация
@data_analysis_ml
• Github
• Документация
@data_analysis_ml
👍12❤4🥰2
Media is too big
VIEW IN TELEGRAM
• Видео
• Код из видео
• Часть 1
• Часть 2
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤2🔥2
1. Создание чат-ботов:
https://dzone.com/articles/python-chatbot-project-build-your-first-python-pro
2. Обнаружение мошенничества с кредитными картами:
https://kaggle.com/renjithmadhavan/credit-card-fraud-detection-using-python
3. Обнаружение фальшивых новостей
https://data-flair.training/blogs/advanced-python-project-detecting-fake-news/
4. Определение сонливости водителя
https://data-flair.training/blogs/python-project-driver-drowsiness-detection-system/
5. Рекомендательные системы (рекомендация фильмов)
https://data-flair.training/blogs/data-science-r-movie-recommendation/
6. Анализ настроений
https://data-flair.training/blogs/data-science-r-sentiment-analysis-project/
7. Определение пола и прогнозирование возраста
https://pyimagesearch.com/2020/04/13/opencv-age-detection-with-deep-learning/
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍14🔥4
Yachay AI — открытое сообщество по машинному обучению
Проект предназначен для поддержки разработчиков в создании и обучении собственных моделей геотеггинга.
Представленная здесь архитектура моделей геотаггинга позволяет настраивать и обучать их. Кроме того проект содержит даатсеты, которые хорошо подходят для обучения в различных сценариях определения геолокации.
Из интересного: сообщество также разработало инструмент для определения геолокации
• Github
• Проект
• Датасеты
@data_analysis_ml
Проект предназначен для поддержки разработчиков в создании и обучении собственных моделей геотеггинга.
Представленная здесь архитектура моделей геотаггинга позволяет настраивать и обучать их. Кроме того проект содержит даатсеты, которые хорошо подходят для обучения в различных сценариях определения геолокации.
Из интересного: сообщество также разработало инструмент для определения геолокации
• Github
• Проект
• Датасеты
@data_analysis_ml
👍13❤5🔥4
Hugging Face — ИИ-сообщество с открытым исходным кодом для практиков машинного обучения — недавно интегрировало концепцию инструментов и агентов в свою популярную библиотеку Transformers.
Если вы уже использовали Hugging Face для решения задач обработки естественного языка (NLP), компьютерного зрения и работой над аудио/речью, вам будет интересно узнать о дополнительных возможностях Transformers.
Агент Transformers: реализация
В этом разделе я использовал документацию Hugging Face об агентах и реализовал их на собственных примерах.
Шаг 1. Требования
Начнем с импорта нескольких библиотек, которые будем использовать. Обратите внимание: я включил версии этих библиотек в результаты, чтобы вы могли создать идентичную среду.
import transformers, huggingface_hub, diffusers, torch
from platform import python_version
print(f'python: {python_version()}')
print(f'transformers: {transformers.__version__}')
print(f'huggingface_hub: {huggingface_hub.__version__}')
print(f'diffusers: {diffusers.__version__}')
print(f'torch: {torch.__version__}')
Результаты:
📌 Продолжение
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥2
Как принципы SOLID трансформируются в функциональном программировании?
▪️Принцип единственной ответственности: у каждой функции должно быть одно назначение, то есть возможно несколько задач, но одна достигаемая цель.
▪️Принцип открытости/закрытости: исходный код каждой функции открыт для расширения, но закрыт для модификации.
▪️Принцип подстановки Лисков: каждая функция заменяется на другую с той же сигнатурой без изменения поведения программы.
▪️Принцип разделения интерфейса: каждая функция не зависит от ненужных ей функций.
▪️Принцип инверсии зависимостей: все функции зависят от входных аргументов, а не жестко заданного в функции поведения.
Интерпретация принципов SOLID: ООП против функционального программирования (в изображении)
Нарушение и соблюдение принципов SOLID на примерах
1. Принцип единственной ответственности
Согласно этому принципу, функция должна меняться только по одной причине. То есть у нее может быть несколько задач, но лишь одна цель в большой единице работы. Именно здесь осуществляется разделение обязанностей, когда каждой частью программы выполняется только одна задача, и выполняется хорошо.
Например, если единственная причина изменений конвейера данных для обслуживания команды — ускорение обработки, занятый улучшением производительности код отделяется от частей программы с другими задачами.
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3🎉2
🔥 Дайджест полезных материалов из мира : Data Science за неделю
Почитать:
— Как мы решили вопрос нехватки кадров, обучив соискателей работе с Apache Spark
— Создание приложения для потоковой передачи видео с физическими элементами управления
— Пять подходов к созданию ad-hoc-датафреймов в PySpark
— Искусство ETL. Пишем собственный движок SQL на Spark [часть 1 из 5]
— 7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы
— Тестирование производительности на Python: Пошаговое руководство с Flask
— Boosting Resiliency with ML-Based Telemetry Analytics Architecture
— Dominando a função WITH: Criando Consultas Temporárias no SQL
— The Secret Sauce of Success: Soft Skills Every data Scientist needs
— What AI-driven analytics tools aid in data-driven decision-making for businesses?
— Unlocking Computational Efficiency in Event Analysis Through Centroids and Blocks: A Conceptual Exploration
— How can AI-driven cybersecurity tools protect businesses from daily threats and breaches?
— SQL Roadmap for Data Analysts[Step-by-Step]
— Dataviz accessibility review: what we can learn from the Norwegian 2023 election graphs
— Data Science Mentorship in Ahmedabad Learning from the Best
— 7-Stage Roadmap for Data Science
Посмотреть:
🌐 Leveraging Generative AI in Education - A M Aditya (⏱ 31:24)
🌐 Невероятная нейросеть переводит любое видео на другие языки с сохранением оригинального голоса. (⏱ 00:55)
🌐 Python анализ данных с Pandas. PandaSQL (⏱ 12:13)
🌐 Python анализ данных с Pandas. Join, merge, concat в Pandas (⏱ 19:25)
🌐 Python+SQL часть2 создание таблиц. (⏱ 05:15)
🌐 Управление жестами всегда было в ваших часах, просто его нужно было активировать. (⏱ 00:11)
🌐 Уроки Golang с нуля /#28 - Встраивание типов (⏱ 06:16)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись (⏱ 10:35)
🌐 Python анализ данных с Pandas. (⏱ 17:04)
🌐 ODSC Webinar | A Path to Insights Starts with Trusted Data (⏱ 23:23)
🌐 Not Just Deep Fakes: Apps of Visual Generative Models in Pharma Manufacturing - Guglielmo Iozzia (⏱ 01:18:40)
🌐 Lightning Interview “Beyond the Code: How AI Is Disrupting the Programmer's Role” (⏱ 58:40)
🌐 AI Reads Minds of 29 Patients! (⏱ 06:01)
🌐 OpenAI’s ChatGPT Nails 150+ Difficult Tasks! (⏱ 05:54)
Хорошего дня!
@data_analysis_ml
Почитать:
— Как мы решили вопрос нехватки кадров, обучив соискателей работе с Apache Spark
— Создание приложения для потоковой передачи видео с физическими элементами управления
— Пять подходов к созданию ad-hoc-датафреймов в PySpark
— Искусство ETL. Пишем собственный движок SQL на Spark [часть 1 из 5]
— 7 аргументов почему UUID лучше, чем автоинкрементные идентификаторы
— Тестирование производительности на Python: Пошаговое руководство с Flask
— Boosting Resiliency with ML-Based Telemetry Analytics Architecture
— Dominando a função WITH: Criando Consultas Temporárias no SQL
— The Secret Sauce of Success: Soft Skills Every data Scientist needs
— What AI-driven analytics tools aid in data-driven decision-making for businesses?
— Unlocking Computational Efficiency in Event Analysis Through Centroids and Blocks: A Conceptual Exploration
— How can AI-driven cybersecurity tools protect businesses from daily threats and breaches?
— SQL Roadmap for Data Analysts[Step-by-Step]
— Dataviz accessibility review: what we can learn from the Norwegian 2023 election graphs
— Data Science Mentorship in Ahmedabad Learning from the Best
— 7-Stage Roadmap for Data Science
Посмотреть:
🌐 Leveraging Generative AI in Education - A M Aditya (⏱ 31:24)
🌐 Невероятная нейросеть переводит любое видео на другие языки с сохранением оригинального голоса. (⏱ 00:55)
🌐 Python анализ данных с Pandas. PandaSQL (⏱ 12:13)
🌐 Python анализ данных с Pandas. Join, merge, concat в Pandas (⏱ 19:25)
🌐 Python+SQL часть2 создание таблиц. (⏱ 05:15)
🌐 Управление жестами всегда было в ваших часах, просто его нужно было активировать. (⏱ 00:11)
🌐 Уроки Golang с нуля /#28 - Встраивание типов (⏱ 06:16)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись (⏱ 10:35)
🌐 Python анализ данных с Pandas. (⏱ 17:04)
🌐 ODSC Webinar | A Path to Insights Starts with Trusted Data (⏱ 23:23)
🌐 Not Just Deep Fakes: Apps of Visual Generative Models in Pharma Manufacturing - Guglielmo Iozzia (⏱ 01:18:40)
🌐 Lightning Interview “Beyond the Code: How AI Is Disrupting the Programmer's Role” (⏱ 58:40)
🌐 AI Reads Minds of 29 Patients! (⏱ 06:01)
🌐 OpenAI’s ChatGPT Nails 150+ Difficult Tasks! (⏱ 05:54)
Хорошего дня!
@data_analysis_ml
👍15🔥3❤1
🚀 Гарвардский университет предлагает БЕСПЛАТНОЕ образование мирового класса в области Data Science!
Курсы охватывают:
- Python
- Визуализация данных
- Вероятность
- Статистика
- Машинное обучение
- Наука о данных: Capstone
▪Курс
@data_analysis_ml
Курсы охватывают:
- Python
- Визуализация данных
- Вероятность
- Статистика
- Машинное обучение
- Наука о данных: Capstone
▪Курс
@data_analysis_ml
👍31🔥9❤3
❯ Основы машинного обучения 2023, майнор ИАД
https://www.youtube.com/playlist?list=PLEwK9wdS5g0oCRxBzxsq9lkJkzMgzWiyg
❯ Tableau
https://www.youtube.com/playlist?list=PLgG9iJlSBmTe4n8doaYFkzLU-dEbb2XGn
❯ Парсинг на Python
https://www.youtube.com/playlist?list=PLysMDSbb9HcwWWhs1Cm9EF1sv0fo8kII5
❯ SQL
https://www.youtube.com/playlist?list=PLBheEHDcG7-k1Y_Uy04Dj2ylWhcfSfqoF
❯ Наука о данных
https://www.youtube.com/playlist?list=PLysMDSbb9HcwIpPPBR72Qe7CMCgx-D9Ob
❯ Python и базы данных
https://www.youtube.com/playlist?list=PLysMDSbb9HcxdvtQSkYoO7xaF3SvGUD8n
❯ Numpy полный курс
https://www.youtube.com/playlist?list=PLysMDSbb9Hcz3Gdi9oV-btohZ9zhths-r
❯ R
https://youtube.com/playlist?list=PL6gx4Cwl9DGCzVMGCPi1kwvABu7eWv08P
❯ PowerBI
https://youtube.com/playlist?list=PLv2BtOtLblH13vCbf99BptWWk-EWx7QQG
❯ Линейная алгебра и аналитическая геометрия
https://www.youtube.com/playlist?list=PLaX3n04-uUZoTu4DcD2Eqgq-h5wimh_uT
❯ Python
https://www.youtube.com/playlist?list=PLV0FNhq3XMOKljD7POtuWVAZn8wXcn4-L
❯ Excel
https://www.youtube.com/playlist?list=PLzilK6a-UuVl5FP-QY1ks_c--3CrYU3MX
❯ Data Analysis
https://youtube.com/playlist?list=PLrRPvpgDmw0ks5W7U5NmDCU2ydSnNZA_1
❯ Data Analyst
https://youtube.com/playlist?list=PLUaB-1hjhk8FE_XZ87vPPSfHqb6OcM0cF
❯ Linear Algebra
https://youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab
❯ Calculus
https://youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr
❯ Statistics
https://youtube.com/playlist?list=PLblh5JKOoLUK0FLuzwntyYI10UQFUhsY9
❯ Machine Learning
https://youtube.com/playlist?list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v
❯ Deep Learning
https://youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI
❯ Deep Learning
https://youtube.com/playlist?list=PLblh5JKOoLUIxGDQs4LFFD--41Vzf-ME1
❯ Excel Power Query
https://youtube.com/playlist?list=PLmHVyfmcRKyyKV86N7i0q9TfYNN8bBjX-
❯ Microsoft Excel
https://youtube.com/playlist?list=PLmHVyfmcRKyx1KSoobwukzf1Nf-Y97Rw0
👇Делитесь полезными DS плейлистами в комментариях
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41👍19❤4🥰4
Часть 1. Базовые настройки
Шаг 1. Настройка среды
Прежде чем начать, нужно убедиться, что у нас установлены все необходимые пакеты.
Чтобы установить эти пакеты, откройте терминал и запустите:
pip install langchain openai streamlit python-dotenv
Шаг 2. Получение API-ключа OpenAI
Далее вам необходимо получить API-ключ OpenAI. Это уникальный ключ, открывающий доступ к модели GPT-3 (GPT-3.5/ChatGPT, GPT-4). После регистрации учетной записи в OpenAI вы найдете API-ключ на дашборде.
Полученный ключ нужно надежно сохранить в файле .env. В каталоге проекта создайте файл .env и добавьте в него следующую строку:
OPENAI_API_KEY=ваш_ключ_openai
Замените ваш_ключ_openai на свой действительный ключ OpenAI. Этот файл будет использоваться для безопасного хранения API-ключа.
Шаг 3. Настройка файла app.py и импорт библиотек
Создадим главный файл Python, app.py. В нем и будем разрабатывать маркетингового ИИ-помощника.
Начнем с импорта необходимых библиотек и загрузки переменных среды:
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SimpleSequentialChain, SequentialChain
import os
from dotenv import load_dotenv
load_dotenv()
В этих строках кода импортируется класс OpenAI из модуля langchain.llms, который позволяет взаимодействовать с моделью GPT. Кроме того, импортируются классы PromptTemplate и LLMChain, которые будут использоваться для создания промптов и цепочек.
Функция load_dotenv() загружает переменные среды OPENAI_API_KEY из файла .env.
Часть 2. Компоновочные блоки LangChain
Шаг 4. Обзор основных компонентов
Прежде чем приступить к написанию кода, сделаем краткий обзор компонентов, которые будем использовать.
Эти три компонента будут использованы для разработки генератора публикаций в блоге.
Шаг 5. Создание первой LLMChain
Чтобы создать первую цепочку, нужно инициализировать LLM, разработать шаблон промптов, а затем объединить их в цепочку.
Настройте LLM и первый шаблон промптов:
# Пример LLMChain
# Модель
llm = OpenAI(temperature=0.9)
# Промпт
blog_prompt_template = PromptTemplate(
input_variables = ['product_description'],
template = 'Write a blog post on {product_description}'
)
# Цепочка
blog_chain = LLMChain(llm=llm, prompt=blog_prompt_template, verbose=True)
# Запуск
product_description = 'best eco-friendly coffee'
blog_chain.run(product_description)
СОВЕТ: ПАРАМЕТР TEMPERATURE УПРАВЛЯЕТ РАНДОМНОСТЬЮ ВЫХОДНЫХ ДАННЫХ МОДЕЛИ. ОН ПРИНИМАЕТ ЗНАЧЕНИЯ ОТ 0 ДО 1, ГДЕ МЫ УСТАНОВИЛИ ЗНАЧЕНИЕ 0,9, ПОСКОЛЬКУ ХОТИМ ПОЛУЧИТЬ МНОГО НОВЫХ ИДЕЙ, В ТО ВРЕМЯ КАК МЕНЬШЕЕ ЗНАЧЕНИЕ, НАПРИМЕР 0, ДЕЛАЕТ МОДЕЛЬ БОЛЕЕ ДЕТЕРМИНИРОВАННОЙ.
В приведенном выше коде настраивается LLM и создается шаблон промптов, который принимает описание продукта и генерирует в блоге публикацию о нем. Затем эти два шаблона объединяются, чтобы сформировать цепочку. Потом запускается LLMChain с product_description.
Часть 3. Освоение основ цепочек в LangChain
Шаг 6. Создание SimpleSequentialChain
📌Читать
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍7🔥4
Media is too big
VIEW IN TELEGRAM
📌 Видео
📌 Код и полезные ресурсы
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥4❤3
❯ Python
https://freecodecamp.org/learn/scientific-computing-with-python/
❯ SQL
https://openclassrooms.com/courses/2071486-retrieve-data-using-sql
❯ Специализация Python Scripting for DevOps
https://www.coursera.org/specializations/python-scripting-devops
❯ R
https://mygreatlearning.com/academy/learn-for-free/courses/r-for-data-science
❯ Excel
https://simplilearn.com/learn-business-analytics-excel-fundamentals-skillup
❯ PowerBI
https://openclassrooms.com/courses/7434291-create-dashboards-with-powerbi
❯ Tableau
https://openclassrooms.com/courses/5873606-create-dashboards-with-tableau
❯ Mathematics & Statistics
https://matlabacademy.mathworks.com
❯ Probability
https://mygreatlearning.com/academy/learn-for-free/courses/probability-for-data-science
❯ Data Analysis
https://cognitiveclass.ai/courses/data-analysis-python
❯ Data Visualization
https://cognitiveclass.ai/courses/data-visualization-python
❯ Data Cleaning
https://kaggle.com/learn/data-cleaning
❯ Machine Learning
https://simplilearn.com/learn-machine-learning-algorithms-free-course-skillup
❯ Deep Learning
https://kaggle.com/learn/intro-to-deep-learning
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥7❤5🤔1🎉1
🚀 𝐄𝐱𝐜𝐢𝐭𝐢𝐧𝐠 𝐀𝐧𝐧𝐨𝐮𝐧𝐜𝐞𝐦𝐞𝐧𝐭: 𝐈𝐧𝐭𝐫𝐨𝐝𝐮𝐜𝐢𝐧𝐠 𝐃𝐞𝐜𝐢𝐃𝐢𝐟𝐟𝐮𝐬𝐢𝐨𝐧 𝟏.𝟎 - 𝐑𝐞𝐯𝐨𝐥𝐮𝐭𝐢𝐨𝐧𝐢𝐳𝐢𝐧𝐠 𝐓𝐞𝐱𝐭-𝐭𝐨-𝐈𝐦𝐚𝐠𝐞 𝐆𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐨𝐧!✨
DeciDiffusion 1.0, новая модель диффузии текста в изображение.
Имея впечатляющие 820 млн. параметров, она достигает такого же исключительного качества, как и модель Stable Diffusion v1.5 с 860 млн. параметров, но за
🔹 Высочайшая эффективность вычислений: на 40% меньше итераций и в 3 раза быстрее, чем в Stable Diffusion v1.5, что привело к снижению затрат почти на 66%.
▪Colab
▪Model
▪Demo
@data_analysis_ml
DeciDiffusion 1.0, новая модель диффузии текста в изображение.
Имея впечатляющие 820 млн. параметров, она достигает такого же исключительного качества, как и модель Stable Diffusion v1.5 с 860 млн. параметров, но за
40%
меньшее количество итераций.🔹 Высочайшая эффективность вычислений: на 40% меньше итераций и в 3 раза быстрее, чем в Stable Diffusion v1.5, что привело к снижению затрат почти на 66%.
pip install diffusers --upgrade
pip install invisible_watermark transformers accelerate safetensors
▪Colab
▪Model
▪Demo
@data_analysis_ml
👍10❤1🔥1🥰1
1. Become a Data Engineer - Udacity
2. Data Engineering, Big Data, and Machine Learning on GCP Specialization - Coursera
3. Become a Data Engineer - Coursera
4. Data Engineer with Python - Datacamp
5. Big Data Specialization - Coursera
6. Data Engineering with Google Cloud Professional Certificate - Coursera
7. Data Warehousing for Business Intelligence Specialization - Coursera
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3🔥2👎1
🐼Как устроен Pandas: взгляд изнутри
Структура данных Pandas
Как правило, датафрейм поддерживается каким-нибудь массивом, например NumPy или Pandas ExtensionArray. Эти массивы хранят данные датафрейма.
Массивы
Фактические данные датафрейма могут храниться в наборе массивов NumPy или Pandas ExtensionArray. Этот слой обычно направляет к базовой реализации, например использует NumPy API при условии хранения данных в массивах NumPy. Pandas хранит в них данные и вызывает свои методы без расширения интерфейса.
Массивы NumPy обычно являются двумерными и дают ряд преимуществ в производительности, о которых речь пойдет далее. На данный момент Pandas ExtensionArray в основном представляют собой одномерные структуры данных, благодаря чему операции становятся предсказуемыми.
Однако не обошлось и без недостатков: в ряде случаев страдает производительность.
ExtensionArray допускает применение датафреймов, которые поддерживаются массивами PyArrow и другими типами данных Pandas.
Block
Датафрейм обычно состоит из столбцов, представленных по крайней мере одним массивом. Как правило, имеется коллекция массивов, так как один массив может хранить только один определенный тип данных. Эти массивы хранят данные, но не владеют информацией о том, какие столбцы они представляют. Каждый массив из датафрейма обернут соответствующим блоком Block.
✔ Block добавляет дополнительную информацию в массивы, например расположение представленных им столбцов.
✔Block служит слоем вокруг фактических массивов с возможностью расширения вспомогательными методами, необходимыми для операций Pandas.
✔ При выполнении фактической операции с датафреймом Block гарантирует, что метод направляется в базовый массив. Например, при вызове astype он убедится, что эта операция вызывается в массиве.
Данный слой не располагает информацией о других столбцах в датафрейме, являясь автономным объектом.
BlockManager
Как следует из названия, BlockManager управляет всеми Block, связанными с одним датафреймом. Он содержит сами Block и информацию об осях датафрейма, например имена столбцов и метки Index.
И самое главное в том, что он направляет большинство операций к фактическим Block:
BlockManager гарантирует, что replace выполняется для каждого Block.
Понятие консолидированного датафрейма
Мы исходим из того, что датафреймы поддерживаются типами данных NumPy, например их данные могут храниться в двумерных массивах.
При создании датафрейма Pandas гарантирует, что на каждый тип данных приходится только один Block:
У этого датафрейма есть 4 столбца, представленные двумя массивами: один из них хранит целочисленный тип данных, а другой — числа с плавающей точкой. Это и есть консолидированный датафрейм.
Добавим новый столбец к этому датафрейму:
У него такой же тип данных, как и у существующих столбцов "a" и "c". Рассмотрим 2 возможных варианта дальнейших действий:
1. Добавление нового столбца в существующий массив, содержащий целочисленные столбцы.
2. Создание нового массива только для хранения нового столбца.
◾️ Первый вариант предусматривает добавление нового столбца в существующий массив. Для этого требуется скопировать данные, поскольку NumPy не поддерживает эту операцию без копирования. В итоге добавление одного столбца оборачивается слишком большими затратами.
◾️ Второй вариант
📌 Читать
@data_analysis_ml
Структура данных Pandas
Как правило, датафрейм поддерживается каким-нибудь массивом, например NumPy или Pandas ExtensionArray. Эти массивы хранят данные датафрейма.
pandas
добавляет промежуточный слой Block и BlockManager. Он управляет этими массивами, обеспечивая максимальную эффективность операций. Это одна из причин, почему в Pandas методы, работающие с несколькими столбцами, могут быть очень быстрыми. Далее более подробно рассмотрим упомянутые слои.Массивы
Фактические данные датафрейма могут храниться в наборе массивов NumPy или Pandas ExtensionArray. Этот слой обычно направляет к базовой реализации, например использует NumPy API при условии хранения данных в массивах NumPy. Pandas хранит в них данные и вызывает свои методы без расширения интерфейса.
Массивы NumPy обычно являются двумерными и дают ряд преимуществ в производительности, о которых речь пойдет далее. На данный момент Pandas ExtensionArray в основном представляют собой одномерные структуры данных, благодаря чему операции становятся предсказуемыми.
Однако не обошлось и без недостатков: в ряде случаев страдает производительность.
ExtensionArray допускает применение датафреймов, которые поддерживаются массивами PyArrow и другими типами данных Pandas.
Block
Датафрейм обычно состоит из столбцов, представленных по крайней мере одним массивом. Как правило, имеется коллекция массивов, так как один массив может хранить только один определенный тип данных. Эти массивы хранят данные, но не владеют информацией о том, какие столбцы они представляют. Каждый массив из датафрейма обернут соответствующим блоком Block.
✔ Block добавляет дополнительную информацию в массивы, например расположение представленных им столбцов.
✔Block служит слоем вокруг фактических массивов с возможностью расширения вспомогательными методами, необходимыми для операций Pandas.
✔ При выполнении фактической операции с датафреймом Block гарантирует, что метод направляется в базовый массив. Например, при вызове astype он убедится, что эта операция вызывается в массиве.
Данный слой не располагает информацией о других столбцах в датафрейме, являясь автономным объектом.
BlockManager
Как следует из названия, BlockManager управляет всеми Block, связанными с одним датафреймом. Он содержит сами Block и информацию об осях датафрейма, например имена столбцов и метки Index.
И самое главное в том, что он направляет большинство операций к фактическим Block:
df.replace(...)
BlockManager гарантирует, что replace выполняется для каждого Block.
Понятие консолидированного датафрейма
Мы исходим из того, что датафреймы поддерживаются типами данных NumPy, например их данные могут храниться в двумерных массивах.
При создании датафрейма Pandas гарантирует, что на каждый тип данных приходится только один Block:
df = pd.DataFrame(
{
"a": [1, 2, 3],
"b": [1.5, 2.5, 3.5],
"c": [10, 11, 12],
"d": [10.5, 11.5, 12.5],
}
)
У этого датафрейма есть 4 столбца, представленные двумя массивами: один из них хранит целочисленный тип данных, а другой — числа с плавающей точкой. Это и есть консолидированный датафрейм.
Добавим новый столбец к этому датафрейму:
df["new"] = 100
У него такой же тип данных, как и у существующих столбцов "a" и "c". Рассмотрим 2 возможных варианта дальнейших действий:
1. Добавление нового столбца в существующий массив, содержащий целочисленные столбцы.
2. Создание нового массива только для хранения нового столбца.
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5❤2
💻 Как создать простой агент с Guidance и локальной моделью LLM
Guidance — это инструмент от Microsoft, представляющий собой “язык, организующий управление LLM”. Он позволяет управлять выводом LLM, что облегчает выполнение инструкций.
Что касается GPT 3.5–4, то он успешно работает с большинством инструкций.
Но небольшие локальные модели, такие как LLaMa и ее разновидности (Alpca, WizardML), не всегда выдают правильный ответ. А это большая проблема. Некоторые фреймворки, такие как ReAct, требуют определенного формата инструкций для ответа. Кроме того, работу усложняет тот факт, что LLM иногда предоставляет данные в формате JSON с синтаксической ошибкой.
Пример:
Как видно, мы легко составили текстовую подсказку, предварительно определили несколько пунктов и добились от LLM точного их выполнения. Скорректировали регулярное выражение для поля age с помощью {{gen ‘age’ pattern=’[0–9]+’ stop=’,’}}.
Это значит, что оно принимает только цифры и заканчивается на ,. Кроме того, используя valid_dish, ограничили тип заказанной еды с помощью “{{select ‘order’ options=valid_dish}}”. Более подробная информация предоставлена по официальной ссылке на GitHub.
Агент ReAct с Guidance и Wizard-Mega-13B-GPTQ
Примечание. С кодом данного раздела можно ознакомиться по ссылке.
Перед запуском необходимо разместить LLM на локальном ПК. В данном случае для этой цели применяется wizard-mega-13B-GPTQ. Вы можете выбрать и другие модели. Сначала загружаем модель и позволяем Guidance ее использовать:
Испытаем на простой текстовой подсказке. С помощью формата ReAct проверяем, насколько корректно работает модель.
📌 Читать
@data_analysis_ml
Guidance — это инструмент от Microsoft, представляющий собой “язык, организующий управление LLM”. Он позволяет управлять выводом LLM, что облегчает выполнение инструкций.
Что касается GPT 3.5–4, то он успешно работает с большинством инструкций.
Но небольшие локальные модели, такие как LLaMa и ее разновидности (Alpca, WizardML), не всегда выдают правильный ответ. А это большая проблема. Некоторые фреймворки, такие как ReAct, требуют определенного формата инструкций для ответа. Кроме того, работу усложняет тот факт, что LLM иногда предоставляет данные в формате JSON с синтаксической ошибкой.
Пример:
valid_dish = ["Pizza", "Noodles", "Pho"]
# определение текстовой подсказки
order_maker = guidance("""The following is a order in JSON format.
```json
{
"name": "{{name}}",
"age": {{gen 'age' pattern='[0-9]+' stop=','}},
"delivery": "{{#select 'delivery'}}Yes{{or}}No{{/select}}",
"order": "{{select 'order' options=valid_dish}}",
"amount": {{gen 'amount' pattern='[0-9]+' stop=','}}
}```""")
# генерация имени заказчика доставки
order_maker(
name="Alex",
valid_dish=valid_dish
)
**Вывод**
The following is a order in JSON format.
```json
{
"name": "Alex",
"age": 25,
"delivery": "Yes",
"order": "Noodles",
"amount": 10
}```
Как видно, мы легко составили текстовую подсказку, предварительно определили несколько пунктов и добились от LLM точного их выполнения. Скорректировали регулярное выражение для поля age с помощью {{gen ‘age’ pattern=’[0–9]+’ stop=’,’}}.
Это значит, что оно принимает только цифры и заканчивается на ,. Кроме того, используя valid_dish, ограничили тип заказанной еды с помощью “{{select ‘order’ options=valid_dish}}”. Более подробная информация предоставлена по официальной ссылке на GitHub.
Агент ReAct с Guidance и Wizard-Mega-13B-GPTQ
Примечание. С кодом данного раздела можно ознакомиться по ссылке.
Перед запуском необходимо разместить LLM на локальном ПК. В данном случае для этой цели применяется wizard-mega-13B-GPTQ. Вы можете выбрать и другие модели. Сначала загружаем модель и позволяем Guidance ее использовать:
model_para = 'YOUR_MODEL_DIR'
checkpoint_para = 'YOUR_MODEL_FILE'
model = load_quant(model_para, checkpoint_para, 4, 128)
model.to(DEV)
tokenizer = AutoTokenizer.from_pretrained(model_para)
llama = guidance.llms.Transformers(model=model, tokenizer=tokenizer, device=0)
guidance.llm = llama
Испытаем на простой текстовой подсказке. С помощью формата ReAct проверяем, насколько корректно работает модель.
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥1
Задача из Собеседования в Яндекс с зарплатой 85000 рублей #python #собеседование #задача #yandex
На вход функции поступает 2 строки
📌Код
На вход функции поступает 2 строки
s
и s2
. Функция возвращает True
, если s1 может быть получена из символов строки s2.
Каждый символ s2
используется только 1
раз.📌Код
👍7❤2👎1
Что лучше — нанять тимлида из сторонней компании или вырастить самостоятельно? Как правильно выбрать подходящего на эту роль сотрудника?
На эти и другие важные вопросы отвечает руководитель аналитики в Авито Глеб Белогорцев. В своем гайде он подробно рассказывает, как понять, какой именно тимлид нужен компании, как распознать потенциального руководителя в числе сотрудников и кого точно не нужно брать на роль тимлида.
Если вы хотите найти тимлида, который сможет качественно управлять командой, вам просто необходима эта инструкция! Переходите по ссылке и узнавайте уникальную информацию от опытного специалиста!
Реклама.ООО "КЕХ ЕКОММЕРЦ" ИНН 7710668349 erid: Kra23e76V
На эти и другие важные вопросы отвечает руководитель аналитики в Авито Глеб Белогорцев. В своем гайде он подробно рассказывает, как понять, какой именно тимлид нужен компании, как распознать потенциального руководителя в числе сотрудников и кого точно не нужно брать на роль тимлида.
Если вы хотите найти тимлида, который сможет качественно управлять командой, вам просто необходима эта инструкция! Переходите по ссылке и узнавайте уникальную информацию от опытного специалиста!
Реклама.ООО "КЕХ ЕКОММЕРЦ" ИНН 7710668349 erid: Kra23e76V
👍6❤2