• Не понимаю, почему программа "тяжелая"?

    Maksim_64
    @Maksim_64
    Data Analyst
    Потому что вызовов рекурсивной функции происходит больше раз чем ты ожидаешь, и растет все это дело не линейно с увеличением n. Нужно оптимизировать рекурсивную функцию.
    from functools import lru_cache
    @lru_cache
    def F(n):
        print(n)
        if n <= 1:
            return n
        if n>1: 
            return F(n-1)+F(n-2)
    F(8)
    Вот твоя функция в точности, я добавил кеширование результатов, и print(n). Запусти с ним и без него и посмотри сколько лишних вызовов происходит. Если владеешь английским вот хорошая статья почитай как сделать своими руками, без встроенного декоратора, различные стратегии и т.д. https://realpython.com/lru-cache-python/
    Ответ написан
    1 комментарий
  • Почему переопределяются имена __slots__ при наследовании объектов?

    Maksim_64
    @Maksim_64
    Data Analyst
    Убери двойной подчеркивание, оставь одинарное. Если ты создаешь атрибут с двойном подчеркиванием, то python хранит атрибут в __dict__ добавляя одно нижнее подчеркивание затем имя класса, то есть вот так _ClassName__attrname. Если ты в __slots__ уберешь двойной подчеркивание перед именем оставишь одинарное, то имена атрибутов будут хранится, как ты ожидаешь.
    Ответ написан
    Комментировать
  • Как настроить обновление приложения на dash python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Такого быть не должно, было дело делал дашборд недавно и все было нормально. Я надеюсь ты не забываешь сохранять изменения в файле, из того что можно попробовать это поменять порт там же app.run_server(debug=True,port=3004) как советуют вот здесь https://stackoverflow.com/questions/52163784/pytho... . Ну и то проблема может быть если у тебя запущено более одного приложения.
    Ответ написан
    Комментировать
  • Как создать вложенные списки внутри списка для построения матрицы на Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотри, я так понимаю задача сделать это на чистом python, если что у numpy массива имеется reshape() метод, который делает все это прекрасно, просто введешь размерности и если операция возможна n*m должно давать длинна массива он выполнит преобразование.

    На чистом python задача указать количество колонок, это будет размер внутреннего списка. То есть ну как то так
    l = [int(i) for i in '1 2 3 4 5 6 7 8 9'.split()]
    m=3
    result = [l[i:i+m] for i in range(0, len(l), m)]
    Ответ написан
    4 комментария
  • В чём у меня ошибка в данной задаче?

    Maksim_64
    @Maksim_64
    Data Analyst
    Странно, вроде занимаешься машинным обучением где-то взял код, а не вопрос нормально задать не можешь, не подправить в двух местах, ошибки которые и к машинному обучение то отношения не имеют.
    print((f'accuracy:{accuracy_score(y_perd,y_test) :.3}'))
    вот в этой строчке, ты не смог подправить не правильно написанное имя переменной, y_pred должно быть.
    вот в этой строчке ты не смог правильно написать название колонки
    sns.scatterplot(x='petal_width', y='petal_lenght',data=iris,hue = 'species', s=70)
    должно быть y='petal_length'

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

    А ну и закомментируй лишнее в общем вот рабочая версия
    код
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score
    import seaborn as sns
    from matplotlib import pyplot as plt
    import numpy as np
    import pandas as pd
    from sklearn import datasets
    
    iris= sns.load_dataset('iris')
    #iris
    x_train, x_test, y_train, y_test= train_test_split(
        iris.iloc[:,:-1],
        iris.iloc[:,-1],
        test_size= 0.15
    )
    
    def init_model(k, x_train, y_train, x_test):
      model = KNeighborsClassifier(n_neighbors=k)
      # print(model)
      model.fit(x_train,y_train)
    
      y_pred = model.predict(x_test)
      return y_pred
    
    def grath(y_test,x_test,y_pred):
      plt.figure(figsize=(10, 7))
      sns.scatterplot(x='petal_width', y='petal_length',data=iris,hue = 'species', s=70)
      plt.xlabel('Длина лепестка,см')
      plt.ylabel('Ширина лепестка,см')
      plt.legend(loc=2)
      plt.grid()
      for i in range(len(y_test)):
          if np.array(y_test)[i] != y_pred[i]:
              plt.scatter(x_test.iloc[i,3],x_test.iloc[i,2],color = 'red', s = 150)
    
    
    
    # x_train.shape, x_test.shape, y_train.shape, y_test.shape
    
    # x_train.head()
    # y_train.head()
    
    k = int(input('Чему равно k? '))
    
    y_pred = init_model(k,x_train,y_train,x_test)
    print((f'accuracy:{accuracy_score(y_pred,y_test) :.3}'))
    grath(y_test,x_test,y_pred)
    Ответ написан
    1 комментарий
  • Как распарсить этот XML?

    Maksim_64
    @Maksim_64
    Data Analyst
    С твоей библиотекой не работал, но с BeautifulSoup все работает как надо.
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(data, 'xml')
    name = soup.find('ns2:Name').text
    surname = soup.find('ns2:Surname').text
    email = soup.find('ns2:Email').text
    birthday = soup.find('ns2:Birthday').text
    Ответ написан
    2 комментария
  • Не могу решить задачу на python?

    Maksim_64
    @Maksim_64
    Data Analyst
    На вот тебе вот такое решение, доводи до ума.
    text = 'Я есть Грут.Ты нет.'
    print(
        '.'.join(' '.join(reversed(item.split(' '))).capitalize() for item in text.split('.'))
    )
    Ответ написан
  • Как называется AI который заменяет лица на видео?

    Maksim_64
    @Maksim_64
    Data Analyst
    в целом такие модели упоминаются, как deepfake, так же swap faces. Вбивай и гугли, репозитарии или сервисы которые такое предоставляют.
    Ответ написан
    Комментировать
  • Как хранить константы в python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вот большой гайд о константах, Там в принципе описаны все возможные способы создания констант, а их много. И самое главное, есть раздел Handling Your Constants in a Real-World Project, то что тебе и нужно, а не просто "знакомство". Ресурс в python среде пользуется репутацией, его даже в продвинутых книгах упоминают.
    https://realpython.com/python-constants/
    Ответ написан
    4 комментария
  • Как правильно подключить прокси в Selenium на Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    https://www.zenrows.com/blog/selenium-proxy#proxy-...
    там есть код для proxy которые требуют аутентификацию. Я так понял твой требует и без нее не работает.
    Ответ написан
  • Как исправить AttributeError: 'NoneType' object has no attribute?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну у тебя метод apples не имеет инструкции return соответственно возвращает None. То есть вот в этой строчке tree.apples().total() после выполнения apples() у тебя в результате объект None. А объект None не имеет метода total. О чем и говорит ошибка. Метод total это метод экземпляра класса Tree. tree.total() Соответственно, что бы изменить атрибут экземпляра класса и затем вывести его на печать, согласно твоему объявлению класса, то вот так.
    tree = Tree()
    tree.apples()
    tree.total()
    Ответ написан
    7 комментариев
  • Как параметр в лямбде соотносится с параметром в функции?

    Maksim_64
    @Maksim_64
    Data Analyst
    lambda - это безымянные функции.
    например
    f = lambda x: x**2
    print(f(4))
    выведет 16. f - это указатель на безымянную функцию с одним параметром.
    Тоже самое и в твоем коде твоя функция myfunc, возвращает безымянную функцию, твой n подставит выражение и вернет функцию. lambda a:a*2 дальше как в пример выше ты вызываешь свою функцию с аргументом a=11 и получаешь 22.

    Эта лямбда стоит после оператора return функции myfunc, то есть myfunc возвратит то, что вычислится в результате выполнения лямбды.
    Вот здесь ошибка в твоей логике. Он вернет функцию а не вычислит ее только вместо n ,будет параметр из myfunc.
    Ответ написан
    1 комментарий
  • Почему вектор перемещения не поддается правилу треугольника при вычитании векторов?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вычитание векторов это тоже сложение только вычитаемый вектор умножается на -1 (меняет направление). То есть a - b = a + (-b), где a и b это векторы. Далее хоть методом треугольника, хоть методом параллелограмма результат будет один и тот же.

    Если смотреть на твой график то AB НЕ ЯВЛЯЕТСЯ разницей между r0 и r. У него будут отрицательные значение по оси Y и начинаться он будет в 0.
    Ответ написан
    Комментировать
  • Python cоздание переменной с значением генерируемой переменной?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну если ты только изучаешь python, зачем тебе pandas. Код не надо править его нужно выкидывать.

    a) Ты хочешь прочитать каждый xlsx файл в отдельный фрейм, это нормально. Создаешь пустой список и складываешь в него фреймы.
    dfs = []
    for filename in fileanmes:
        df = pd.read_excel(filename)
        dfs.append(df)

    где filenames твои пути для xlsx файлов.

    б) Задача не ясна. На сколько я понял у этих файлов разные имена колонок и надо выбрать общий для всех набор.

    from functools import reduce
    import numpy as np
    
    df1 = pd.DataFrame({
        'A':[1],
        'B':[2]
    })
    
    df2 = pd.DataFrame({
        'A':[1],
        'C':[2]
    })
    
    df3 = pd.DataFrame({
        'A':[1],
        'D':[2]
    })
    
    dfs_column_names = [df1.columns, df2.columns, df3.columns]
    print(reduce(np.intersect1d, dfs_column_names))
    Вот так ты можешь найти общие колонки у любого количества фреймов.
    Естественно тебе не нужно хардкодить список с колонками прям в первом цикле заноси не только фрейм в список, но и в другой список заноси его колонки потом вне списка сохрани общий набор колонок как я привел в примере.

    Ну и я так понимаю в дальнейшем ты собираешься выбрать по уникальным для всех фреймов колонкам и собрать все в единый фрейм. pd.concat(dfs). Где dfs это список фреймов, с едиными колонками. То есть предварительно, ты как я показал нашел common_columns. и затеам dfs=[df[common_columns] for df in dfs]. И затем конкатенируешь.
    Ответ написан
    4 комментария
  • Как редактировать данные на лету при импорте из файла?

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

    читать по частям pandas

    import pandas as pd
    chunksize = количество строк
    for chunk in pd.read_csv('large_file.csv', chunksize=chunksize):
        # подправляешь свой фрейм

    Каждый chunk это фрейм, если у тебя будут проблемы с делимитром он выдаст ошибку. Твоя задача написать код который это дело поправит, pandas имеет очень мощный I/O функционал. https://pandas.pydata.org/docs/user_guide/io.html По ссылке найдешь доки не только насчет ошибок при чтении csv файлов, но и как писать в базу, метод to_sql. Он имеет параметр имя таблицы, соедениение и if_exist, так вот в if_exist поставишь append. То есть каждый твой подправленный кусок файла он будет складывать в таблицу в базе.
    https://pandas.pydata.org/docs/reference/api/panda...
    Ответ написан
    Комментировать
  • Ошибка NameError: name 'np' is not defined?

    Maksim_64
    @Maksim_64
    Data Analyst
    Попробуй установить если не установлен numpy и импортировать его import numpy as np
    Ответ написан
    Комментировать
  • С чего начать изучение мат анализа?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если с английским, как ты указал полный порядок. Потрать год на бесплатные курсы с Khan Academy. И у тебя не будет проблем с пониманием мат анализа. При чем начать ты можешь с того места с которого тебе нужно, возможно, я этого не знаю у тебя есть пробелы с алгебраическими преобразованиями, возможно со сведении проблемы к математическому виду (например дана задача) составить уравнение и решить. Я не видел подобного качества курсов. Там есть все precalculus, calculus AB, calculus BC, algebra, linear algebra. Самое главное коротенькие 5-10 минут видео и наверное больше тысячи упражнений. Это хорошая инвестиция времени и она послужит тебе хорошую службу в дальнейшем. https://www.khanacademy.org/ Зарегестрируйся, и начни со своего уровня. Не посредственно мощнейшее введение в мат анализ это calculus AB, calculus BC, multivariable calculus, linear algebra. Но по скольку ты сейчас в 9 классе начинай не с них, а со школьной программы там она есть, увидишь courses и там математика с первого класса, ты со старших начни, не пропусти algebra 1 и algebra 2, geometry и trigonometry. Что выгодно отличает это обучение, ты решишь сотни задач где дана проблема ты ее сначала сводишь к математическому виду, и затем решаешь. А не сухое манипулирование формулами. Так помимо математики ты научишься ее применять.
    Ответ написан
    1 комментарий
  • Почему Выдает ошибку, Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    def init(self, master): Вот здесь ты определил метод экземпляра класса init. А хотел переопределить конструктор экземпляра класса, то есть def __init__(self, master): Отсюда при попытке создания экземпляра класса app = ManageApp(root) он говорит что параметров быть не должно, потому что конструктор экземпляра класса остался пустым.
    Ответ написан
    2 комментария
  • Нейросеть без библиотек. Как можно реализовать?

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

    Слой из параметров функция активации и выходная размерность.
    Внутри слоя activation_fumction(dot(A,W) + b). где A - это входная матрица, W это изначально случайно инициализированная матрица весов с количеством рядов равных количеству колонок в матрице А и количеством колонок равных (output_size) параметр у слоя, размерность. то есть например A(10,3) то W должно быть (3,m) где m это то что ты укажешь в параметре выходная размерность каждого слоя. Та размерность которую ты получаешь на выходе после каждого слоя (10,m) в данном случае, b- вектор, с подходящей размерностью просто выполнить по элементное сложение, так же инициализируется случайно. Ну и dot - математическое умножение матриц.

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

    В целом ищи гайд. Так тут все сложно объяснить, и это сильно зависит сколько слоев. backpropagation на нескольких слоях это реально самый сложный момент. И он реально сложный.
    Ответ написан
  • Как удалить уникальные дубли?

    Maksim_64
    @Maksim_64
    Data Analyst
    читаешь оба файла в pandas фрейм. Затем сравниваешь, заменяешь, применяешь regex или все что тебе захочется.
    для сравнения псевдо код будет такой. df1['колонка'] == df2['колонка']. Для замен да все что угодно методы, replace, where и т.д. В общем решай pandas'ом а там будут проблемы, сообрази игрушечный фрейм маленького размера, и приходи с ним поможем. Читать файл функцией read_excel.
    Ответ написан
    Комментировать