Задать вопрос
  • БД (хранилище) для документов с GUI, ранжированием и поиском. Какие фреймворки или готовые решения есть?

    Maksim_64
    @Maksim_64
    ML Engineer
    1. pandas для манипуляций с данными и построения пайплайна.
    2. nltk + scikit-learn для работы с текстом (ранжирования, трансформации в векторное пространство, алгоритмы сравнения для различных метрик и т.д)
    3. plotly+dash (для веб интерфейса с возможностью собрать красивый фронт на python (react, html, css) на все это есть python обертка) + dash bootstrap components коллекция крутых готовых компонентов.

    Примеры готовых качественных веб приложений Галерея код есть на гитхаб, там же найдешь.

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

    Maksim_64
    @Maksim_64
    ML Engineer
    Не закрыл файл на гарантировал, очистку буфера и как следствие не гарантировал, что его содержимое целиком окажется в файле. Как по мне это абсурд, что это вообще, работает без исключений или хотя бы предупреждений.
    Ответ написан
    4 комментария
  • Взаимодействие методов внутри класса?

    Maksim_64
    @Maksim_64
    ML Engineer
    далее создал 2 бойца (боец 1 и боец 2) и присвоил им класс fighter

    Ты создал два экземпляра класса fighter (в python принято давать имена классам с заглавной буквы) fighter-> Fighter.

    далее я бойцом 1 применил метод удар на бойца 2
    Это тебе так захотелось, в описании метода класса 'udar' об этом нет слова. Твой класс умеет бить только собственный экземпляр точнее имеет намерение ударить себя (так как атрибут здоровья не обновляется)

    Нужно передавать экземпляр другого класса, в общем измененная версия твоего кода
    class fighter:
        def __init__(self,name=None,hp=None,dmg=None,):
            self.name = name
            self.hp = hp
            self.dmg = dmg
    
    
        # def udar(self,hp,dmg):
        #     print("Наносит урон с руки")
        #     rep = self.hp - self.dmg
        #     return "Осталось здоровья: " + rep
    
        def udar(self,other):
            print(self.name + " наносит урон с руки" 'c уроном ' + str(self.dmg))
            other.hp = other.hp - self.dmg
            return "У " + other.name + " осталось здоровья: " + str(other.hp)
    boec = fighter("вася",200,22)
    boec2 = fighter("bob",100,19)
    boec.udar(boec2)
    Ответ написан
    8 комментариев
  • В чем преимущества bs4 перед регулярками?

    Maksim_64
    @Maksim_64
    ML Engineer
    bs4 и regex -нельзя сравнивать. bs4 это интерфейс для работы с html, xml документами, а regex - это инструмент для работы с паттернами в тексте.

    Обычно их используют вместе, я не припомню что бы я использовал BeautifulSoup без регулярок.
    HTML - структурированный документ. Для эффективного взаимодействия со структурой есть BeautifulSoup для эффективного взаимодействия с элементом структуры текстом есть regex.
    Ответ написан
    Комментировать
  • Как работать с GitHub средствами python?

    Maksim_64
    @Maksim_64
    ML Engineer
    Ответ написан
    Комментировать
  • Python цикл while и random?

    Maksim_64
    @Maksim_64
    ML Engineer
    1. Отступы.
    if a == b:
    print("Костии стали равны с  " , c)


    2. У тебя здесь белее одной переменной 'с' ты ее объявил на английской раскладке а вот здесь print("Костии стали равны с " , с) она на русской (другая переменная которой нет).

    Остальное это не ошибки по смыслу отрегулируй, что внести в тело цикла, а что вынести. Например вот это input("Нажмите ентер для выхода") не имеет никакого смысла.
    Ответ написан
    2 комментария
  • Реально ли трудоустроиться на работу после курсов it?

    Maksim_64
    @Maksim_64
    ML Engineer
    1. Что наличие курса станет поворотным событием в твоей карьере рассчитывать не стоит.

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

    3. Если только начинаешь, то на пару лет упорного труда без работы, ты должна быть готова. И это будет успех если через два года попадешь на работу.
    Ответ написан
  • Как регулярными выражениями оставить только цифры?

    Maksim_64
    @Maksim_64
    ML Engineer
    сделай замену. r'\D', '',все что не цифра, на пустую строку.
    Если конечно ты уверен, что все они выглядят так как у тебя в примере, если например присутствуют плавающая точка или запятая или число отрицательное, то получишь ошибку, неприятную.
    Ответ написан
    Комментировать
  • Как с помощью assign добавить в фрейм данных столбец, в котором будут индексы трех максимальных элементов из другого столбца той же записи?

    Maksim_64
    @Maksim_64
    ML Engineer
    Все довольно просто, на будущее если запутался, то предоставляй:
    1. Входные данные (фрейм)
    2 . Что хотелось бы получить.
    3. Ну и попытку решения (ее ты предоставил, пытался вопросов нет).

    Сделаю за тебя фрейм со случайными данными и затем решу вопрос.
    df = pd.DataFrame({
        'A':[np.random.randint(1,100,20) for i in range(5)],
    })

    Решение
    result = (
        df.assign(
            three_largest = lambda x: x['A'].apply(lambda x: pd.Series(x).nlargest(3).tolist()),
            three_largest_index = lambda x: x['A'].apply(lambda x: pd.Series(x).nlargest(3).index.tolist())
        )
    )

    Если захочешь разложить свои списки на отдельные колонки то используй следующий трюк.
    result[['one','two','three']] = pd.DataFrame(result['three_largest_index'].tolist(),index=result.index)
    result
    Как видишь все в разных вариациях, как удобно.
    Ответ написан
    Комментировать
  • Как правильно заменить значения в столбцах фрейма данных python pandas?

    Maksim_64
    @Maksim_64
    ML Engineer
    df = pd.DataFrame({
        'A':[[5,6,24,3],[23,11,15],[3,100]],
        'B':np.NaN
    })
    (
        df.assign(
            A_max =lambda x: x['A'].apply(max),
            B_indexmax =lambda x: x['A'].apply(lambda x: pd.Series(x).idxmax()),
        )
    )

    Пару слов.
    1. Для замены. Вместо A_max, B_index_max меняем на А и B и меняем их местами сначала B потом A. Так делать плохая практика. Не нужно тебе A и B колонки просто выкинь их отдельно, а эти переименуй.

    2. loc мощный инструмент, для выборок он у меня наверное почти в каждом запросе присутствует но для выборок Для процессирования колонок плохая практика
    df.loc[:,[колонка]] = массив, вот так старайся не делать. Используй assign, как у меня в примере.
    Ответ написан
    Комментировать
  • Какие азы нужно знать перед тем как начать изучать программирование?

    Maksim_64
    @Maksim_64
    ML Engineer
    Не нужно ничего, начинай программировать. Проблемы надо решать по мере их поступления, а не придумывать их самому.

    Любой толковый учебник для начинающих , будет тебя знакомить с азами, через программирование.
    Ответ написан
    Комментировать
  • Как задетекировать изменение вероятности успеха в испытаниях Бернулли?

    Maksim_64
    @Maksim_64
    ML Engineer
    Если одним словом то тестирование гипотез:
    Например Cumulative Sum (CUSUM) Control Charts.
    1. https://www.ncss.com/wp-content/themes/ncss/pdf/Pr...

    2. https://www.osti.gov/servlets/purl/1374023 (с vpn)

    3. https://en.wikipedia.org/wiki/Sequential_probabili...

    4. Чего нибудь байесовое обязательно тоже имеется (погуглить)
    5. Огромное семейство Likelihood тестов тоже подойдет, p-это всего лишь параметр (погуглить).

    Будешь работать с CUSUM (это моя рекомендация для решения проблемы) там тоже тест статистика для кумулативный суммы и т.д. В конечном счете все сводится к тестированию гипотез.
    Ответ написан
    1 комментарий
  • Стоит ли начинать учить программирование с Golang?

    Maksim_64
    @Maksim_64
    ML Engineer
    1. Начинать с go не нужно. Это довольно нишевый язык, по которому будет крайне тяжело найти первую работу. Обычно go специалисты, это программисты с опытом которые в определенный момент добавляют его в свое портфолио.

    2. Платные курсы тоже не нужно, стоят они не дешево и это плохая инвестиция денег, учись бесплатно, а денежки пусть будут.

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

    Maksim_64
    @Maksim_64
    ML Engineer
    Вся твоя затея не имеет никакого смысла. KNeighborsClassifier - использует по умолчанию Minkowski metric, что эквивалетно для p=2, обычной Евклидовой дистанции.

    Евклидова дистанция не имеет никакого смысла - для категориальных переменных на вход, она мощный инструмент для непрерывных и бесполезный для категориальных. А у тебя именно категории stone, shears и paper которые закодировал ты правда, совершенно не правильно. Тебе тут нужен OneHotEncoder, а так ты как бы говоришь алгоритму что paper (3) чем то отличается по весу в модели чем stone (1) . В целом можно работать с так называемой Hamming distance, которая позволяет KNeighborsClassifier получать категории на вход, но scikit-learn не поддерживает ее из коробки, то есть ее можно добавить как custom metric.

    Если ты собираешься чему то научится то:
    1. Изучи примеры с объектом pipeline он позволяется осуществлять трансформации на тестовом и тренировачном датасете, внутри пайплайна.

    2. Для любого алгоритма для этой задачи необходим OneHotEncoder его прям в пайплайн встроешь. Примеры в доках scikit-learn имеются.

    3. По скольку у тебя категориальные переменные на вход, то используй алгоритмы которые базируются на деревьях решений. Все они есть в scikit-learn.
    Ответ написан
    2 комментария
  • Что вы делаете, если застряли на задаче?

    Maksim_64
    @Maksim_64
    ML Engineer
    Все просто, ты взял задачу себе не по уровню, по этому и нет прогресса. Браться надо за то что для тебя выполнимо в данный момент и так шаг за шагом расти по не многу.
    Ответ написан
    Комментировать
  • Палиндром задачка с leetcode?

    Maksim_64
    @Maksim_64
    ML Engineer
    Наверняка возвращать нужно не строковые значения, а булевые. True, False.
    Ответ написан
  • Как посчитать и вывести уникальные значения колонок dataframe, которые имеют тип коллекции/списка?

    Maksim_64
    @Maksim_64
    ML Engineer
    С помощью цикла однозначно не придется. Встроенный инструмент есть, даже много.
    чтобы мне достать из этих столбцов уникальные значения
    Вот это не совсем понятно, может имелось ввиду из списков, уникальные, и что значит достать.

    Если у тебя твои данные в списках то можно использовать explode.
    (
        pd.DataFrame({
            'ID':[1,2],
            'genres':[['Strategy'],['Fightening','Adventure','Arcade']]
        })
        .explode('genres')
    )
    Затем unique (уникальные) value_counts (посчитать каких и сколько у тебя там) или все что угодно, опций огромное количество. Обрати внимание структура фрейма не рушится (поведение колонки ID).

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

    Maksim_64
    @Maksim_64
    ML Engineer
    Ты перепутал, производную и касательную линию (tangent line). Графический калькулятор похож на desmos загугли tangent line desmos. Полно видео как построить. Ну и почитай про взаимоотнношения касательной и первой производной.
    Ответ написан
    1 комментарий
  • Как улучшить выводимый граф?

    Maksim_64
    @Maksim_64
    ML Engineer
    Networkx - крутая библиотека, но графики это не ее основное направление, вся суть Networkx это интерфейс для алгоритмов, связанных с графами, визуализация лишь приятный бонус.

    Подобная история весьма распростронена для python экосистемы, например stasmodels (статистические модели) тоже имеет визуализацию и тоже matplotlib в качестве бэкенда, sympy крутейшая библиотека для работы с математическими выражениями тоже имеет в дополнение визуализацию и тоже matpltolib в качестве бэка.

    У подобных кейсов возможности визуализаций крайне ограничены.

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

    plotly из коробки имеет огромное количество эффектов которые улучшат читабельность графа, зум можно будет легко добавить и иные эффекты. Matplotlib все это тоже позволяет, просто с позиции реализации это на много сложнее.

    гугли примеры networkx + plotly и стратегия твоя это визуализация не средствами networkx а средствами сторонней библиотеки, я предложил plotly с позиции временных затрат на реализацию.
    Ответ написан
    1 комментарий
  • Какую ошибку выдаёт код для тг бота?

    Maksim_64
    @Maksim_64
    ML Engineer
    По совету из форума вот отсюда https://community.openai.com/t/typeerror-openai-in...
    OpenAI(api_key="Your API Key")

    Ну а по смыслу ошибки, идет инициализация класса первым аргументом там self, второй твой позиционный который не предусмотрен, согласно совету из форума должен быть именованный. Для примера попытка инициализировать вот такой кастомный класс выдаст точно такую же ошибку.
    class A:
    
        def __init__(self,*, key=None):
            self.key = key
    
    a = A('12345')
    Ответ написан
    Комментировать