Задать вопрос
  • Удалять ли отрицательную корреляцию, если строишь линейную регрессию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Конечно же нет, негативная корреляция нормальный результат. Когда одна переменная увеличивается другая уменьшается это негативная корреляция. В то время как позитивная корреляция это когда одна переменная увеличивается увеличивается и другая. Вот и вся разница между позитивной и негативной корреляцией.
    Ответ написан
    4 комментария
  • Как сформировать запрос с учетом математического выражения?

    Maksim_64
    @Maksim_64
    Data Analyst
    SELEСT ID
    FROM таблица
    WHERE fakt < size AND farm = 1

    где WHERE оставит только те ряды для которых fakt < size AND farm = 1 будет истинно. (TRUE)
    (Не заметил с утра вы хотите выбрать только ID колонку по этому изменил с SELECT * (выбрать все) на (SELECT ID) (выбрать ID))
    Ответ написан
  • Почему выдается ошибка NameError: name 'InlineKeyboardMarkup' is not defined?

    Maksim_64
    @Maksim_64
    Data Analyst
    потому что python не знает что такое InlineKeyboardMarkup на прямую вы его не импортируете, по всей видимости данный класс содержится в модуле types так что по всей видимости код должен выглядеть так types.InlineKeyboardMarkup причем это у вас не в одном месте, так что везде передед Inline вставьте types
    Ответ написан
  • Как работает преобразование времени в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Отступы в вашем коде (2) пробела должно быть 4.
    2. По существу вопроса 1 ns (нано секунда) = 10^(-9). То есть 1 sec / 1_000_000_000 то есть вы перевели в секунды. А ваш код (якобы выдает в (милисекундах)). По факту ваш результат в секундах. %60 - ничего не меняет в вашем коде вы можете убрать (и там где start и там где end естественно) и ничего не изменится. число на выходе вы получите тоже самое.
    3. Правильно использовать
    start = time.perf_counter()
    ваш код
    end = time.perf_counter()

    end - start даст вам продолжительность выполнения кода в секундах.
    Обратите еще раз внимание что ваш код подсчитал в в секундах а вы говорите что милисекундах. print("time taken:", f"{end-start:.5f}ms")
    Ответ написан
    Комментировать
  • Почему выдается ошибка при создании двумерного массива?

    Maksim_64
    @Maksim_64
    Data Analyst
    Запятую пропустил.
    ID = [[42080, 36039, 35505, 33824, 762074],
          ['2.1', '3.78', '4.2', '2.1', '2.8']
         ]
    Ответ написан
    Комментировать
  • Как запустить jupyter notebook из другой папки?

    Maksim_64
    @Maksim_64
    Data Analyst
    очень просто, перейдите в терминале с помощью (cd) в нужную папку и запускайте jupyter notebook или jupyter lab.
    Ответ написан
  • PackagesNotFoundError: The following packages are not available from current channels: - tensorflow-text?

    Maksim_64
    @Maksim_64
    Data Analyst
    С указанного канала он не может произвести установку.
    pip install tensorflow-text должен решить все ваши проблемы имейте ввиду в терминале должен быть активирован base а то установит не в окружение анаконды а в другое. Различные конфликты, что то перестало работать это обычное дело. Мы используем анаконду потому что это супер удобно, надо просто к ней привыкнуть. Абсолютно, все библиотеки в нее входят, но большое количество существующих без конфликтов работают прекрасно. С tensorflow иногда могут быть проблемы но решаемые. Вам необязательно всегда использовать conda install, установщик pip тоже в деле и его можно использовать.
    Ответ написан
    6 комментариев
  • Что такое «base» в начале командной строки?

    Maksim_64
    @Maksim_64
    Data Analyst
    base это ваша окружающая среда, что бы отключить conda deactivate что бы включить обратно conda activate.
    VS code не видит потому что использует другую окружающую среду. ctrl+shift+p запускаем панель управления в ней печатаем python выбираем selected interpreter выбираем тот который использует анаконда и все там прекрасно будет видеть.
    Ответ написан
    1 комментарий
  • Как нейросети обрабатывают текстовую информацию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вы правы каждое слово кодируется. Существует огромное количество методов кодирования для NLP (Natural Language Processing). Основной метод кодирования это представления слова в виде вектора где самая важная часть (что делает NLP возможным) при создании такого вектора слова которые используются в схожих контекстах имеют схожее но не одинаковое векторное представление. Векторная схожесть может быть подсчитана разными способами ну например Евклидово расстояние. В таком случае например вы будете иметь уникальный вектор для каждого слова где вектора с близкими Евклидовыми расстояниями будут означать слова которые используются в схожих контекстах. Что касается формата данных которые получит нейронная сеть, то каждый вектор трансформируется где каждое число трансформируется в число 0 до 1. Существует опять таки несколько техник. самая простая формула (x - min(X)) /(max(X) - min(X)), где x это каждый элемент вектора, ну и соответственно min(X) - минимальный элемент вектора max(X) максимальный элемент вектора. подобная трансформация применяется к каждому элементу каждого вектора. Это примитивный пример, для понимания идеи. Данный вопрос глубокий различные техники кодирования могут быть очень сложны и существуют не мало разных подходов для решения подобных задач. Что касается двоичного входа для нейронных сетей то ответ нет. Нейронные сети могут в том числе получать двоичные значения, но не ограничены этим, также они могут получать дискретные (целые) или числа с плавающей запятой.
    Ответ написан
    Комментировать
  • Python - Есть ли аналог Selenium для работы в браузере с профилем?

    Maksim_64
    @Maksim_64
    Data Analyst
    Selenium позволяет вам управлять браузером не только инкогнито но и с вашим профайлом.
    o = webdriver.ChromeOptions()
    o.add_arguments = {'user-data-dir':'Путь к вашему профайлу на жестком диске'}
    driver = webdriver.Chrome(executable_path="путь к chrome driver", options=o)

    все дальше вы будете вы будете управлять хромом под вашим профайлом.
    Ответ написан
    7 комментариев
  • Симплекс метод нахождение минимума в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    смотрите вы в проблеме не указали условие а только коэффициенты. То есть ваша полная задача как выглядит примерно так:
    min z = -1 * x1 -2*x2 - это функция для минимизации.

    второе условие:
    1 * x1 + 3*x2 >= или <= вы не указали 9
    1*x1 + 1*x2 >= или <= вы не указали 5

    нужно помнить что функция linprog принимает только форму <= Сооответственно, если условие в вашей задаче <= Ваш код работает верно и находит МИНИМУМ, если же условие вашей задачи >= тогда конвертируйте A в numpy и умножьте на -1 то же самое сделайте с b ну а коэффициенты с не трогайте. И вы получите ваши минимумы.
    в ваших результатах вектор x это коэффициенты минимизирующие систему неравенств а значение fun. Это оптимальное значение для линейной функции которую вы минимизируете.
    В итоге если знак в задаче <= оставляем все как есть.
    Если знак в задаче >= умножаем A на -1 и b на -1.
    Все остальное верно.
    Ответ написан
    Комментировать
  • Как правильно обработать статистику опроса о маршрутах транспорта?

    Maksim_64
    @Maksim_64
    Data Analyst
    Первое надо быть уверенными что дизайн опроса был составлен согласно математической статистике. Существует несколько направлений случайно выборки.
    Например:
    1. простая случайная выборка (каждый имеет равный шанс быть выбранным для участия в опросе)
    2. случайная выборка где предварительно участники опроса были разбиты на группы например по возрасту, полу, и.т.п и веса в выборке становятся процентами размера группы от общего количества.
    3. Кластерная например (это когда люди разбиты на группы и потом еще и группы выбираются случайно)
    и т.д.
    Если эксперимент не был организован как нужно то интерпретировать нечего.
    Если я вас правильно понял то выборка была произведена через сайт Госуслуги.
    Авторизация была через Госуслуги, поэтому исключаем вопрос накрутки и подтасовки для данной ситуации..

    Я не считаю данную выборку репрезентативной (она лишь может служить одной из групп). Задаете вопрос на улице (одна группа) на Госуслугах (другая) может опрос по телефону кого нет на Госуслугах (третья).
    Одна и целей статистики это делать выводы имея данные относительно малой группы участников эксперимента о большой. И что бы это осуществить выборка должна быть репрезентативной. В данном случае "большая" группа это люди зарегистрированные на Госуслугах жители Ставрополя а цель делать выводы о мнении Жителей города Ставрополя пользующихся общественным транспортом. То есть дизайн эксперимента построен не корректно и выводов делать нельзя.

    Если я вас не правильно понял и дизайн эксперимента составлен корректно. Какие возможны выводы.
    Самый очевидный 48 маршрут самый популярный (востребованный) 24% процента респондентов проголосовали за него (независимо от результата лучший или худший) то есть он самый востребованный это то место где должна быть проведена дополнительная работа.
    По поводу гипотез да можно у вас есть дистрибуция данных т.е. все необходимые статистики для соответствующих тестов легко находятся из этих данных.
    По поводу весов опять таки да при условии что респонденты были разбиты на группы.
    Но это все актуально если дизайн эксперимента сделан корректно. По этому поводу я высказался вначале.
    Ответ написан
    2 комментария
  • Как создать бот, определяющий сколько дней осталось до дня рождения (при нажатии СТАРТ дата запрашивается в произвольном формате (д-м-г)?

    Maksim_64
    @Maksim_64
    Data Analyst
    вот код решающий проблему. Под api вашего бота построите сами.
    test_date = input("Ввведите дату в формате 'dd-mm-yyyy': ")
    now = datetime.datetime.now()
    then = datetime.datetime.strptime(test_date, "%d-%m-%Y")
    delta1 = datetime.datetime(now.year, then.month, then.day)
    delta2 = datetime.datetime(now.year+1, then.month, then.day)
    
    result = ((delta1 if delta1 > now else delta2) - now).days
    print(f'До вашего следущего дня рождения осталось {result} дней')


    Так же вы не уточнили что делать если день рождение сегодня, это 0 дней или 364 ну легко подработаете как вам будет удобно.
    Ответ написан
    4 комментария
  • Почему ResNet дает слишком хорошие результаты?

    Maksim_64
    @Maksim_64
    Data Analyst
    На практике такие метрики могут означать лишь одно вы тренируете и тестируете на одних и тех же данных. Первое место для проверки
    test_dataset = ASDataset(client_file="raw/client_train_raw.txt", imposter_file="raw/imposter_train_raw.txt", \
        transforms=preprocess)
    train_dataset = ASDataset(client_file="raw/client_test_raw.txt", imposter_file="raw/imposter_test_raw.txt", \
        transforms=preprocess)
    train_dataloader = DataLoader(train_dataset, batch_size=128, shuffle=True)
    test_dataloader = DataLoader(test_dataset, batch_size=128, shuffle=True)

    второе место для проверки естественно сам класс DataLoader.
    ну и третье сами файлы что бы по запарке они не содержали одно и тоже содержимое.

    В каком случае возможны такие метрики ну например данные на которых вы учитесь в них входная переменная это температура в цельсии а то что нужно "предсказать" температура в фаренгейтах. Ваши тестовые данные по структуре такие же но сам датасет алгоритм никогда не видел. На тех данных что алгоритм тренировался он благополучно выучит школьную формулу перевода из цельсии в фаренгейты и справится со 100 точностью. По простой причине в данная проблема состоит только из детерминистической составляющей, т.е вариативность отсутствует. (Данный пример специально примитивен. Это может и Unsupervised Learning это может задача где на вход "features" пойдут десятки переменных и.т.д лишь бы отсутствовала вариативность). Подобные примеры как этот будут выдавать такие метрики.
    Ответ написан
    Комментировать
  • Как узнать изначальную стоимость из стоимости с комиссией?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Используете более удобный способ подсчета стоимости с комиссией: 78 * (1 + 0.03) = 78 * 1.03 = 80.34
    2. Теперь составляем элементарное школьное уравнение
    x * 1.03 = 80.34
    x = 80.34 / 1.03
    x = 78
    Ответ написан
    Комментировать
  • Почему в Python не импортируется библиотека python-docx?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если не каких ошибок во время инсталяции не выдало, то скорее всего причина в том что устанавливает он ее в другое окружение. Например я сейчас установил данную библиотеку используяpip и она работает все нормально. если я запускаю pip show python-docxиз окружения которое использует моя IDE то он мне показывает путь и всю информацию, если же я запущу pip show python-docx из терминала где окружение другое он выдает что данная библиотека не найдена. То есть у вас проблема в окружении (вы установили библиотеку в одно окружение а импортируете из другого)
    Ответ написан
    2 комментария
  • Почему Python adf работает хуже чем R adf?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. По поводу скорости, даже на дефолтных параметрах функции выглядит подозрительно. 10 минут подозрительно. Что влияет на скорость, параметр maxlag, это параметр на сколько максимально наблюдений назад смотрит алгоритм при проведении теста. по умолчанию он равен. 12 * (количество наблюдений / 100 )**(1/4), в вашем случае это 101 наблюдение. Если уменьшить это значение тест выполнится быстрее. Нужно ли это делать? это зависит от контекста проблемы. Например если бы это была финансовая ts с дневной частотой то maxlag = 101, не имеет никакого смысла его можно было уменьшить скажем до 10 а то и еще меньше.

    2. Относительно python vs R. Если брать какие то специфические моменты в особенности тесты, библиотеки R попросту на порядок превзойдут библиотеки python (на сегодняшний момент). Но при создании проекта это далеко не все. Создать поддерживаемую базу кода на python значительно легче чем на R. Коммунити python значительно больше это значит, где будет python а где R скажем через 5 лет, сколько новых фреймворков появится какая новая инфраструктура будет создана и т.д. R крутой нишевый инструмент. И если смотреть на короткие готовые решения скажем в области анализа ts он попросту круче. Если строить проект который включает в себя анализ ts, многие однозначно выберут python.
    Ответ написан
    Комментировать
  • Как распарсить датафрейм в пандас, когда сзначеним одной колонки являются словарь?

    Maksim_64
    @Maksim_64
    Data Analyst
    Поле Tuples имеет dtype, 'Object', что в pandas (малость упрощая) эквивалентно str. В pandas есть aкссесор str для того что бы применять по элементно функции строк python, регулярные выражения и т.д. синтаксис элементарный.
    df['Tuples'].str.some_method()
    распарсите строку и все. Если вы ищете готовое решение, то это во фриланс. Вы должны предоставить код в котором вы пытаетесь решить проблему, но не получается. Направление для начала написания такого кода я вам подсказал.
    Ответ написан
    Комментировать
  • Удаление первых двух цифр после точки?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если тип данных у 0.00009011 str, проблем нет вообще.
    s = '0.00009011'
    first, second = s.split('.')
    result = first + '.' + second[2:-2]
    print(result)

    Если же данные поступают в формате flaot нас ждет проблема, если мы конвертируем float в str мы получим str в научном виде неудобном для парсинга, если же мы будем использовать чистый python для выведения float в научном виде нам нужно зафиксировать количество символов сколько мы будем форматировать псевдо код будет такой
    float_number = 0.0000550034
    print(f"{float_number:.nf}")

    но n для каждого поступления нового числа свое и мы не сможем удалять первые и последние две цифры.
    в библиотеке numpy есть решение данной проблемы
    import numpy as np
    number = 0.00009011
    first, second = str(np.format_float_positional(number,trim='-')).split('.')
    result = first + '.' + second[2:-2]
    print(result)
    здесь в отличии от первого случая тип наших float но проблема все равно решается.
    Ответ написан
    3 комментария
  • Почему в random.choice() ошибка?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вы должны конвертировать словарь, в лист где каждый элемент кортеж и тогда уже случайно выбирать.
    random.choice(list(a.items()))
    Ответ написан
    Комментировать