Задать вопрос
  • Почему 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()))
    Ответ написан
    Комментировать
  • Почему не работает код на python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Исправь в соответствующих местах в своем коде на следующее:
    the_sex.lower() == 'мужской'
    the_sex.lower() == 'женский'
    the_aim.lower() =='похудение'
    the_aim.lower() == 'увеличение мышечной массы'
    the_aim.lower() == 'поддержание веса'
    the_fitnes in [1,2,3]
    the_fitnes in [4,5,6]

    Дальше надо смотреть может что то еще всплывет при такой общей конструкции кода проблем избежать трудно.
    Ответ написан
    Комментировать
  • Какие метрики можно рассчитать для анализа данных авиаперевозок?

    Maksim_64
    @Maksim_64
    Data Analyst
    Это очень большой вопрос, который требует большего погружения в проблему. Метрикой в рамках data analyst, называется измерения которые имеют бизнес контекст. Нахождение метрик а в последствии и KPI (Key Performance Indicators), это одна из целей анализа. И просто посмотрев на базу данных не проводя даже EDA (Explanatory Data Analysis) невозможно даже начать отвечать на данный вопрос. Я бы начал c EDA. Затем попробовал бы почитать какие метрики используют в этой сфере.
    Ответ написан
    Комментировать
  • Как вывести ссылки на всех авторов с этой страницы?

    Maksim_64
    @Maksim_64
    Data Analyst
    код рабочий в принципе немного подкорректируй последнюю часть и все
    try:
        print(a.find('a')['href'])
    except TypeError:
        pass

    добавь эту конструкцию в тело цикла for и все проверил выводит ровно все 147 ссылок.
    Ответ написан
    2 комментария
  • Как оптимизировать алгоритм SlopeOne в python?

    Maksim_64
    @Maksim_64
    Data Analyst
    По скольку нет полного датафрейма я не могу полностью сформировать рабочий ответ. Но основываясь на вашем коде вот какая главная мысль.
    Не каких for в pandas абсолютно любой функционал выполним без циклов. (либо напрямую) любой массив в pandas уже векторизован. либо посредством функций apply или agg (первая поэлементно выполнит вами написанную функцию) , вторая агрегирует, то есть на вход получит массив на выход одно число например (mean, std) и.т.д. Но главный вывод не каких циклов pandas устроен так что ты никогда не используешь циклы для обработки данных. (только для работы с индексами иногда применяют циклы), но никогда с данными. Это очень сильно ускорит код.
    Ответ написан
    Комментировать
  • Как вставить строку на индекс, вне зависимости от того существует он или нет?

    Maksim_64
    @Maksim_64
    Data Analyst
    def f(l):
        return l[:2]+['Test']+l[2+1:] if len(l) > 2 else l + ['Test']
    Ответ написан
    Комментировать
  • Как работает random.choices с weights?

    Maksim_64
    @Maksim_64
    Data Analyst
    Что бы трансформировать weights в вероятности вы каждый элемент делите на сумму weights. В вашем случае weights = (1,3,7,9,80). ваш пространство выборки a = [1,2,3,4,5], соответственно
    1 : 1 / sum(weights)
    2 : 3 / sum(weights)
    3 : 7 / sum(weights)
    4 : 9 / sum(weights)
    5 : 80 / sum(weights)

    Интерпретация: При большом количество реализаций эксперимента (большое количество выборок) в данной функции регулируется параметром k, ваша относительная частота будут СТРЕМИТСЯ к заданным вероятностям но не ПОЛНОСТЬЮ им соответствовать.
    Например:
    random.choice(['Red','Black'],[5,25], k=100)
    вы получаете
    Red: 5/30 = 1/5
    Black: 4/5
    за 100 реализаций эксперимента вы ОЖИДАЕТЕ.
    Red: 100 * (1/5) = 20
    Black: 80
    вам на ГАРАНТИРОВАННЫ 20 и 80. Могут быть близкие к этим значения, могут быть 20 и 80. То есть количество будет варьироваться возле этих значений.
    Ответ написан
  • Кол-во пройденных дней, часов, минут и секунд?

    Maksim_64
    @Maksim_64
    Data Analyst
    import datetime
    past = datetime.datetime(2022,11,25,16,55,32)
    now = datetime.datetime.now()
    mappings = {'Дней: ':60*60*24, 'Часов: ':60*60, 'Минут: ': 60,'Секунд: ':1}
    diff_in_seconds = int((now - past).total_seconds())
    result = ''
    for key, value in mappings.items():
        result += key + str(diff_in_seconds // value) + ', '
        diff_in_seconds %= value
    print(f'Разница между {past} и {now} состовляет {result}')

    Для примера я взял дату несколько дней назад и дату момента запуска скрипта, и вывел полную разницу, дальше подгоните под свои нужды и все.
    Ответ написан
    Комментировать
  • Не могу решить задачу на подбрасывание монетки, что делать?

    Maksim_64
    @Maksim_64
    Data Analyst
    import random
    
    result = {}
    for n in range(10):
        experiment = []
        while True:
            experiment.append('О' if random.random() < 0.5 else 'Р')
            for i in range(len(experiment) - 2):
                if (experiment[i] == experiment[i+1]) and (experiment[i+1] == (experiment[i+2])):
                    break
            else: 
                continue
            break
                
        result[f'Попытка Номер {n+1}'] = experiment
    print(result)


    среднее количество попыток допишите сами. Эксперимент сгенерирован результаты в словаре result, так что это не составит труда. Обратите внимание на else, continue и последний break. Первый break принадлежит циклу for, затем else принадлежит тоже циклу for (именно так) он запускается если первый break не состоялся внутри цикла for, затем мы имеем continuous который возвращает нас на начало цикла while и код запускается снова, когда наконец то условие выполнено внутри цикла for срабатывает первый break (мы вышли из цикла for) затем else и continuous игнорируются ( потому что else принадлежит к for не к if обращаю ваше внимание еще раз ) и наконец последний break прекращает вечный цикл while. Поработайте с кодом, что бы почувствовать механику.
    Ответ написан
    Комментировать
  • Python как добавить 3 часа к времени?

    Maksim_64
    @Maksim_64
    Data Analyst
    вы должны использовать объект timedelta.
    import datetime
    print((datetime.datetime.now() + datetime.timedelta(hours=3)).strftime("%d.%m.%Y %H:%M:%S"))
    Ответ написан
    Комментировать
  • Как преобразовать число в дробное?

    Maksim_64
    @Maksim_64
    Data Analyst
    попробуй поработать с позицией первого не нуля вправо или влево от точки алгоритмически.
    import math
    def convert(a,b):
        p = math.floor(math.log10(a))
        if a < 1:
            result = '0.' + str(abs(p+1)*'0') + str(b)
            return result
    print(convert(0.0601,535))
    print(convert(0.00601,535))
    print(convert(0.000601,535))

    ключевая строчка кода
    p = math.floor(math.log10(a))
    она дает тебе позицию отрицательную или положительную.
    Я думаю такая подсказка будет полезной, маленькая функция для примера работает не со всеми случаями (она представлена для примера). Но зная позицию первого не нуля от точки отрицательную в право и положительную влево, можно решить данную задачу.
    Ответ написан
    1 комментарий
  • Что не так с кодом на Pyhton?

    Maksim_64
    @Maksim_64
    Data Analyst
    В принципе по логике все верно, единственно в функции print нужно задать параметр end=' ', что бы вывод был в одну строку через пробел.
    n = int(input("Введите длину массива: "))
    mas = input("Введите элементы массива через пробел: ").split()
    for i in range(0,n,2):
        print(mas[i],end=' ')
    Ответ написан