• В чем логика решения задачи Флавия?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вот маленькая статья на хабре по твоей задаче. Там нет такого кода, как у тебя. Еще и комментарии полезные имеются.
    Ответ написан
    Комментировать
  • Как работает в данном примере декорирование?

    Maksim_64
    @Maksim_64
    Data Analyst
    Не очень понятно, а что не понятно. Передается объект класса в функцию, ты зачем назвал параметр функции func а передаешь туда объект класса. Вот здесь result = func(*args, **kwargs) ты инициализируешь экземпляр класса, затем возвращаешь его да и все, MyClass у тебя стала функцией которая возвращает экземпляр класса. Ну добавь там чего нибудь например.
    def f():
        return 100
        
    def decor(func): 
        def _wrapper(*args, **kwargs):
            result = func(*args, **kwargs)
            result.complex_calculation = f
            return result
        return _wrapper 
    
    class MyClass:
        def complex_calculation(self):
            return 42
    
    MyClass = decor(MyClass)
    
    my_obj = MyClass()
    
    print(my_obj.complex_calculation())

    Твой метод вернет, не 42, а 100. Или объяви метод какой-нибудь которого нет.
    Ответ написан
  • Можно ли предсказывать несколько признаков одной моделью нейронной сети?

    Maksim_64
    @Maksim_64
    Data Analyst
    Конечно можно. Это называется Multitarget Classification или Mixtarget classification.
    Смотри в целом. Тип скрытого слоя + Конфигурация размерностей последнего слоя + подходящая функция активации + подходящая loss функция позволяет конфигурировать практически все что угодно.

    Гугли neural networks Multitarget Classification, это не посредственно то что ты ищешь.
    Например вот https://towardsdatascience.com/predicting-mixed-ta..., Но лучше гугли сам. И приходи с более конкретными вопросами, может надо будет помочь сконфигурировать слои правильно например или препроцессинг сделать.
    Ответ написан
    Комментировать
  • Как и где учить математику, если вкатываешься в нейросети?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотри если речь о нейронных сетях именно то как таковой сложной математики там нет. Что такое нейронная сеть это последовательность слоев. Каждый слой представляет из себя нелинейную геометрическую трансформацию в многомерном пространстве. Для лучшего понимания и изучения можешь взять двумерные данные. Взять четыре точки квадрат с координатами. У тебя получится матрица A размерность (4, 2). Так что происхдит в скрытом слое.

    relu(dot(A, W) + b) - все как бы это не звучало но это ровно то что происходит внутри скрытого слоя. Мы инициализируем случайную матрицу весов размерностью которая подходит для математического умножения матриц. При математическом умножении матриц порядок важен и правило следующее количество колонок в первой матрице должно совпадать с количество рядов во второй матрице. Если матрица A у нас (4,2), то матрица весов у нас должна быть (2, любое значение) пусть будет 16 например. И результатом будет матрица (4, 16)
    Например
    A = np.array([[0,0],
                  [0,2],
                  [2,2],
                  [2,0]])
    W = np.random.uniform(-1,1,size=(2,16)
    result = np.dot(A,W)
    Здесь мы осуществили геометрическую трансформацию, мы получили представление данных в 16 мерном пространстве. Далее мы просто прибавляем также случайно инициализированный вектор b в подходящей размерности и все. Все эти трансформации линейны. Не линейность достигается функцией активации например relu то есть весь наш код будет
    import numpy as np
    
    A = np.array([[0,0],
                  [0,2],
                  [2,2],
                  [2,0]])
    W = np.random.uniform(-1,1,size=(2,16))
    b = np.zeros(16)
    result = np.dot(A,W) + b
    np.maximum(result,0)
    Все теперь у нас не линейная геометрическая трансформация. Затем посредством обратного распространения ошибки будет находится полезные геометрические трансформации, и будет происходит настройка значений (параметров модели) в наших матрицах весов (которые минимизируют loss функцию), то есть обучение модели. Это то что происходит в одном слое, последний слой там не много по другому, в зависимости от задачи и размерности которую мы хотим получить.
    Что выучить. Линейная алгебра Khan Academy. Обратное распространение ошибки осуществляется за счет подсчета градиента. Лучше начать с Single Variable Calculus курсы Calculus AP и ВС там же Khan Academy, и затем Multivariable Calculus Khan Academy. Все для нейронных сетей этого хватит, статистика как таковая для нейронных сетей на прямую не требуется, скорее для общего понимания и косвенно там выборку осуществить. Эти курсы шикарные и их достаточно для нейронных сетей. Для других алгоритмов их будет не достаточно. Ну и надо иметь ввиду, что у нас не обязательно математическое умножение тенсоров второго порядка (матриц), у нас могут быть конволюции. Пример что я привел это самый распространенный случай. Так что основы линейной алгебры, дифференцирование функции одной переменной затем многих (именно они и нужны), не пытайся сразу в дифференцирование функции многих переменных иначе не будешь понимать что к чему.
    Ответ написан
    Комментировать
  • Python. a = b = Class() - что это?

    Maksim_64
    @Maksim_64
    Data Analyst
    В первом случае две ссылки cur и dummy указывают на один и тот же объект ListNode(0). В случае если ListNode(0) это мутабельный объект то изменения в cur приведут к изменению в dummy и наоборот. То есть создается один объект и два указателя на него.

    Во втором случает создается два объекта с идентичным значением. И к каждому по указателю. Я на пример списков сейчас продемонструю.

    l1 = l2 = [1,2,3]
    print("Это список l1:", l1)
    print("Это список l2:", l2)
    l1.append(4)
    print("В список l1 добавили 4:", l1)
    print("Это список l2 и он изменился тоже:", l2)


    а теперь второй кейс
    l1 = [1,2,3]
    l2 = [1,2,3]
    print("Это список l1:", l1)
    print("Это список l2:", l2)
    l1.append(4)
    print("В список l1 добавили 4:", l1)
    print("Это список l2 и он не изменился:", l2)
    Ответ написан
    Комментировать
  • Как спарсить заголовок из title?

    Maksim_64
    @Maksim_64
    Data Analyst
    team = old.find("a")['title'] перед этим обернуть все try except потому что у тебя значение для некоторых 'a' получает значение None.
    То есть как то так
    for old in all_old_teams:
        try:
            team = old.find("a")['title']
            print(team)
        except TypeError:
            print(None)
    Ну и свою логику там настраивай собирай их куда тебе надо и т.д.
    Ответ написан
    1 комментарий
  • Повысить версию SqlAlchemy?

    Maksim_64
    @Maksim_64
    Data Analyst
    pip install -U sqlalchemy или на случай если нужны определенные версии pip install package_name==version.
    Где package_name имя библиотеки и version - его версия.
    Ответ написан
    Комментировать
  • Как список кортежей превратить в строку?

    Maksim_64
    @Maksim_64
    Data Analyst
    На случай если в кортеже может быть больше одного элемента
    from itertools import chain
    l = [('monkey',), ('dog',), ('cat',), ('fish',)]
    ', '.join(chain(*l))
    Ответ написан
    Комментировать
  • Как скачать видео?

    Maksim_64
    @Maksim_64
    Data Analyst
    используй pytube, понятно нужно установить python изначально. Но программировать не обязательно, pytube имеет и просто cli интерфейс (то есть команды можно выполнять из командной строки). https://pytube.io/en/latest/ там после установки, раздел https://pytube.io/en/latest/user/cli.html
    Ответ написан
    Комментировать
  • Как устранить ошибку генератора?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну что-то совершенно, не читабельное ты написал. В python генераторами принято называть функции которые возвращают итераторы используя yield. То есть любая функция которая содержит yield называется генератором.

    Твой "генератор" пытается заполнить массив значениями и к генераторам не имеет отношения от слова совсем.

    from field import field это не хорошо. Если тебе нужна переменная из другого модуля то import field затем field.field в том модуле куда импортировал.

    Это я так глазами пробежался, если вникать много чего еще выйдет.

    что касается непосредственно ошибки. То где то в коде ты вместо создания экземпляра класса создал ссылку на объект класса и затем у этого объекта пытаешься найти атрибут. Что бы было понятнее приведу пример.

    class A:
    
        def __init__(self,x):
            self.x = x
    a = A
    print(a.x)
    Выдаст точно такую ошибку. Нужно вместо a=A, написать a=A() со всеми параметрами, или на прямую ты обращаешься к объекту класса а атрибут у тебя экземпляра класса, то есть вот так.
    class A:
        def __init__(self):
            self.x = 'Hello'
    print(A.x)

    Ищи где у тебя в коде такое, а лучше начни писать весь свой код заново.
    Ответ написан
  • Практика очного собеседования для иногородних кандидатов?

    Maksim_64
    @Maksim_64
    Data Analyst
    Хороший пример составить простенькую дискретную модель. Вы получаете работу с вероятностью p и вознаграждением M, ну и соответственно теряете деньги в количестве K с вероятностью 1 - p. Понятно что простое математическое ожидание p*M - K*(1-p), в таких случаях не применяют, а имеют функцию риска, в которой учитывается все прочие факторы например:
    1. Какова цена поездки для вас (на сколько для вас это значимая сумма)
    2. Какова цена опыта интервью (может оно будет первое, а может у вас уже были оффлайн интервью)
    3. Что для вас значит посетить Москву, будет ли это сопутствующим плюсом
    и т.д. то есть подумать и оценить все это дело.
    Ответ написан
    2 комментария
  • Почему DB browser for sqlite и питон выдают разные результаты запроса?

    Maksim_64
    @Maksim_64
    Data Analyst
    контекстный менеджер делает commit но не закрывает базу. То есть ты должен закрывать соединение самостоятельно close(). https://docs.python.org/3/library/sqlite3.html#sql...
    например
    import sqlite3
    con = sqlite3.connect("tutorial.db")
    cur = con.cursor()
    cur.execute("CREATE TABLE movie(title, year, score)")
    cur.execute("""
        INSERT INTO movie VALUES
            ('Monty Python and the Holy Grail', 1975, 8.2),
            ('And Now for Something Completely Different', 1971, 7.5)
    """)
    #con.commit()
    print(cur.execute("SELECT * FROM movie").fetchall())

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

    То есть у тебя только один commit (не явный посредством контекстного менеджера коммитит все что в теле контекстного менеджера) и два insert (второй то вне тела контекстного менеджера), соответственно последний insert не записывается в базу.

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

    Maksim_64
    @Maksim_64
    Data Analyst
    выполнять до те пор пока:
    l не равно k или l не равно km или lm не равно k или lm не равно km
    То есть если хотя бы одно из вышеперечисленных условий истинно выхода не произойдет.
    сделай print каждой переменной и посмотри, как минимум одно из твоих условий истинно, и выхода из цикла не происходит.

    если у тебя в твоих условиях или (or) и в списке хоть один True, то общее выражение будет True.
    Ответ написан
    1 комментарий
  • Как создать простую браузерную игру при помощи ChatGpt?

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

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

    3. Качество решений в различных областях сильно варьируется, в каких то он более стабилен, а в каких то его вообще нет смысла использовать.

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

    Maksim_64
    @Maksim_64
    Data Analyst
    while True: Всегда остается истинным, и получается бесконечный цикл, нужно предусмотреть условие остановки цикла.
    Ответ написан
    Комментировать
  • Как быстро распарсить много json файлов на python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну во первых, pandas read_json и json_normalize (для вложенных json). Затем этот фрейм или подсет фрейма отправляешь в базу, методом to_sql если все делаешь правильно с точки зрения pandas (весь код будет без единого цикла) то это ускорит очень серьезно. Еще больше можно ускорить библиотекой polars она имеет схожий синтакс с pandas у ней куда меньший функционал по манипуляции данных, но она фокусируется на скорости в том числе и чтения файлов.

    Думаю скорости pandas будет достаточно, если нет то polars. Начать лучше с pandas документация очень хорошая, да и кода всего ничего будет.
    Ответ написан
    1 комментарий
  • Как накинуть несколько эффектов MoviePy на видео?

    Maksim_64
    @Maksim_64
    Data Analyst
    Несколько странный кусок кода у вас, отступ за чем-то в принципе должен давать ошибку и не работать. С библиотекой я не работал не разу, но глянув документацию, вот что она говорит.
    класс CompositeVideoClip, это для создания из нескольких видео одного. Если же говорить о наложении эффектов на видео то.
    from moviepy.editor import *
    clip = (VideoFileClip("myvideo.avi")
            .fx( vfx.resize, width=460) 
            .fx( vfx.speedx, 2) 
            .fx( vfx.colorx, 0.5))
    то вот пример из документации для применения нескольких эффектов к видео. Вместо этих эффектов, поставьте ваши или добавьте по необходимости. Думаю код предельно понятный.

    Все эффекты и трансформации на видео доступны здесь https://zulko.github.io/moviepy/getting_started/ef...
    Ответ написан
    Комментировать
  • Список из кортежей в словаре - как это понимать?

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

    Сам код откуда ты его взял, взят для демонстрации создания словаря из популярной структуры данных список с кортежами. У тебя есть ассоциации например l1 = [1,2,3] создаст список, для создания не пустого словаря требуется и ключи и значения, по этому ты либо создаешь его явно d1 = {'A':1,'B':2} либо нужна структура из которой python сможет понять что будет ключами, а что значениями. И список с кортежами (где длинна каждого кортежа обязательно два) такая структура.
    Ответ написан
    Комментировать
  • Как спарсить/вытащить из txt или html файла кусок строки, зная ее специфическое содержание?

    Maksim_64
    @Maksim_64
    Data Analyst
    from bs4 import BeautifulSoup
    
    text = '''
        <tr align="center"><td><a href="#0">First</a></td></tr>,
        <tr align="center"><td><a href="#1">This is second</a></td></tr>,
        <tr align="center"><td><a href="#2">third</a></td></tr>
    '''
    
    soup = BeautifulSoup(text,'html.parser')
    result = [ row.a.text for row in soup.find_all('tr')]
    print(result)

    или result = [ row.text for row in soup.find_all('a')] как удобнее для настройки дополнительных условий парсинга.
    Ответ написан
    Комментировать
  • Как исправить ошибку в работе с turtle?

    Maksim_64
    @Maksim_64
    Data Analyst
    Код абсолютно рабочий. Проверяй, не знаю может, когда ты писал square(bob) ты каким то образом использовал русскую 'о' или когда объявлял. Или может файл, когда писал после какого то запуска, когда ты добавил эту переменную то забыл сохранить изменения.
    Ответ написан
    Комментировать