📌 Предлагаем вам подборку бесплатных курсов по аналитике и визуализации данных
▪Digital-аналитика — This is Data
▪Визуализация данных - Онлайн-школа ILYN
▪Microsoft Power BI — Microsoft Learn
▪Power Bi для интернет-маркетинга — NeedForData
▪Основы работы с DataLens — Яндекс Практикум
▪Google Data Studio (2022) — Яков Осипенков
▪Google Data Studio (2022) — Школа аналитики "Байкал"
@data_analysis_ml
▪Digital-аналитика — This is Data
▪Визуализация данных - Онлайн-школа ILYN
▪Microsoft Power BI — Microsoft Learn
▪Power Bi для интернет-маркетинга — NeedForData
▪Основы работы с DataLens — Яндекс Практикум
▪Google Data Studio (2022) — Яков Осипенков
▪Google Data Studio (2022) — Школа аналитики "Байкал"
@data_analysis_ml
❤4
💡 Начало работы с pytest
Если вы хотите протестировать свою функцию на разных примерах, используйте декоратор pytest.mark.parametrize из библиотеки pytest.
В приведенном выше коде ожидается, что первое предложение будет содержать слово "duck", а второе предложение не будет содержать этого слова. При запуске pytest прошло 2 теста.
▪Github
▪Python Testing с pytest
@data_analysis_ml
Если вы хотите протестировать свою функцию на разных примерах, используйте декоратор pytest.mark.parametrize из библиотеки pytest.
В приведенном выше коде ожидается, что первое предложение будет содержать слово "duck", а второе предложение не будет содержать этого слова. При запуске pytest прошло 2 теста.
import pytest
def text_contain_word(word: str, text: str):
'''Find whether the text contains a particular word'''
return word in text
test = [
('There is a duck in this text',True),
('There is nothing here', False)
]
@pytest.mark.parametrize('sample, expected', test)
def test_text_contain_word(sample, expected):
word = 'duck'
assert text_contain_word(word, sample) == expected▪Github
▪Python Testing с pytest
@data_analysis_ml
🗺 Список полезных Python-библиотек для работы с геоданными:
1. Gmaps - библиотека для работы с Google maps, кот позволяет визуализировать и взаимодействовать с геоданными.
2. Leafmap - Python пакет для создания интерактивных карт для геопространственного анализа. Эта библиотека доступна в среде Jupyter, Google Colab, Jupyter Notebook и JupyterLab, и позволяет анализировать и визуализировать геоданные без особого труда.
3. Folium - это Python-библиотека для бычтрой визуализации геоданных, которая предоставляет интерфейс Python для работы с leaflet.js, одной из самых популярных библиотек JavaScript, используемых для создания интерактивных карт. Библиотека позволяет работать с файлами GeoJSON и TopoJSON, создавать фоновые картограммы с различными цветовыми схемами, персонализировать всплывающие подсказки и интерактивные карты-врезки.
4. Geopandas - это библиотека, которая предназначена для работы с геоданными в Python. Она предоставляет объект геодатафрейм, который по своей сущности аналогичен датафрейму Pandas, но который содержит информацию о геометрии, являющейся определением пространственного объекта.
5. Ipyleaflet - это интерактивная и многофункциональная библиотека виджетов, которая предоставляет возможность визуализировать карты.
1. Gmaps - библиотека для работы с Google maps, кот позволяет визуализировать и взаимодействовать с геоданными.
2. Leafmap - Python пакет для создания интерактивных карт для геопространственного анализа. Эта библиотека доступна в среде Jupyter, Google Colab, Jupyter Notebook и JupyterLab, и позволяет анализировать и визуализировать геоданные без особого труда.
3. Folium - это Python-библиотека для бычтрой визуализации геоданных, которая предоставляет интерфейс Python для работы с leaflet.js, одной из самых популярных библиотек JavaScript, используемых для создания интерактивных карт. Библиотека позволяет работать с файлами GeoJSON и TopoJSON, создавать фоновые картограммы с различными цветовыми схемами, персонализировать всплывающие подсказки и интерактивные карты-врезки.
4. Geopandas - это библиотека, которая предназначена для работы с геоданными в Python. Она предоставляет объект геодатафрейм, который по своей сущности аналогичен датафрейму Pandas, но который содержит информацию о геометрии, являющейся определением пространственного объекта.
5. Ipyleaflet - это интерактивная и многофункциональная библиотека виджетов, которая предоставляет возможность визуализировать карты.
Аналитики данных, инженеры и учёные одинаково знакомы с SQL. Язык запросов по-прежнему широко используется для работы с реляционными базами данных любого типа.
Однако, в настоящее время, всё больше и больше, особенно для аналитиков данных, растут технические требования, и ожидается, что люди, по крайней мере, знают основы языка программирования. При работе с данными Python и Pandas являются обычным дополнением к списку требований в описании вакансий.
Хотя Pandas может быть новым для людей, знакомых с SQL, концепции выбора, фильтрации и агрегирования данных в SQL легко переносятся в Pandas. Давайте рассмотрим в этой статье некоторые распространённые SQL-запросы и способы их написания и оптимизации в Pandas.
▪ Читать
@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 5 примеров использования Redis с кодом на Python
1. Caching
Redis можно использовать для кэширования часто используемых данных, снижая нагрузку на ваше основное хранилище данных. Вот пример того, как реализовать кэширование с помощью Redis в Python
2. Pub/Sub (Publish/Subscribe):
Redis поддерживает паттерн pub/sub, позволяя вам создавать системы обмена сообщениями. Вот пример:
3. Rate Limiting:
Redis можно использовать для реализации ограничения скорости, чтобы контролировать количество запросов или операций за период времени. Пример:
4. Session Storage:
Redis можно использовать для хранения данных сеанса в веб-приложениях. Пример:
5. Leaderboard:
Redis можно использовать для создания таблиц лидеров или рейтингов на основе набранных баллов. Пример:
Это лишь несколько примеров того, как Redis можно использовать в Python. Redis предоставляет множество других мощных функций и структур данных, которые можно использовать в различных приложениях.
▪Github
@data_analysis_ml
1. Caching
Redis можно использовать для кэширования часто используемых данных, снижая нагрузку на ваше основное хранилище данных. Вот пример того, как реализовать кэширование с помощью Redis в Python
import redis
# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def get_data_from_cache(key):
# Check if data exists in the cache
if r.exists(key):
# Retrieve data from the cache
data = r.get(key)
return data.decode('utf-8') # Convert bytes to string
else:
# Fetch data from the primary data source
data = fetch_data_from_source()
# Store data in the cache with a timeout of 1 hour
r.setex(key, 3600, data)
return data2. Pub/Sub (Publish/Subscribe):
Redis поддерживает паттерн pub/sub, позволяя вам создавать системы обмена сообщениями. Вот пример:
import redis
import time
# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def publish_message(channel, message):
# Publish a message to the specified channel
r.publish(channel, message)
def subscribe_channel(channel):
# Subscribe to a channel and process incoming messages
pubsub = r.pubsub()
pubsub.subscribe(channel)
for message in pubsub.listen():
print(message['data'].decode('utf-8')) # Process the received message3. Rate Limiting:
Redis можно использовать для реализации ограничения скорости, чтобы контролировать количество запросов или операций за период времени. Пример:
import redis
# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def check_rate_limit(ip_address):
# Increment the request count for the IP address
request_count = r.incr(ip_address)
# If the count exceeds the limit (e.g., 100 requests per minute), deny the request
if request_count > 100:
return False
return True4. Session Storage:
Redis можно использовать для хранения данных сеанса в веб-приложениях. Пример:
import redis
import uuid
# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def create_session(user_id):
# Generate a unique session ID
session_id = str(uuid.uuid4())
# Store the session data in Redis with a timeout of 30 minutes
r.setex(session_id, 1800, user_id)
return session_id
def get_user_id_from_session(session_id):
# Retrieve the user ID from the session data in Redis
user_id = r.get(session_id)
if user_id is not None:
return user_id.decode('utf-8') # Convert bytes to string
else:
return None5. Leaderboard:
Redis можно использовать для создания таблиц лидеров или рейтингов на основе набранных баллов. Пример:
import redis
# Connect to Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def update_score(player_id, score):
# Update the score of a player
r.zadd('leaderboard', {player_id: score})
def get_leaderboard():
# Get the top 10 players from the leaderboard
leaderboard = r.zrevrange('leaderboard', 0, 9, withscores=True)
for player, score in leaderboard:
print(f"Player: {player.decode('utf-8')}, Score: {score}")Это лишь несколько примеров того, как Redis можно использовать в Python. Redis предоставляет множество других мощных функций и структур данных, которые можно использовать в различных приложениях.
▪Github
@data_analysis_ml
Прощайте, циклы в Python: знакомство с возможностями векторизации
В этой статье я хочу поделиться с вами захватывающей техникой, которая произвела революцию в моём подходе к анализу и визуализации данных в Python.
Она называется векторизацией и позволяет вам попрощаться с циклами и использовать более эффективный и элегантный способ программирования.
▪ Читать
@data_analysis_ml
В этой статье я хочу поделиться с вами захватывающей техникой, которая произвела революцию в моём подходе к анализу и визуализации данных в Python.
Она называется векторизацией и позволяет вам попрощаться с циклами и использовать более эффективный и элегантный способ программирования.
▪ Читать
@data_analysis_ml
❤3
8 инструментов распознавания речи:
1. DeepSpeech на базе Baidu DeepSpeech, позволяющий расшифровать аудиофайлы с использованием предварительно обученных моделей или обучить пользовательский набор данных.
2. wav2letter - open-course набор инструментов от Facebook AI Research, объединенный с библиотекой Flashlight.
3. OpenSeq2Seq- исследовательский проект от NVIDIA по проблемам преобразования последовательностей в последовательности.
4. TensorFlowASR – это бесплатный набор инструментов с открытым исходным кодом от Tensorflow, который включает в себя обученные модели на основе рекуррентных нейронных сетей с CTC.
5. SpeechRecognition - проект, предоставляющий доступ к нескольким моделям автоматического распознавания речи, включая оболочки для речевых API от Google, Microsoft Azure и IBM.
6. Yandex SpeechKit от Яндекса - программный продукт, который полностью разработан и настроен.
7. SmartSpeech от СберDevices - проект предоставляет возможность использовать несколько моделей для автоматического распознавания речи, включая оболочки для речевых API от Google, Microsoft Azure и IBM.
8. Сервис Google Документы позволяет переводить устную речь в записанный текст. Это встроенная функция с поддержкой разных языков. Для активации голосового ввода перейдите в раздел «Инструменты» и кликните на «Голосовой ввод»
@data_analysis_ml
1. DeepSpeech на базе Baidu DeepSpeech, позволяющий расшифровать аудиофайлы с использованием предварительно обученных моделей или обучить пользовательский набор данных.
2. wav2letter - open-course набор инструментов от Facebook AI Research, объединенный с библиотекой Flashlight.
3. OpenSeq2Seq- исследовательский проект от NVIDIA по проблемам преобразования последовательностей в последовательности.
4. TensorFlowASR – это бесплатный набор инструментов с открытым исходным кодом от Tensorflow, который включает в себя обученные модели на основе рекуррентных нейронных сетей с CTC.
5. SpeechRecognition - проект, предоставляющий доступ к нескольким моделям автоматического распознавания речи, включая оболочки для речевых API от Google, Microsoft Azure и IBM.
6. Yandex SpeechKit от Яндекса - программный продукт, который полностью разработан и настроен.
7. SmartSpeech от СберDevices - проект предоставляет возможность использовать несколько моделей для автоматического распознавания речи, включая оболочки для речевых API от Google, Microsoft Azure и IBM.
8. Сервис Google Документы позволяет переводить устную речь в записанный текст. Это встроенная функция с поддержкой разных языков. Для активации голосового ввода перейдите в раздел «Инструменты» и кликните на «Голосовой ввод»
@data_analysis_ml
💬 Полезные NLP инструменты: Библиотека fastText
fastText - это библиотека для анализа и классификации текста.
Вот как загрузить и использовать предварительно обученные модели:
В следующем примеры мы будем использовать метод ближайших соседей:
Вот как использовать эту модель для определения языка из введенного текста:
▪Github
@data_analysis_ml
fastText - это библиотека для анализа и классификации текста.
Вот как загрузить и использовать предварительно обученные модели:
import fasttext
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(repo_id="facebook/fasttext-en-vectors", filename="model.bin")
model = fasttext.load_model(model_path)
model.words
['the', 'of', 'and', 'to', 'in', 'a', 'that', 'is', ...]
len(model.words)
145940
model['bread']
array([ 4.89417791e-01, 1.60882145e-01, -2.25947708e-01, -2.94273376e-01,
-1.04577184e-01, 1.17962055e-01, 1.34821936e-01, -2.41778508e-01, ...])В следующем примеры мы будем использовать метод ближайших соседей:
import fasttext
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(repo_id="facebook/fasttext-en-nearest-neighbors", filename="model.bin")
model = fasttext.load_model(model_path)
model.get_nearest_neighbors("bread", k=5)
[(0.5641006231307983, 'butter'),
(0.48875734210014343, 'loaf'),
(0.4491206705570221, 'eat'),
(0.42444291710853577, 'food'),
(0.4229326844215393, 'cheese')]Вот как использовать эту модель для определения языка из введенного текста:
import fasttext
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(repo_id="facebook/fasttext-language-identification", filename="model.bin")
model = fasttext.load_model(model_path)
model.predict("Hello, world!")
(('__label__eng_Latn',), array([0.81148803]))
model.predict("Hello, world!", k=5)
(('__label__eng_Latn', '__label__vie_Latn', '__label__nld_Latn', '__label__pol_Latn', '__label__deu_Latn'),
array([0.61224753, 0.21323682, 0.09696738, 0.01359863, 0.01319415]))▪Github
@data_analysis_ml
6 досадных ошибок Sklearn, которые вы можете совершать, и как их избежать
Часто Sklearn выдаёт большие красные сообщения об ошибках и предупреждения, когда вы делаете что-то не так. Эти сообщения предполагают, что в вашем коде содержатся ошибки, которые мешают магии Sklearn делать свою работу.
Но что произойдёт, если вы не получите никаких ошибок или предупреждений? Означает ли это, что вы делаете всё правильно? Не обязательно.
Научитесь избегать шести самых серьёзных ошибок, связанных с теорией машинного обучения, которые новички часто совершают в Sklearn.
Читать
@data_analysis_ml
Часто Sklearn выдаёт большие красные сообщения об ошибках и предупреждения, когда вы делаете что-то не так. Эти сообщения предполагают, что в вашем коде содержатся ошибки, которые мешают магии Sklearn делать свою работу.
Но что произойдёт, если вы не получите никаких ошибок или предупреждений? Означает ли это, что вы делаете всё правильно? Не обязательно.
Научитесь избегать шести самых серьёзных ошибок, связанных с теорией машинного обучения, которые новички часто совершают в Sklearn.
Читать
@data_analysis_ml
🔥1
💫 StarCoder
StarCoder - это современный метод коррекции и генерации кода с использованием нейронных сетей, созданный исследовательским сообществом The BigCode, MIT, Университета Пенсильвании и Колумбийского университета. StarCoder улучшает показатели качества и производительности по сравнению с предыдущими моделями, такими как PaLM, LaMDA, LLaMA и OpenAI code-cushman-001.
обученная на исходном коде и текстах на естественном языке. Ее обучающие данные включают более 80 различных языков программирования, а также текст, извлеченный из вопросов и коммитов GitHub.
▪Github
▪Модель
▪Demo
@data_analysis_ml
StarCoder - это современный метод коррекции и генерации кода с использованием нейронных сетей, созданный исследовательским сообществом The BigCode, MIT, Университета Пенсильвании и Колумбийского университета. StarCoder улучшает показатели качества и производительности по сравнению с предыдущими моделями, такими как PaLM, LaMDA, LLaMA и OpenAI code-cushman-001.
обученная на исходном коде и текстах на естественном языке. Ее обучающие данные включают более 80 различных языков программирования, а также текст, извлеченный из вопросов и коммитов GitHub.
▪Github
▪Модель
▪Demo
@data_analysis_ml
🔍 Data Validation
Подборка полезных инструментов для проверки данных в ваших проектах. Если вы еще не используете их в своих ds проектах, рекомендуем обратить на них внимание.
▪pydantic - Проверка данных с помощью подсказок типов Python.
▪jsonschema - Реализация спецификации JSON Schema для Python.
▪validators - удобная библиотека Проверки данных.
param - Param: Сделает ваш код Python более понятным и надежным.
▪voluptuous - Валидаторы - это простые вызываемые функции: С ними вам не нужно создавать нагромождение классов, просто импортируйет 1 функцию из этой замечательной библиотеки.
▪strictyaml - Безопасный парсер и валидатор YAML.
▪dirty-equals - dirty-equals - это библиотека python, которая (неправильно) использует метод eq, чтобы сделать ваш код python более декларативным и, следовательно, более легким для понимания и редактирования.
▪typical - Быстрая, простая и корректная проверка данных с использованием Python 3.
▪valideer - Легкая библиотека Python для проверки данных.
Data
Подборка полезных инструментов для проверки данных в ваших проектах. Если вы еще не используете их в своих ds проектах, рекомендуем обратить на них внимание.
▪pydantic - Проверка данных с помощью подсказок типов Python.
▪jsonschema - Реализация спецификации JSON Schema для Python.
▪validators - удобная библиотека Проверки данных.
param - Param: Сделает ваш код Python более понятным и надежным.
▪voluptuous - Валидаторы - это простые вызываемые функции: С ними вам не нужно создавать нагромождение классов, просто импортируйет 1 функцию из этой замечательной библиотеки.
▪strictyaml - Безопасный парсер и валидатор YAML.
▪dirty-equals - dirty-equals - это библиотека python, которая (неправильно) использует метод eq, чтобы сделать ваш код python более декларативным и, следовательно, более легким для понимания и редактирования.
▪typical - Быстрая, простая и корректная проверка данных с использованием Python 3.
▪valideer - Легкая библиотека Python для проверки данных.
Data
Это будет история о том, как мы придумали и приступили к реализации бенчмарка объективным, упорядоченным и унифицированным способом – через написание универсального инструмента.
В первой части публикации представим теоретическую часть задачи, предпосылки, а также первую попытку реализации универсального инструмента. Основные результаты сравнения опишем в следующей части.
В нашей работе часто приходится сталкиваться с задачами обработки больших данных. Традиционный метод обработки, который мы используем — библиотека Pandas. Она предоставляет приятные вещи (чтения форматов из коробки, фильтрации, агрегации, concat, join merge). Всё это позволяет абстрагироваться от технических трудностей, сразу приступая к самому алгоритмически интересному.
▪Читать дальше
Data
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🐼 4 альтернативы Pandas: ускоренное выполнение анализа данных
Pandas — одна из самых популярных библиотек Python. Ее DataFrame интуитивно понятен и оснащен продвинутыми API для выполнения задач по работе с данными. Многие библиотеки Python были интегрированы с Pandas DataFrame, чтобы повысить скорость их принятия.
Однако библиотека Pandas не является эталоном в области обработки больших наборов данных. Она преимущественно используется для анализа данных на одной машине, а не на кластере машин. В этой статье будут представлены результаты оценки производительности более быстрых альтернатив: Polars, DuckDB, Vaex и Modin.
▪Читать дальше
Data
Pandas — одна из самых популярных библиотек Python. Ее DataFrame интуитивно понятен и оснащен продвинутыми API для выполнения задач по работе с данными. Многие библиотеки Python были интегрированы с Pandas DataFrame, чтобы повысить скорость их принятия.
Однако библиотека Pandas не является эталоном в области обработки больших наборов данных. Она преимущественно используется для анализа данных на одной машине, а не на кластере машин. В этой статье будут представлены результаты оценки производительности более быстрых альтернатив: Polars, DuckDB, Vaex и Modin.
▪Читать дальше
Data
💫 SQLite для работы с данными
Рассказываю, почему SQLite отлично подойдет вам в повседневной работе. И неважно, разработчик вы, аналитик, тестировщик, админ или продакт-менеджер.
Для затравки несколько известных фактов:
▪SQLite — самая распространенная СУБД в мире, включена во все популярные ОС.
▪Работает без сервера.
▪Для разработчиков — встраивается прямо в приложение.
▪Для всех остальных — удобная консоль (REPL) одним файлом (sqlite3.exe на Windows, sqlite3 в Linux / macOS).
📌 Читать
Data
Рассказываю, почему SQLite отлично подойдет вам в повседневной работе. И неважно, разработчик вы, аналитик, тестировщик, админ или продакт-менеджер.
Для затравки несколько известных фактов:
▪SQLite — самая распространенная СУБД в мире, включена во все популярные ОС.
▪Работает без сервера.
▪Для разработчиков — встраивается прямо в приложение.
▪Для всех остальных — удобная консоль (REPL) одним файлом (sqlite3.exe на Windows, sqlite3 в Linux / macOS).
📌 Читать
Data
👍2
➡️ Методы ускорения кода: Векторизация
Это один из методов, который необходимо знать при работе с pandas, а его игнорирование обычно приводит к проваленным собеседованиям и медленному коду.
Задача: необходимо применить некоторую функцию к каждой записи. Очевидный способ, который делают новички — цикл по строкам или конкретному столбцу. Однако это антипатерн в pandas, работающий неприлично медленно на больших датафреймах. Разберем другие способы с примерами.
Например, итерация по строкам с помощью метода .iterrows(). Это самый медленный способ, к тому же не сохраняет типы данных. Другие варианты — использовать .itertuples(), где на каждой итерации строка рассматривается как именованный tupple. Это во много раз быстрее, чем .iterrows(). Еще один аналог — .iteritems().
Любые итерации все равно на порядки медленнее векторизованного подхода, поэтому использовать их стоит только в редких случаях, например когда результат зависит от предыдущих строк.
Другой метод — использование функции .apply(). Она принимает на вход функцию и доп. параметры, и затем применяет ее к каждой строке. Это более предпочтительный способ, работающий в разы быстрее. Также, apply лаконичнее и удобнее, особенно если применять lambda-функции.
Однако, современные процессоры научились оптимизировать подобные задачи с помощью SIMD-инструкций, в которых операции производятся над вектором, а не одним значением (как это происходит когда мы итерируемся по строкам). Чтобы использовать эти инструкции, нужно явно вызвать их в пакете.
Поэтому pandas содержит собственные реализации простых операций (сумма, min/max и тд), выполняющиеся гораздо быстрее итерирования. Такие функции называют векторизированными. Прежде чем использовать apply или iter…, стоит поискать в документации соответствующие векторные функции.
Для строк и дат есть свои методы, например
Ниже сравнение времени работы методов выше для операции добавления столбца-логарифма. Результаты ошеломляющие, векторизация быстрее циклов и iterrows в тысячу раз! Похожее сравнение можно прочитать тут.
Data
Это один из методов, который необходимо знать при работе с pandas, а его игнорирование обычно приводит к проваленным собеседованиям и медленному коду.
Задача: необходимо применить некоторую функцию к каждой записи. Очевидный способ, который делают новички — цикл по строкам или конкретному столбцу. Однако это антипатерн в pandas, работающий неприлично медленно на больших датафреймах. Разберем другие способы с примерами.
Например, итерация по строкам с помощью метода .iterrows(). Это самый медленный способ, к тому же не сохраняет типы данных. Другие варианты — использовать .itertuples(), где на каждой итерации строка рассматривается как именованный tupple. Это во много раз быстрее, чем .iterrows(). Еще один аналог — .iteritems().
Любые итерации все равно на порядки медленнее векторизованного подхода, поэтому использовать их стоит только в редких случаях, например когда результат зависит от предыдущих строк.
Другой метод — использование функции .apply(). Она принимает на вход функцию и доп. параметры, и затем применяет ее к каждой строке. Это более предпочтительный способ, работающий в разы быстрее. Также, apply лаконичнее и удобнее, особенно если применять lambda-функции.
Однако, современные процессоры научились оптимизировать подобные задачи с помощью SIMD-инструкций, в которых операции производятся над вектором, а не одним значением (как это происходит когда мы итерируемся по строкам). Чтобы использовать эти инструкции, нужно явно вызвать их в пакете.
Поэтому pandas содержит собственные реализации простых операций (сумма, min/max и тд), выполняющиеся гораздо быстрее итерирования. Такие функции называют векторизированными. Прежде чем использовать apply или iter…, стоит поискать в документации соответствующие векторные функции.
Для строк и дат есть свои методы, например
df['col'].str.contains('pat') и df['col'].dt.days.Ниже сравнение времени работы методов выше для операции добавления столбца-логарифма. Результаты ошеломляющие, векторизация быстрее циклов и iterrows в тысячу раз! Похожее сравнение можно прочитать тут.
import numpy as np
import pandas as pd
import math
df = pd.DataFrame(data={'values':range(1,100_000)})
temp=[]
# -------------------------------------------------
# 1.15 секунды
for idx in range(0, df.shape[0], 1):
temp.append(math.log(df['values'].iloc[idx]))
# 7.18 секунд
for i,row in df.iterrows():
temp.append(math.log(row['values']))
# 156 миллисекунд
for row in df.itertuples():
temp.append(math.log(row.values))
# 84.6 миллисекунды
temp = df['values'].apply(lambda x: math.log(x))
# 3.38 миллисекунды
temp = np.log(df['values'])
# -------------------------------------------------
df['new_values'] = tempData
👍3❤1
👨🔬Этические проблемы в науке о данных
Это был никто иной, как Призрак Интернета Будущего (и да, он существует). Он предупреждал о колоссальных этических проблемах, с которыми в настоящее время пытается разобраться стремительно развивающийся мир науки о данных. Подобно Человеку-пауку, но только вместо паутины с данными на кончиках пальцев, мы наделены огромной силой и, как следствие, огромной ответственностью.
Наука о данных, появившаяся всего 20 лет назад, сегодня является секретным ингредиентом многих успешных организаций.
Она произвела переворот в промышленности, активизировала научно-технический прогресс и даже помогла решить ряд самых актуальных мировых проблем. Но у этих значительных успехов есть оборотная сторона, о которой редко кто говорит: этические дилеммы. Речь идет не о заурядных дилеммах типа “съесть или не съесть третий кусок пиццы”. Имеются в виду глубокие, сложные вопросы, которые влекут за собой обширные последствия для общества, сферы личной жизни и равноправия.
Рассмотрим 3 этические проблемы в науке о данных, которые могли выпасть из фокуса вашего внимания.
📌 Читать
Data
Это был никто иной, как Призрак Интернета Будущего (и да, он существует). Он предупреждал о колоссальных этических проблемах, с которыми в настоящее время пытается разобраться стремительно развивающийся мир науки о данных. Подобно Человеку-пауку, но только вместо паутины с данными на кончиках пальцев, мы наделены огромной силой и, как следствие, огромной ответственностью.
Наука о данных, появившаяся всего 20 лет назад, сегодня является секретным ингредиентом многих успешных организаций.
Она произвела переворот в промышленности, активизировала научно-технический прогресс и даже помогла решить ряд самых актуальных мировых проблем. Но у этих значительных успехов есть оборотная сторона, о которой редко кто говорит: этические дилеммы. Речь идет не о заурядных дилеммах типа “съесть или не съесть третий кусок пиццы”. Имеются в виду глубокие, сложные вопросы, которые влекут за собой обширные последствия для общества, сферы личной жизни и равноправия.
Рассмотрим 3 этические проблемы в науке о данных, которые могли выпасть из фокуса вашего внимания.
📌 Читать
Data
👍6❤2🔥1
Конспекты лекций, материалы семинаров и домашние задания (теоретические, практические, соревнования) по курсу "Машинное обучение", проводимому на бакалаврской программе "Прикладная математика и информатика" Факультета компьютерных наук Высшей школы экономики.
Записи лекций и семинаров
▪Полный плейлист
▪Вводная лекция
▪Линейная регрессия
▪Линейная регрессия и градиентное обучение
▪Продвинутые градиентные методы, линейная классификация
▪Метрики качества классификации (+небольшое продолжение)
▪Логистическая регрессия (+продолжение)
▪Метод опорных векторов, многоклассовая классификация
▪Решающие деревья
▪Решающие деревья (продолжение), разложение ошибки на смещение и разброс
▪Случайные леса, градиентный бустинг
▪Градиентный бустинг (продолжение)
▪Стекинг. Обучение без учителя и кластеризация.
▪Визуализация, обучение представлений
▪Рекомендательные системы
Data
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🤡1
1. Introduction to Generative AI - введение в генеративный ИИ Этот курс погрузит вас в основаы генеративного ИИ,
2. Introduction to Large Language Models - в курсе вы узнаете о больших языковых моделях (LLM), которые представляют собой разновидность искусственного интеллекта, способного генерировать текст, переводить языки, писать различные виды креативного контента и информативно отвечать на ваши вопросы.
3. Introduction to Responsible AI - этот курс расскажет вам об этичном и ответственном использовании искусственного интеллекта. Вы узнаете о различных этических проблемах ИИ, таких как предвзятость, конфиденциальность и безопасность. Вы также узнаете о некоторых лучших практиках разработки ИИ.
4. Introduction to Image Generation - этот курс расскажет вам о генерации изображений, разновидности искусственного интеллекта, способного создавать изображения на основе текстовых описаний. Вы узнаете о различных типах алгоритмов генерации изображений, о том, как они работают, и о некоторых из их наиболее распространенных применений.
5. Encoder-Decoder Architecture -
этот курс расскажет вам об архитектуре модели кодера-декодера, которые представляют собой тип архитектуры нейронной сети, широко используемой для задач обработки естественного языка, таких как машинный перевод и резюмирование текста. Вы узнаете о различных компонентах архитектур энкодер-декодер, о том, как они работают, и о некоторых наиболее распространенных областях их применения.
6. Attention Mechanism - В этом курсе вы узнаете о механизме attention - технике, которая используется для повышения производительности нейронных сетей в задачах обработки естественного языка.
7. Transformer Models and BERT Model - В этом курсе вы изучите архитектуру трансформеров, которые представляют собой тип архитектуры нейронной сети, показавшей свою эффективность при решении задач обработки естественного языка.
8. Create Image Captioning Models - Этот курс научит вас создавать модели автоматического описания изображений, которые представляют собой разновидность искусственного интеллекта, способного генерировать подписи к изображениям.
Data
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
10 лет исследований НЛП, объяснённых в 50 концепциях
Это видео — настоящая сокровищница знаний для всех, кто интересуется нейронными сетями и обработкой естественного языка.
В доступной форме рассказываются ключевые концепции NLP: от базовых идей типа токенизации и векторных представлений слов до революционных архитектур вроде RNN, Seq2Seq, Transformer и таких моделей, как BERT, GPT, XLNet.
Помимо этого, вы узнаете о проблемах, с которыми сталкивался автор и как современные модели их преодолевают.
#видео #nlp
Это видео — настоящая сокровищница знаний для всех, кто интересуется нейронными сетями и обработкой естественного языка.
В доступной форме рассказываются ключевые концепции NLP: от базовых идей типа токенизации и векторных представлений слов до революционных архитектур вроде RNN, Seq2Seq, Transformer и таких моделей, как BERT, GPT, XLNet.
Помимо этого, вы узнаете о проблемах, с которыми сталкивался автор и как современные модели их преодолевают.
#видео #nlp
YouTube
10 years of NLP history explained in 50 concepts | From Word2Vec, RNNs to GPT
From RNNs to Transformers to GPT-4, the leap in intelligence in Deep Learning research for Language Modelling and NLP has been a steady and educational growth. In this video, I explain 50 concepts that cover the basics of NLP like Tokenization and Word Embeddings…
👍3❤2
А/В-тестирование – это метод, который используется для сравнения двух версий переменной, например, дизайна сайта при маркетинговом исследовании с целью выявления лучшей версии. Это критически важный метод исследования в
Data Science, который часто используется различными организациями при принятии решений с целью оптимизации существующего продукта и максимизации прибыли.Представлю, что компания, продающая мебель, хочет увеличить число кликов по баннеру «Мебель на заказ». Они значительно изменили дизайн сайта для этой цели. К сожалению, не существует способов предсказать, как именно изменится поведение людей на обновленном сайте по сравнению со старой версией. А/В-тестирование может помочь, например, измерить разницу в конверсии между двумя версиями сайта и сказать, является ли эта разница статистически значимой.
Нулевая гипотеза в рамках А/В-тестирования – предположение о том, что разницы между версиями сайта А и В в действительности нет, а все наблюдаемые различия обусловлены случайностью. Моя задача в ходе А/В-тестирования – опровергнуть нулевую гипотезу. Альтернативная гипотеза в рамках А/В-тестирования утверждает, что версии сайта А и В различны с точки зрения поведения пользователей.
Уровень значимости – это порог вероятности для определения того, являются ли результаты эксперимента статистически значимыми. Чаще всего уровень значимости устанавливается равным 0,05. Это значит, что моё утверждение о значимости результата будет справедливо на
95%. Чем ниже выбранный уровень значимости, тем ниже риск того, что будет обнаружена разница, вызванная случайностью.P—value – это вероятность наблюдения данного результата при условии, что нулевая гипотеза верна. Если p-value меньше, чем уровень значимости
(α), то отвергается нулевая гипотеза в пользу альтернативной (то есть результаты являются статистически значимыми). Например, при уровне значимости 0,05 p-value должна быть меньше 0,05 для признания результатов эксперимента статистически значимыми.Доверительный интервал – интервал значений, в котором, с вероятностью
(1- α), лежит истинное значение переменной. Доверительный интервал является оценкой возможных значений переменной в зависимости от её стандартного отклонения.Статистическая мощность – вероятность отклонения нулевой гипотезы в случае, если альтернативная гипотеза верна. Обычно статистическая мощность теста устанавливается равной
0,8. Это значение используется для вычисления размера выборки, необходимой для подтверждения гипотезы с необходимой силой эффекта.Организация эксперимента
Для проведения А/В-теста требуется разделить всех пользователей на две группы: одна группа будет видеть старый дизайн сайта, а другая – новый. Пользователи распределяются между группами случайным образом. Как правило, группу, которой показывают новый дизайн сайта (В), называют тестовой, а группу, которой показывают старый дизайн (А) – контрольной.
Целевая метрика – CTR, то есть количество кликов на баннер, делённое на количество показов. Буду сравнивать среднее значение метрики CTR для контрольной и тестовой групп. Предположу, что в контрольной группе среднее значение метрики составляет 12%, а в тестовой – 14%.
Если среднее значение метрики в тестовой группе выше, чем в контрольной, то означает ли это, что дизайн сайта В лучше дизайна сайта А? Ответ: нет. Необходимо показать, что результаты А/В-теста статистически значимы. Это означает, что различие в версиях наблюдается не случайно и не обусловлено какой-либо ошибкой. Проверить это можно с помощью статистических тестов.
Не буду заниматься сбором данных в рамках данной публикации. Буду анализировать данные, взятые из датасета с Kaggle. Скачать его можно здесь.
📌 Читать дальше
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1