📂 Кластеризация текста в PySpark
Наша задача состоит в том, чтобы разбить все сообщения на группы, каждая из которых будет содержать в себе сообщения одного типа.
1. Создание сессии Spark и импорт необходимых модулей
• Для того чтобы создать Spark сессию, мы написали следующий код:
• Импортируем модули для дальнейшей работы:
2. Предварительная обработка текста
• Первым делом создадим DataFrame из данных, которые находятся на Hadoop, в нашей сессии:
• Поскольку в тексте содержится много информации, которая не несёт никакой смысловой нагрузки, например, различные цифры или знаки препинания, мы её удалим. Для этого написали UDF-функцию, которая почистит текст с помощью регулярных выражений.
• Применим нашу функцию и уберем пустые строки:
📌 Продолжение
@data_analysis_ml
Наша задача состоит в том, чтобы разбить все сообщения на группы, каждая из которых будет содержать в себе сообщения одного типа.
1. Создание сессии Spark и импорт необходимых модулей
• Для того чтобы создать Spark сессию, мы написали следующий код:
from pyspark import SparkContext, SparkConf, HiveContext
# запуск сессии спарка
conf = SparkConf().setAppName('spark_dlab_app')
conf.setAll(
[
#Укажите тут нужные параметры Spark
])
spark = SparkSession.builder.config(conf=conf).enableHiveSupport().getOrCreate()
• Импортируем модули для дальнейшей работы:
# для создания пользовательских функций
from pyspark.sql.functions import udf
# для использования оконных функций
from pyspark.sql.window import Window
# для работы с PySpark DataFrame
from pyspark.sql import DataFrame
# для задания типа возвращаемого udf функцией
from pyspark.sql.types import StringType
# для создания регулярных выражений
import re
# для работы с Pandas DataFrame
import pandas as pd
# для предобработки текста
from pyspark.ml.feature import HashingTF, IDF, Word2Vec,\
CountVectorizer, Tokenizer, StopWordsRemover
# для кластеризации
from pyspark.ml.clustering import Kmeans, BisectingKmeans
# для создания пайплайна
from pyspark.ml import Pipeline
# для подсчета частоты слов в тексте
from nltk.probability import FreqDist
2. Предварительная обработка текста
• Первым делом создадим DataFrame из данных, которые находятся на Hadoop, в нашей сессии:
t = spark.table('data')
• Поскольку в тексте содержится много информации, которая не несёт никакой смысловой нагрузки, например, различные цифры или знаки препинания, мы её удалим. Для этого написали UDF-функцию, которая почистит текст с помощью регулярных выражений.
def text_prep(text):
# переводим текст в нижний регистр
text = str(text).lower()
# убираем всё, что не русская буква, и убираем слово «баланс»
text = re.sub('[^а-яё]|баланс',' ',text)
# убираем всё, что начинается с «от»
text = re.sub('от.+','',text)
# убираем одиночные буквы
text = re.sub('\s[а-яё]\s{0,1}','',text)
# если пробелов больше одного заменяем их на один
text = re.sub('\s+',' ',text)
# убираем лишние пробелы слева и справа
text = text.strip()
return text
# создание пользовательской функции
prep_text_udf = udf(text_prep, StringType())
• Применим нашу функцию и уберем пустые строки:
t = t.withColumn('prep_text', prep_text_udf('sms_text'))\
.filter('prep_text <> ""')
📌 Продолжение
@data_analysis_ml
👍18🔥4❤3
⚡Как развернуть GitLab с помощью Docker за 5 секунд
GitLab — это веб-инструмент управления репозиториями Git, который помогает командам совместно работать над кодом. Кроме того, он предоставляет полную платформу DevOps с контролем версий, ревью кода, отслеживанием проблем (англ. issue) и CI/CD.
▪️Развертывание GitLab с помощью файла Compose от Sameersbn
Начинаем развертывание GitLab со скачивания актуальной версии файла Compose:
Теперь генерируем 3 случайные строки длиной не менее 64 символов, открываем файл Compose и применяем эти строки для:
•
•
•
▪️Запуск экземпляра GitLab
▪️Развертывание GitLab вручную с помощью команд Docker
Вместо скачивания актуальной версии файла Compose от Sameersbn вы можете вручную запустить контейнер GitLab, контейнер Redis и контейнер PostgreSQL за 3 простых шага.
Шаг 1. Запуск контейнера PostgreSQL
Продолжение
@data_analysis_ml
GitLab — это веб-инструмент управления репозиториями Git, который помогает командам совместно работать над кодом. Кроме того, он предоставляет полную платформу DevOps с контролем версий, ревью кода, отслеживанием проблем (англ. issue) и CI/CD.
▪️Развертывание GitLab с помощью файла Compose от Sameersbn
Начинаем развертывание GitLab со скачивания актуальной версии файла Compose:
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
Теперь генерируем 3 случайные строки длиной не менее 64 символов, открываем файл Compose и применяем эти строки для:
•
GITLAB_SECRETS_OTP_KEY_BASE
. Используется для шифрования секретных ключей двухфакторной аутентификации (2FA) в базе данных. Ни один пользователь не сможет войти в систему с 2FA при потере этого ключа. •
GITLAB_SECRETS_DB_KEY_BASE.
Нужен для шифрования секретных ключей CI и импорта учетных данных. В случае изменения/потери вы уже не сможете задействовать секретные ключи CI. •
GITLAB_SECRETS_SECRET_KEY_BASE.
Требуется для генерации ссылок для сброса пароля и стандартных функций аутентификации. Вы не сможете сбросить пароли через электронную почту при ее потере/изменении.▪️Запуск экземпляра GitLab
docker-compose up
▪️Развертывание GitLab вручную с помощью команд Docker
Вместо скачивания актуальной версии файла Compose от Sameersbn вы можете вручную запустить контейнер GitLab, контейнер Redis и контейнер PostgreSQL за 3 простых шага.
Шаг 1. Запуск контейнера PostgreSQL
docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--env 'DB_EXTENSION=pg_trgm,btree_gist' \
--volume ./gitlab_postgresql:/var/lib/postgresql \
sameersbn/postgresql:12-20200524
Продолжение
@data_analysis_ml
👍11❤5🔥3
🔥 Бесплатный курс: CS 329S: Machine Learning Systems Design
Слайды лекций, конспекты, учебные пособия и задания курса Machine Learning Systems Design от Стенфорда.
https://stanford-cs329s.github.io/syllabus.html
@data_analysis_ml
Слайды лекций, конспекты, учебные пособия и задания курса Machine Learning Systems Design от Стенфорда.
https://stanford-cs329s.github.io/syllabus.html
@data_analysis_ml
❤14👍7🔥4
PEP 8 - это набор рекомендаций по написанию чистого, читабельного и последовательного кода на языке Python.
• isort — Python-библиотека и плагины для различных редакторов, позволяющие быстро сортировать все импортируемые файлы.
• black — это библиотека для автоматического форматирования вашего Python кода, в соответствии с требованиями PEP8.
• flake8 — это инструмент линтинга для Python, который проверяет код Python на наличие ошибок, проблем со стилем и сложностью. Библиотека Flake8 построена на базе трех инструментов: PyFlakes - проверяет код Python на наличие ошибок. McCabe - проверяет код Python на сложность. pycodestyle - проверяет кодовую базу Python на проблемы со стилем в соответствии с PEP8..
• interrogate — interrogate проверяет ваш код на наличие отсутствующих строк документации (docstrings).
• Whispers — это инструмент анализа кода, предназначенный для разбора различных распространенных форматов данных в поисках жестко закодированных учетных данных и опасных функций. Whispers может работать в CLI или интегрироваться в конвейер CI/CD.
• hardcodes — это утилита поиска и редактирования кода.
• pylint — Pylint анализирует ваш код без его запуска. Инструмент проверяет наличие ошибок и выдает рекомендации по его рефакторингу.
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤2
🔥 Бесплатный курс: Прикладная математика для машинного обучения
Курс направлен на студентов без математического бэкграунда. Будут изложены основные понятия необходимые для понимания методов, на которых строится машинное обучение и модели нейронных сетей. Также целью курса является разъяснить как могут быть преобразованы и представлены данные для последующего обучения моделей на них.
Курс состоит из 13 лекций и 13 семинаров. На лекциях излагаются теоретические основы перечисленных тем, с простыми примерами. На семинарах планируется разбор, демонстрация и практика применения программных реализаций и алгоритмов обозначенных теоретических объектов.
После освоения курса от слушателя ожидается в первую очередь понимание того, что из себя представляют как представлять свои данные численно, и как они обрабатываются моделями машинного обучения численно. Одновременно с этим, курс не ставит перед собой цель, обучить всех строгому выводу каждой формулы и каждой теоремы, только понимание требующееся для прикладного использования.
https://teach-in.ru/course/applied-mathematics-for-machine-learning/about
@data_analysis_ml
Курс направлен на студентов без математического бэкграунда. Будут изложены основные понятия необходимые для понимания методов, на которых строится машинное обучение и модели нейронных сетей. Также целью курса является разъяснить как могут быть преобразованы и представлены данные для последующего обучения моделей на них.
Курс состоит из 13 лекций и 13 семинаров. На лекциях излагаются теоретические основы перечисленных тем, с простыми примерами. На семинарах планируется разбор, демонстрация и практика применения программных реализаций и алгоритмов обозначенных теоретических объектов.
После освоения курса от слушателя ожидается в первую очередь понимание того, что из себя представляют как представлять свои данные численно, и как они обрабатываются моделями машинного обучения численно. Одновременно с этим, курс не ставит перед собой цель, обучить всех строгому выводу каждой формулы и каждой теоремы, только понимание требующееся для прикладного использования.
https://teach-in.ru/course/applied-mathematics-for-machine-learning/about
@data_analysis_ml
👍24🔥6❤5
🚀 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