• Какой алгоритм лучше подходит для определения прибыльной сделки на бирже?

    Maksim_64
    @Maksim_64
    Data Analyst
    А вы уверенны что тюните правильно, при тюнинге вы не должны сравнивать с тестовым сетом, это приведет к классической ошибке утечке тестовых данных. Нужно создавать либо либо третий сет валидации либо использвать кросс-валидацию но с осторожностью (там можно то же набедакурить и получить утечку и на практике никаких 0.7 вы не увидите).

    Если у вас есть алгоритм который например в течении следующих торговых 252 дней, покажет точность 0.7 то вы богаты. 0.7 вероятность успеха при экспонентом росте хватит с головой. (Помните что речь о последовательности) а не а классической классификации или регрессии. Возможно вы учите модель на данных которых у вас не будет в момент прогноза, (классическая ошибка). То есть все ваши данные должны быть: это различные индикаторы (оконные функции, которые с агрегировали статистику за определенное время), например какой нибудь скользящее среднее с окном 10, скользящее среднее с окном 21 и.т.д. Ваши вход X это набор индикаторов, статистик которые будут вам доступны в момент предсказания.

    Там временная последовательность, кросс-валидация делается специальным классом для этого в документации sklearn есть про это в разделе кросс-валидации.

    Ну и наконец про алгоритм лучший алгоритм не существует. Даже если вам удастся создать модель которая зацепит текущее положение дел, и будет КАКОЕ ТО время хорошо работать потом она перестанет никакого универсального хорошего алгоритма не существует. Потому что на ценообразование в разное время в мире влияют разные факторы. В одно время это факторы настроения а все фундаментальные работают слабо, в другое в точности наоборот и т.д. Не ищете лучший алгоритм.
    Ответ написан
  • Как найти такой определенный интеграл?

    Maksim_64
    @Maksim_64
    Data Analyst
    У меня сомнения насчет верности данного выражения все так онлайн калькуляторы его дают. Но, Основную теорему исчисления никто не отменял,
    63eb217502bd3893880425.png То что предлагают онлайн калькуляторы это конечное выражение где все замены сделаны, и далее при подстановке как вы верно заметили мы получим 0. Онлайн калькуляторы в это же время дают правильный ответ приблизительно 1.4 Это потому что не один онлайн калькулятор включая вольфрам ничего не куда не подставляет он использует алгоритмы приблизительного измерения интегралов.

    Я в свою очередь использовал python модуль sympy для интегрирования. При интегрировании неопределенного интеграла я получил другое выражение
    63eb29a5dd3f6302119842.png
    где atan - это arctan а квадратные скобки это абсолютная величина (выражение по модулю). Не смотря на всю некрасивость данного выражения, при подстановке
    F(2*pi) - F(0) оно даст 1.40. F(2*pi) будет 0 а F(0) будет -1.40, ну и соответсвенно 0 - (-1.40) = 1.40

    Что совпадает со всеми онлайн калькуляторами.
    Ответ написан
  • Почему не парсятся картинки?

    Maksim_64
    @Maksim_64
    Data Analyst
    img_item = item.find('picture').find('img').get('data-src')

    Если нужно полный путь до картинки то можешь сделать вот так
    img_item = 'https://a-dubrava.ru' + item.find('picture').find('img').get('data-src')
    Ответ написан
    2 комментария
  • Как решить проблему с selenium python?

    Maksim_64
    @Maksim_64
    Data Analyst
    from selenium import webdriver
    from selenium.webdriver.firefox.options import Options
    
    options = Options()
    options.binary_location = r'абсолютный путь к firefox'
    driver = webdriver.Firefox(executable_path=r' абсолютный путь к geckodriver', options=options)
    Ответ написан
  • Как проверить, находится ли время в нужном диапазоне?

    Maksim_64
    @Maksim_64
    Data Analyst
    обрати внимание у тебя старт 23 часа вечера а end час ночи. а сейчас например около 9 утра по москве, в общем вот
    import datetime
    
    start = datetime.time(6, 30)    # 6:30 утра
    end = datetime.time(13, 30)  # 13:30 дня
    now = datetime.datetime.now().time() 
    
    if (start <= now <= end):
        print("Work!")

    все работает.
    Ответ написан
    Комментировать
  • Как перевести значение 1...8 в 1...100, но в обратном порядке?

    Maksim_64
    @Maksim_64
    Data Analyst
    У вас есть ответы на питоне, так что вы понимаете питон так что написал коротенькую функцию
    def transform_range(old,new,t):
        a,b = old
        c,d = new
        return c + ((d-c) / (b-a)) * (t - a)
    print(transform_range([1,9],[100,1],1))
    Ответ написан
    Комментировать
  • Почему Beutifulsoup находит не то?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну для того кусочка html который вы представили вот так сработает
    whole_part  = html.find('strong',class_='f_Strong').big.text
    float_part = html.find('strong',class_='f_Strong').big.next_sibling.strip()
    print(whole_part + float_part)

    Хотя выглядит все это сомнительно, я бы поискал более стабильное решение возможно парсил бы через regex, в общем для стабильного решения думал бы что то другое. Код работает но мне не нравится.
    Ответ написан
    Комментировать
  • Какая модель машинного обучение тут подойдёт?

    Maksim_64
    @Maksim_64
    Data Analyst
    Идеи только следующие сделать, как положено в таких случаях (и в любых других) EDA (explanatory data analysis) для начала мы же аналитики а не гадалки. Посмотреть графики зависимой переменной от независимых индивидуально, если где то что линейное имеется посмотреть корреляции, и.т.д.

    Задать руководству вопрос (наверное главный) а имеет ли значение интерпретируемость модели или только ее предективная составляющая. Для бизнеса бывает важно интерпретируемость модели.

    Например если мы построим линейную регрессию у нее сильная интерпретируемая сторона. То есть параметры которые выучит модель имеют бизнес контекст (в рамках модели разумеется). Но точность будет например уступать Деревьям решений, но у деревьев нету интерпртируемости параметров она просто будет предсказывать и все.

    Машинное обучение начинается с компромисса между точностью и интерпретируемостью.

    А просто без визуализирования зависимой переменной c независимыми по отдельности, без понимания отношения между независимыми переменными между собой. Давать советы это гадать.
    Ответ написан
    Комментировать
  • Как настроить ML-модель?

    Maksim_64
    @Maksim_64
    Data Analyst
    То что вы пытаетесь сделать это называется тюнинг гиперпараметров. Так не делается конечно. в sklearn есть решения из коробки. При чем это целый этап в машинном обучении по этому целый раздел документации этому посвящен. https://scikit-learn.org/stable/modules/grid_searc...
    Там не только представлены классы но и различные методики которые используются. Изучайте там примеры есть, так что решите свой вопрос.
    Ответ написан
    Комментировать
  • Как рассчитать экспоненциальное скользящее среднее с учётом различных по длине временных интервалов?

    Maksim_64
    @Maksim_64
    Data Analyst
    Без заполнения отсутствующих данных решения нет и быть не может. Экспоненциальное скользящее среднее дает меньше и меньше веса для данных которые отдалены по времени и соответствено большие веса для последних дат (в пределах окна). То есть это всего лишь один из методов нахождение среднего с весами для каждой точки данных.

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

    Все остальное вы верно делаете стандартный слаживающий фактор все так, затем он будет использован для подсчета каждого индивидуального веса w_i = (1 - alpha)^i для каждой ваше точки данных в пределах окна. Просто вы ищете математического решения там где его нет, это вопрос как правильно заполнить недостающие данные.
    Ответ написан
  • Как перебрать все аргументы из функции и их обработать?

    Maksim_64
    @Maksim_64
    Data Analyst
    def is_prime(*args):
        result = []
        for num in args:
            if num == 1:
                result.append(False)
            elif num > 1:
                for i in range(2,num):
                    if (num % i) == 0:
                        result.append(False)
                        break
                else:
                    result.append(True)
            else:
                result.append(False)
        return result
    Ответ написан
    Комментировать
  • Как обеспечить сопоставимость данных с разным объёмом выборки?

    Maksim_64
    @Maksim_64
    Data Analyst
    Очень обычная ситуация называется Sampling Distribution. По порядку. Есть Population параметр (истинный параметр) для нас он неизвестен, мы осуществляем его измерение посредством случайной выборки при этом размер самой выборки не постоянен что вполне нормально. В таких случаях используется Sampling Distribution. Все формулы mean, std, пропорции и.тд. они идут с учетом размера выборки.
    Пример например берем какой нибудь опрос Позитивно ли вы смотрите в будущее? например в один месяц опросили в одном городе 2000 респондентов и получили 30 процентов ответили позитивно. Через 3 месяца мы опросили 1300 респондентов в этом же городе и получили ответ например 50% ответили позитивно. Это абсолютно рабочая ситуация.

    Мы можем произвести гипотезные тесты например это настроение улучшилось, или это объяснимо просто делом случая. Посчитать p-value, интервалы ит.д все как обычно. Ну например в моем примере мы их будем сравнивать используя дистрибуцию разниц пропорций в Sampling Distribution. В общем гуглите Sampling Distribution изучайте там все формулы с учетом размера выборки и потом проводите гипотезные тесты относительно параметра который вы измеряете.
    Ответ написан
    Комментировать
  • Как получить опр класс через методе find_all?

    Maksim_64
    @Maksim_64
    Data Analyst
    soup_all_templates.find_all(lambda tag: tag.name == 'a' and tag.get('class') == ['save-state'])

    По идее так должно сработать, без самого html протестировать то возможности нет, но обычно полное совпадение делают либо как то так либо через regex.
    Ответ написан
  • Как отобразить топ 10 записей в датасете pandas, которые требовали самого длительного времени исправления?

    Maksim_64
    @Maksim_64
    Data Analyst
    df['updated'] = pd.to_datetime(df['updated'],errors='coerce' )
    df['created'] = pd.to_datetime(df['created'],errors='coerce' )
    df['resolved'] = pd.to_datetime(df['resolved'],errors='coerce')

    Это сработает, единственное, в этих колонках кое где есть значения которые он не может распарсить, c этим ничего сделать нельзя посредством pandas. Если они нужны то это отдельно писать парсер для них и изучать каждый кейс. Поэтому для этих кейсов я добавил параметр errors='coerce' там где он не может распарсить он добавил nat. Ну и манипуляции с датами сами я так понял что проблема привести в нужный формат что бы весь мощный функционал pandas был доступен.
    Ответ написан
    Комментировать
  • Как корректно добавить данные в вложенный список в список?

    Maksim_64
    @Maksim_64
    Data Analyst
    a1.append(a.copy())
    И увидите как вы ожидаете, а происходит так потому что вы добавляете ссылку на лист, а нужно добавлять копию, объекта.
    Ответ написан
    Комментировать
  • Как изменить формат куков, import browser_cookie3?

    Maksim_64
    @Maksim_64
    Data Analyst
    import requests
    import browser_cookie3
    import json
    cookies = browser_cookie3.chrome()
    dict_cookies = requests.utils.dict_from_cookiejar(cookies)
    with open("cookies.json", "w") as f:
        json.dump(dict_cookies, f)
    Ответ написан
    Комментировать
  • Как получить текст из тега?

    Maksim_64
    @Maksim_64
    Data Analyst
    for row in soup.find_all('p')[0].text.split('/n'):
        print(row)
    Ответ написан
  • Как транспонировать таблицу в пандасе так, чтобы даты стали группирующей колонкой над всем, кроме времени?

    Maksim_64
    @Maksim_64
    Data Analyst
    import pandas as pd
    #создаю такую же таблицу как у тебя
    df = pd.DataFrame({
        'Дата':['23-01-01','23-01-01','24-01-01','24-01-01'],
        'Часы':['10:00','11:00','10:00','11:00'],
        'Процент':[10.2,11.2,22.2,42.2],
        'Опрошенных':[20,27,40,12]
    })
    #само решение
    reshaped_df = df.pivot(index=['Дата'],columns='Часы',values=['Процент','Опрошенных'])\
        .swaplevel(axis=1).T.reset_index()\
        .pivot(index='Часы',columns='level_1')
    reshaped_df.columns.names = ['Дата',None]
    print(reshaped_df)


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

    Да у тебя порядок [процент, опрошенных, процент, опрошенных] а у меня [опрошенных, процент, опрошенных, процент] на данные сами числа естественно полностью совпадают. Если это играет какую-то роль то столбцовые мульти-индексы сам подправишь. А в остальном полная копия твоей таблицы.
    Ответ написан
    4 комментария
  • Какую библиотеку Python лучше использовать для создания точечных Excel диаграмм с двумя координатами?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вот то что вы ищете с учетом экспорта в excel при чем на всякий случай несколькими способами.
    www.geeksforgeeks.org/python-plotting-scatter-char...
    Ответ написан
    Комментировать