Задать вопрос
  • Какая разница между валидационным и тестовым наборами данных?

    Maksim_64
    @Maksim_64
    Data Analyst
    Смотри в теории машинного обучения есть такая важная тема как Resampling Methods. Это методы случайной выборки из данных которые у тебя есть. Есть два основных это Cross Validation и Bootstrap. Обычно во всяких обучающих материалах используется Cross Validation да и на практике он тоже очень популярен. Что он из себя представляет мы берем например делим случайным образом датасет на 5 частей. Сначала треним на 4 потом тестим на одном что остался, потом на других 4 и тестим на одном что остался и т.д. Так вот каждый такой набор (на котором мы тестим) называется валидационным набором. Например наша метрика MSE мы получим 5 MSE по каждому валидационному набору потом обычно берут среднее по ним.

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

    Используют и то и то. Это инженерное решение и ты будешь видеть оба подхода. Ну и на каких то обучающих историях, ты можешь увидеть отсутствие кросс-валидации и только разбиение train_test_split.

    В идеале все выглядит вот так. Единственное существует огромное количество разных кросс-валидаций.

    64bcbf8e217a9092904980.png

    Это пример где кросс-валидация используется для тюнинга гиперпараметров, но точно также она будет использоваться и для других целей, каждый синий Fold это и есть валидационный набор.
    Ответ написан
    4 комментария
  • Как правильно преобразовать при помощи python данные с json в таблицу mysql (формат db)?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну и нагородил ты тут. При чем здесь mysql если ты в конце используешь sqlite. В общем проблема в том что по всей видимости у тебя твой твой датафрейм содержит питоновский объект dict, а не должен. во первых pandas имеет метод pd.read_json() во вторых есть метод json_normalize() если json содержит "вложенные словари". Приведи в порядок свой датафрейм, и данные запишутся в базу. Не знаешь, как привести датафрейм в порядок, показывай его и отдельным вопросом.
    Ответ написан
  • Как в Python получить список открытых позиций в Binance?

    Maksim_64
    @Maksim_64
    Data Analyst
    Обычно для работы с различными финансовыми данными используют такую структуру данных, как pandas датафрейм (некоторые api даже имеют параметр что то типа returned_type = 'dataframe' ). Там легко выбрать все что нужно, привести типы данных, ответить на любые вопросы например по какой монете самая большая открытая позиция и т.д, в общем все возможные манипуляции там есть + визуализации.

    Например представим нам прислали структуру как у тебя, я сократил (количество ключей для читабельности, а так не важно сколько их там)
    import pandas as pd
    import numpy as np
    data = [
        {'symbol': 'FTTBUSD', 'positionAmt': '0.001', 'entryPrice': '0.0', 'markPrice': '0.00000000'},
        {'symbol': 'ETHUSDT', 'positionAmt': '0.003', 'entryPrice': '1912.07', 'markPrice': '1911.37031373'},
        {'symbol': 'ALPHAUSDT', 'positionAmt': '0.002', 'entryPrice': '0.0', 'markPrice': '0.00000000'}
        ]
    df = pd.DataFrame(data=data, columns=['symbol','positionAmt'])
    df['positionAmt'] = df['positionAmt'].astype(float)
    print(df)

    Все мы выбрали только те ключи которые нам интересны параметр columns, если нужны все просто не указываем его. Теперь мы имеем таблицу с которой, мы можем делать все что угодно, начиная от любых расчетов, записей в различные форматы файлов или бд и даже визуализаций, например код df.plot(kind='bar', x='symbol', y='positionAmt'); Выведет вот такой график64b90126736ad454204003.png
    Это для демонстрации что всего в пару строк мы проходим путь от того что нам прислал binance до анализа.
    C датафреймом, будет легко и быстро задавать все интересующие вопросы.
    Ответ написан
    2 комментария
  • Как получить атрибут linestyle из объекта класса clicer()?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну что то ты совершенно не то пытаешься делать. Если же конечно твоя цель не покопаться в ооп. Стиль линий находится в классе LIne2D. Ты можешь вызвать print(klicker.__dict__) и там увидишь вот такую строчку '_lines': {'event': matplotlib.lines.Line2D at 0x7fe0e34a1a50}, далее если глянуть документацию класса Line2D то мы увидим что 'linestyle' это property.
    Итого что бы решить твой вопрос получаем
    klicker._lines['event']._linestyle Это даст тебе стиль линии. Изменить его можно (но это property) защищенный атрибут то есть можно но не нужно, так или иначе.
    klicker._lines['event']._linestyle = '-' его изменит.
    Ответ написан
    1 комментарий
  • Можно ли совместить Google Colab c Pycharm?

    Maksim_64
    @Maksim_64
    Data Analyst
    google colab нельзя. Jupyter Notebook , пожалуйста. Хоть с Pycharm хоть c VSCode. Google colab и Jupyter Notebook это совершенно разные вещи. Google не даст тебе использовать свои вычислительные мощности не в своем приложении.
    Ответ написан
    Комментировать
  • Как найти Backend-специалиста в стартап, если нет возможности платить ему з/п на данном этапе?

    Maksim_64
    @Maksim_64
    Data Analyst
    Все что нужно для запуска стартапа ищут на рынке венчурного капитала. Венчурный капитал это не только деньги, но и специалисты готовые войти в долю стартапа. У нас рынка венчурного капитала по большому счету нет. Утром деньги, вечером стулья, у нас пока так. Самый большой рынок венчурного капитала в долине, это там стартап = идея, к которой потенциально готовы присоединится люди с деньгами, навыками и т.д.
    У нас же стартап, это ты просто владелец бизнеса который за все платит. Так сказать разные ментальности.
    Ответ написан
    7 комментариев
  • Как заполнять csv файл в зависимости от количества данных?

    Maksim_64
    @Maksim_64
    Data Analyst
    А не нужно пытаться из csv файла делать электронную таблицу. У тебя должны быть известны все имена столбцов. И создан csv, со всеми столбцами, а затем ты в него добавляешь записи в которых определенные значения будут None, по скольку значение не спарсено для данного элемента записи.

    для записи в csv используй pandas. Создай датафрейм со всеми возможными столбцами. Затем у тебя есть коллекция с записями, ну например список с кортежами, где каждый кортеж это запись, содержащая None, где данные не спарсены.
    Псевдо код будет такой (индексы в кортеже должны совпадать с индексами в columns)
    data = [('Ivanov','Ivan',None), ('Petrov','Petr',30),...,('Sidorov',None,None)]
    columns = ['name','surname',...'age']
    df = pd.DataFrame(data, columns = columns)
    df.to_csv('result.csv',header=False, mode='a')
    Создаешь фрейм, и добавляешь его новыми строчками в существующий csv файл. А автоматически добавлять столбцы в csv файл не нужно. Если же знать наперед все потенциальные имена столбцов не возможно, что я себе слабо представляю (ты должен знать что ты хочешь спарсить), то используй json (мороки будет много).
    Ответ написан
    4 комментария
  • Как вызвать метод класса без вызова экземпляра?

    Maksim_64
    @Maksim_64
    Data Analyst
    Обычно методы класса используются для объявления альтернативных конструкторов класса, так называемые factory methods. То есть класс метод обычно возвращает cls(*args, **kwargs) Вызывается просто MyClass.classmeth(*args, **kwargs)
    Вот например в pandas (у тебя был вопрос, значит используешь библиотеку) есть класс DataFrame. Ты можешь создать экземпляр класса DataFrame(data) А можешь использовать методы класса для альтернативного метода создания экземпляра (из другой структруры) DataFrame.from_dict(some_dict) так вот from_dict это метод класса.
    Метод класса он оперирует на уровне класса и не имеет доступа к экземпляру класса. Есть еще статические методы, это по сути python функция которая "связана с классом" но не имеет доступа не экземпляру не к классу.

    В чем у тебя здесь смысл попытки использовать методы класса лично мне не понятно. Потому что обычно вызвав метод класса мы инициализируем экземпляр с динамически измененным (данным методом) состоянием класса. Например мы можем поменять значение атрибута класса. Вот тебе на скорую руку бесполезный пример.
    class MyClass:
        currency = 'Dollar'
        
        def __init__(self, amaunt):
            self.amaunt = amaunt
            
        def __str__(self):
            return f'MyClass({self.amaunt, self.currency})'
        
        @classmethod
        def euro(cls, amount):
            cls.currency = 'Euro'
            return  cls(amount)
    dollar = MyClass(100)
    print(dollar)
    euro = MyClass.euro(100)
    print(euro)

    Если снова вызовешь print(dollar), то он тебе выведет euro. Потому что атрибут класса общий для всех экземпляров оказался измененным.
    Ответ написан
  • Читать книги по программированию в оригинале или перевод?

    Maksim_64
    @Maksim_64
    Data Analyst
    Учи английский нормально, (в день по странице это никуда не годится). Книги лучше читать в оригинале, документации, статьи и т.д. Первый язык который нужно знать в IT это английский.
    Ответ написан
    5 комментариев
  • Какую библиотеку выбрать для отрисовки 3D графики в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Говорю сразу, я в программировании в целом почти что новичок, и опыт с питоном имею чуть больший, чем сдающие с ним ЕГЭ
    Ваша задача для опытных программистов с релевантным опытом.

    Библиотека matplotlib . Библиотека имеет несколько уровней, так вот верхнем уровнем довольно легко пользоваться, у них есть галерея в том числе и 3d графики с готовыми примерами. Но я не уверен что ваш кейс возможно решить на верхнем уровнем библиотеки, а вот использование более низких уровней в matplotlib штука не простая.
    Ответ написан
    2 комментария
  • Какими материалами повысить экспертизу в python?

    Maksim_64
    @Maksim_64
    Data Analyst
    как по мне то книга Fluent Python 2nd Edition. Она довольно продвинутого, а местами очень продвинутого уровня. Если брать статьи то https://realpython.com/ там бывают большие очень качественные статьи. Но как главный ресурс изучения python'a с этой книгой лично для меня ничего не сравнится.
    Ответ написан
    Комментировать
  • Как исправить ошибку в коде?

    Maksim_64
    @Maksim_64
    Data Analyst
    У тебя response.status_code равен 403. То есть html что бы парсить его супом сервер не прислал. Можно добавить ему headers.
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
    response = requests.get(url, headers=headers)
    Теперь сервер пришлет html status_code должен быть 200 (по крайней мере у меня работает). Который можно парсить средствами beatifulsoup. Правильно ли написан парсинг, нет не правильно. Такого класса как ты ищешь там нет. Ну это все самостоятельно, объект сервер пришлет валидный для парсинга.
    Ответ написан
    Комментировать
  • Почему возникает исключение AttributeError при запросе текущего состояния FSM?

    Maksim_64
    @Maksim_64
    Data Analyst
    добавь в конструктор класса super().__init__() Что бы инициализировать атрибуты родительского класса.
    def __init__(self):
        self.command = ""
        super().__init__()
    Ответ написан
    1 комментарий
  • Возникла ошибка Type Error в Python при изучении классов. Где и что в коде не правильно?

    Maksim_64
    @Maksim_64
    Data Analyst
    потерял скобки при создании экземпляра класса. deck = Deck(), Я скопировал, твой код и запустил у себя, там следом еще ошибка, вот в этой строе
    elf.cards[i], self.cards[j] = self.cards[j], self.cards[i]
    говорит list index out of range по всей видимости вот в этой строке j = random.randint(i, num_cards-1) Нужно, добавить -1, что я и сделал тогда все работает.
    Ответ написан
    1 комментарий
  • Как математически понять формулу из Excel?

    Maksim_64
    @Maksim_64
    Data Analyst
    Математически получить элементарно, 2.5% процента привести к подходящему виду для таких расчетов. 2.5% = 0.025. Получим 5000000-1250000-(500000)/(1+0.025) = 3262195,12195
    Ответ написан
    1 комментарий
  • Какие требование к данным для t теста?

    Maksim_64
    @Maksim_64
    Data Analyst
    т.е я правильно понимаю, что распределение исходных данных может быть каким угодно, главное чтобы при бустрапировании выборки средние этого распределения имели нормальное распределение?
    Нет, ты в корне не правильно понимаешь. Если ты осуществляешь случайную выборку из ЛЮБОГО распределенния, берешь СРЕДНЕЕ значение по выборке, так распределение ТАКИХ СРЕДНИХ ЗНАЧЕНИЙ будет всегда нормально, независимо от распределения популяции, при достаточно большем размере выборки. Это CLT (central limit theorem).

    t-test сравнивает средние по группам. Так вот основные ДОПУЩЕНИЯ это.
    1. Независимость
    2. Отсутствие экстремальных величин.
    3. И НОРМАЛЬНОЕ распределение групп по которым считались средние для сравнения.
    Это основные подробнее гугли.
    Ответ написан
    3 комментария
  • Рекуррентная нейросеть для прогнозирования на keras?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну в целом в плане решейпинга, все не правильно. Посмотри размерности своего labels. Это должен быть одномерный массив, длинной соответствующий количеству рядов в массиве features (ты его назвал training data). Потом а на чем ты тренируешься 15 рядов 11 колонок, я про training_data. Это абсурд. Этот код не поправить. Тебе нужен туториал и по нему адаптируюй под свои данные.

    Например вот там google colab c предсказаниями акций с использованием kears.Sequential, ну и комментарии кое какие имеются.

    Также на медиуме есть туториалы с объяснениями (на английском). В общем гугли keras sequential stock prices example и разбирайся по примерам. Это мертвый код, весь решейпинг переписывать надо. Плюс там надо будет тестовые данные хитро готовить, двигать и подавать в модель в цикле. В общем тебе нужен пример.
    Ответ написан
    7 комментариев
  • Как верифицировать российский номер телефона для доступа к GPU в Kaggle?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Формально, colab побыстрее, но при определенных действиях kaggle куда проще в использовании.
    2. Проблем с российскими номерами нет. (верифицируют без проблем)
    3. Подобные проблемы случаются иногда, он и просто google может не верифицировать только купленный номер.
    4. Поменять номер, писать в поддержку, будь уверен что ты пишешь в поддержку правильно, я не припомню, что бы их поддержка не отвечала, например в этом году у меня был верифицированный номер (но он стал не активным и я меня на новый, проблем не возникло.
    Ответ написан
    Комментировать
  • Как с помощью python загружать данные на страницу?

    Maksim_64
    @Maksim_64
    Data Analyst
    "нажимать" это нужен эмулятор браузера selenium.
    Ответ написан
    5 комментариев
  • Как добавить явное условие при обучении модели AI?

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

    Твоя проблема, большая называется "несбалансированные классы". 5 в одном 100 в другом это безнадега, модель по умолчанию имеет большую предрасположенность, что мешает обучению.

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

    Советую изучить вот эту статью на эту тему внимательно, и запастись терпением. Вот эта статья с медиума (открывается только через vpn) по крайней мере у меня, там тоже BERT и тоже решается проблема с не сбалансированным классами. Есть код. Но повторю проблема решается разными стратегиями препроцессинга (первая статья).
    Ответ написан
    1 комментарий