Задать вопрос
  • Можно ли сравнить два изображения между собой на похожесть?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Определить для себя что ты понимаешь под похожестью. В комментарии верное подмечено.
    2. Закодировать изображения в тензорное представления.
    3. Сравнивать дистанции между двумя тензорами евклидова дистанция, cosine similarity и т.д.

    Сейчас даже базы есть, я такую использовал в проекте недавно (chroma db), которые оптимизируют поиск ближайшей дистанции по изображениям / текстам. То есть пишешь запрос входной эмбединг а он тебе выдает запись с наименьшей дистанцией, к данному эмбедингу.
    Ответ написан
    Комментировать
  • Как можно реализовать решение с обратной индексацией?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну поработай с индексом да и все.
    Самое примитивное
    def __getitem__(self, index):
            try:
                return self.data[-(index+1)]
            except IndexError:
                return None
    Ответ написан
    Комментировать
  • В какую структуру лучше всего сохранить небольшие графы/деревья (2-100 вершин)?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну если не большие, что мешает граф хранить в графе. Обойтись без преобразования, а использовать сереализацию. Модуль pickle, или методы сереализации предусмотренные библиотеками, которыми ты пользуешься для работы с графами. Например самая популярная библиотека для работы с графами (networkx) естественно имеет методы сереализации write_graphml. Поддерживает разные форматы и т.д.
    Ответ написан
    Комментировать
  • Если любой из элементов массива слов имеется в строке - выдать true, как?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Проходишься по своему массиву и спрашиваешь присутствует ли твое слово в тексте который ввел пользователь.
    2. В результате получаешь массив булевых значений True False
    3. Если в массиве есть True, значит в тексте введенным пользователем есть слово из твоего массива слов.

    Детали реализации: any и list comprehension
    Ответ написан
    Комментировать
  • Почему Python не видит библиотеку?

    Maksim_64
    @Maksim_64
    Data Analyst
    Оставить на денек, другой SpeechRecognition в покое, и познакомится с концепцией виртуального окружения.
    Ответ написан
    4 комментария
  • Почему объект копируется, а не создаётся заново?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Понять разницу между объектом класса, и объектом экземпляра класса.
    2. Понять разницу между атрибутами класса и атрибутами экземпляра класса.
    Ответ написан
    Комментировать
  • Как хранить списки в бд?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если использовать реляционные базы данных то делить на таблицы и описывать связи, предварительно избавившись от списков, на уровне пандаса, переформатировав (распрямив) датафрейм, метод explode например поможет избавится от списков. В целом одна и та же информация, может быть представлена в разном виде и в реляционных бд предпочтительнее (но не обязательно) иметь простые типы данных.

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

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

    По итогу, когда ты собираешься хранить данные, ты их в дальнейшем будешь извлекать и анализировать. Работать с колонкам содержащими вложенные списки, можно, но не так эффективно, как с правильно организованными данными, будь уверен, что ты хранишь в колонках вложенные списки от отсутствия альтернатив.
    Ответ написан
    Комментировать
  • Почему else игнорирует существование if?

    Maksim_64
    @Maksim_64
    Data Analyst
    Проблема в типах данных cofe и flor - строки, а должны быть int.
    cofe = int(input('Сколько вы хотите кофе?: '))
    flor = int(input('Введите на каком вы этаже:'))

    Исключения не выходит из-за логического and if cofe in [1, 2, 3] and flor >= 100: он оценивает первое условие как False и не переходит ко второму.
    Ответ написан
    1 комментарий
  • Стоит ли идти на практику в компанию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Совместить плюсы первого и второго варианта. Идти на стажировку и развиваться самому. Улучшением текущих и получением новых навыков, занимаются и уже работающие опытные специалисты, а у тебя все еще впереди. Зовут в какую то компанию иди, уйти можно всегда, плохо когда никуда не зовут.
    Ответ написан
    Комментировать
  • Как хранить данные таблицы содержащие описание множества товаров без ошибки "ValueError: All arrays must be of the same length"?

    Maksim_64
    @Maksim_64
    Data Analyst
    Все очень просто, когда ты пытаешься создать фрейм, у тебя списки разной длинны получаются. Вот код который выдаст точно такую же ошибку.
    (
        pd.DataFrame({
            'A':[1,2,3],
            'B':[100,200]
        })
    )

    А вот исправленная версия кода
    (
        pd.DataFrame({
            'A':pd.Series([1,2,3]),
            'B':pd.Series([100,200])
        })
    )
    Не достающий элемент он заполнит пропущенным значением.
    Ответ написан
    1 комментарий
  • Как настроить del в python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну класс чуть переделать желательно бы. У тебя аргументы хранятся как кортеж (не мутабельный объект). Сменить для начала на список (мутабельный тип), и затем определить подходящий дандер метод. Например как то так.
    class MyClass():
        def __init__(self, *args):
            self.args = list(args)  
    
        def __delitem__(self, key):
            if key in self.args:
                self.args.remove(key)
    
    example = MyClass('ab', '12', 100, None)
    print(example.args)
    del example['12']
    print(example.args)

    Ну и там покрыть исключением если ключа нет и т.д.
    Ответ написан
    1 комментарий
  • Как узнать какое будет следующее число?

    Maksim_64
    @Maksim_64
    Data Analyst
    "Справедливая" фифти/фифти монетка подброшена 4 раза, так получилось, что все 4 раза выпал орел. Что же будет, при 5 броске? все также фифти/фифти. То что было "до" никак не влияет на вероятность "следующего" события.

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

    Maksim_64
    @Maksim_64
    Data Analyst
    Решений миллион.
    1. написать функцию для работы с питон списком, которая будет будет возвращать, True,False.
    2. Применить один из многочисленных методов фильтрации.

    Например
    df = pd.DataFrame({
        'userID':[25,188,79],   
        'goalsID':[[1,2,4,5],[3,6],[1,9]]
    })
    (
        df.loc[lambda x:x['goalsID'].apply(lambda x: 3 in x)]
    )
    Ответ написан
  • Как преобразовать тип данных столбца в Pandas?

    Maksim_64
    @Maksim_64
    Data Analyst
    Преобразование типов здесь не при чем.

    вот здесь ты print(df[['market_cap'] > 0])
    Ты выполняешь операцию не с массивом а со списком. Списки ['market_cap'] > 0 такого не поддерживают. Если ты хотел выбрать подсет фрейма где капитализация больше нуля то пропустил df еще один.

    print(df[df['market_cap'] > 0])
    Ответ написан
    1 комментарий
  • Как предсказать отработку сетапа на бирже?

    Maksim_64
    @Maksim_64
    Data Analyst
    Это задача на классификацию?

    Да. Так как у тебя таргет дискретный [Стоплосс, Профит, Безубыток,Таймаут]

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

    Какие слои и структуры?
    Рекурентная нейронная сеть, функция активации relu, кроме последнего слоя там softmax или что типа того что бы можно трансформировать вывод в вектор вероятностей.

    Для обучения планирую скармливать нейронке например 1000
    Без понятия тюнинг гиперпараметров, а batch size это один из параметров которые тюнятся, делаются после с наблюдением поведения других метрик на тренировочном и тестовом сете.

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

    Maksim_64
    @Maksim_64
    Data Analyst
    Колебаний относительно чего? пусть будет некое число x0. pandas псевдокод будет такой
    s - Series с временными диапазонами
    x0 - относительно чего колебания
    ((x0 - s).abs() <= 3).mean() * 100 Это количество в процентом отношении значений которые отклоняются от x0 в пределах +-3 секунд
    Ответ написан
    Комментировать
  • Как исправить: TypeError: bad operand type for unary ~: 'type'?

    Maksim_64
    @Maksim_64
    Data Analyst
    Применяешь где то оператор ~ к типу который не поддерживает его.
    Либо ты в том месте ожидаешь другой тип, данных, ну либо попробуй заменить битовое отрицание, на логическое not (глупость, в комментарии меня поправил Vindicar ). ~ - инвертирует побитовое представление числа, в случае если специальным методам он не был переопределен для кастомных объектов. not- делает bool и затем инвертирует значение.
    Ответ написан
  • Почему предсказания дерева решений не совпадает с ожиданием?

    Maksim_64
    @Maksim_64
    Data Analyst
    А почему ты решил, что вероятности должны совпадать с твоей реализацией.
    predict_proba из scikit-learn не в коем случае не считает вероятности а калибрует их. И он вполне может это делать плохо.

    DecisionTreeClassifier в принципе не является детерминистическим, результаты могут отличаться (не обязательно, но могут.
    Ответ написан
  • Как стартовать в аналитике "гуманитарию"?

    Maksim_64
    @Maksim_64
    Data Analyst
    Все "узкие" позиции для входа в IT это всегда тяжело. На такие специализации, как правило нет джунов или к ним требования и опыт и все остальное.

    1. Английский
    2. Python
    3. статистика, теория вероятности, ML стек в python.
    4. Учится по книгам.
    5. Пробоваться всюду, работу своей мечты потом, найдешь, спустя годы.
    Ответ написан
    2 комментария
  • Как решить проблему с could not convert string to float?

    Maksim_64
    @Maksim_64
    Data Analyst
    Что значит не обрабатываешь, вот
    print(df.replace('?',np.nan).astype(float) Здесь во все фрейме делаешь замену а потом весь фрейм пытаешься привести к типу данных float.

    Работай с "числовым подсетом датафрейма".
    или заведи отдельную переменную приведи подсет к флоатам и потом группируй. Типа такого
    df_ = df.loc[:,[nuimeric_column1,numrec_column2]] = df.loc[:,[nuimeric_column1,numrec_column2]].replace('?',np.NaN).astype(float)
    и затем группируй и т.д.

    Или хочешь чейнить, используй assign рассматривай все колонки по отдельности, при сложныех манипуляциях, которые требуют индивидулаьного подхода, к каждой колонке по отдельности так делают.
    (
        df.assign(
            numeric1=lambda x: x['numeric1'].replace('?',np.NaN).astype(float),
            numeric2=lambda x: x['numeric2'].replace('?',np.NaN).astype(float)
        )
        .groupby('Category')
        .agg(['mean','median'])  
    )
    Ответ написан
    Комментировать