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

@haarrp - админ

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

@ai_machinelearning_big_data - ML

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

РКН: clck.ru/3FmyAp
Download Telegram
📂 Кластеризация текста в PySpark

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

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🔥43
Как развернуть GitLab с помощью Docker за 5 секунд

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
👍115🔥3
🔥 Бесплатный курс: CS 329S: Machine Learning Systems Design

Слайды лекций, конспекты, учебные пособия и задания курса Machine Learning Systems Design от Стенфорда.

https://stanford-cs329s.github.io/syllabus.html

@data_analysis_ml
14👍7🔥4
📌 7 пакетов Python для анализа и форматирования вашего кода.

PEP 8 - это набор рекомендаций по написанию чистого, читабельного и последовательного кода на языке Python.

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

blackэто библиотека для автоматического форматирования вашего Python кода, в соответствии с требованиями PEP8.

flake8это инструмент линтинга для Python, который проверяет код Python на наличие ошибок, проблем со стилем и сложностью. Библиотека Flake8 построена на базе трех инструментов: PyFlakes - проверяет код Python на наличие ошибок. McCabe - проверяет код Python на сложность. pycodestyle - проверяет кодовую базу Python на проблемы со стилем в соответствии с PEP8..

interrogateinterrogate проверяет ваш код на наличие отсутствующих строк документации (docstrings).

Whispersэто инструмент анализа кода, предназначенный для разбора различных распространенных форматов данных в поисках жестко закодированных учетных данных и опасных функций. Whispers может работать в CLI или интегрироваться в конвейер CI/CD.

hardcodesэто утилита поиска и редактирования кода.

pylintPylint анализирует ваш код без его запуска. Инструмент проверяет наличие ошибок и выдает рекомендации по его рефакторингу.

@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥32
🔥 Бесплатный курс: Прикладная математика для машинного обучения

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

Курс состоит из 13 лекций и 13 семинаров. На лекциях излагаются теоретические основы перечисленных тем, с простыми примерами. На семинарах планируется разбор, демонстрация и практика применения программных реализаций и алгоритмов обозначенных теоретических объектов.

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

https://teach-in.ru/course/applied-mathematics-for-machine-learning/about

@data_analysis_ml
👍24🔥65
🚀 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