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

    Maksim_64
    @Maksim_64
    Data Analyst
    https://matplotlib.org/stable/api/_as_gen/matplotl...
    xticks. Устанавливаешь два массива, один это ticks локации, второй это (опционально) это ассоцируемые метки с этими локациями. Например для этого графика. plt.xticks(range(2006,2023)) Второй параметр в данном случае тебе не нужен. Глянь пример из доков, также. Да и имей ввиду если ты используешь ооп апи, работаешь с объектами axes, то там set_xticks и set_xticklabels. То есть на два метода этот функционал разбит, например https://www.geeksforgeeks.org/matplotlib-axes-axes...
    Ответ написан
    Комментировать
  • Как вызвать функцию, название которой записано в переменной?

    Maksim_64
    @Maksim_64
    Data Analyst
    eval(func_name)()
    Ответ написан
    Комментировать
  • Как youtube детектирует использование нейросети при создании видеоконтента?

    Maksim_64
    @Maksim_64
    Data Analyst
    Путем другой нейросети, которую обучали различать контент созданный нейросетью или человеком. Как создавали такую сеть? Да также как и другие, создали множество контента средствами AI и дали обычный контент созданный людьми и поставили метки AI not AI, бинарная классификация. И обучили, все.
    Ответ написан
    Комментировать
  • Как правильно обработать данные и записать их снова?

    Maksim_64
    @Maksim_64
    Data Analyst
    for i in time:
        data = change_data(i)
    Ну ты перезаписываешь свои данные да и все. То есть в data у тебя остается последний результат вызова функции для последнего i.
    Затем ты присваеваешь benz_df['time'] = data колонке time, значение data. Он его броадкастит на всю колонку да и все. Ты ожидаешь что data это массив c данными, а это одно значение.

    По коду сделай data вне цикла пустым списком и добавляй туда результат вызова своей функции. То есть вот так
    data= []
    for i in time:
        data.append(change_data(i))


    Ну а вообще так делать не правильно, все эти операции надо производить средствами pandas
    хотя бы как то так.
    benz = pd.read_xml(benz_xml_file, xpath='.//filling')
    benz_df = pd.DataFrame(benz)
    benz_df['time'] = benz_df['time'].apply(change_data)
    benz_df['time'][:50]
    Ответ написан
  • (Pandas) Почему не работает df.dropna()?

    Maksim_64
    @Maksim_64
    Data Analyst
    df = df.dropna() Ну на всякий случай проверь после этой строчки df.isnull().sum() Должны быть нули, далее там же проверь не попало ли строковое значение (df == 'NaN').sum()
    Если же нет значит в результате в от этой операции
    df = df.where(df['area_name'].apply(lambda x: x in used_cities))
    появляется NaN, что собственно логично, ты предоставляешь , булевый массив True, False. где pandas оставит оригинальное значение где состояние True и заменит на твое (которое ты не предоставил) где значение False. То есть вторым параметром ты должен был предоставить значение, (по умолчанию оно NaN).
    df = df.where(df['area_name'].apply(lambda x: x in used_cities), 'Твое значение')
    Ответ написан
    Комментировать
  • Как убрать наложения на графике?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Используй pandas для чтения из csv не забудь про параметр decimal. Потому что у тебя вместо плавающей точки запятая.
    2. Если надо почисти данные (удали пустую колонку) метод drop, возможно перведи единицы измерения времени в те в которых значения будут поменьше например если оно в нано секуднах в секунды.
    3. Рисуй свой график.
    Псевдо код будет такой.
    df = pd.read_csv('myfile.csv', sep=';', decimal=',')
    df = df.set_index('time')
    df.plot()

    Глянь на свой фрейм, и работай с ним это лучше чем собирать данные в списки, по скольку он создан для подготовки данных, и все библиотеки визуализации ожидают pandas фрейм, в качестве данных для визуализации.
    Ответ написан
    Комментировать
  • Почему в моем коде cpu быстрее gpu?

    Maksim_64
    @Maksim_64
    Data Analyst
    GPU не всегда быстрее CPU.

    1. Если будет много вызовов к памяти с небольшими объемами данных, CPU будет быстрее.
    2. Если операция не может исполнятся параллельно то эффективность GPU падает.

    В первом примере, у тебя даже тренировки модели нет, ты ее загружаешь., то есть основное место где gpu сильно быстрее cpu это операции с тензорами во время тренировки модели, его нет. Во втором примере есть тренировка модели, (операции с тензорами), то там GPU должен быть быстрее.
    Ответ написан
    Комментировать
  • Как корректно составить запрос на выборку?

    Maksim_64
    @Maksim_64
    Data Analyst
    левый join по двум колонкам. Что то типа такого.
    select * 
    from short t1 
    left join collect_s t2
    	on t1.base = t2.base and t1.small = t2.collect
    where t2.base is null
    Ответ написан
    4 комментария
  • Как включить разделитель в данное выражение на Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну вообще print(f"{1127:016_b}") Но есть проблема 016 означает длинна 16 символов, что не хватает, заполнять нулями. А у тебя получается добавка три символа '_' . По этому надо добавлять 3 к 16.
    print(f'{1127:019_b}')
    Ответ написан
    1 комментарий
  • Каким образом можно обучить ИИ распознавать лицо python?

    Maksim_64
    @Maksim_64
    Data Analyst
    То как ты задаешь вопрос, говорит о том что написать с нуля это тебе не под силу.

    tensorflow - это прежде всего векторизованные операции с тензорами + возможность выполнить эти операции на GPU + очень важный плюс (есть подсчет градиента для любого математического выражения). Если его сравнивать с numpy то основное отличие будет отсутствие подсчета градиента и не возможность из коробки выполнять numpy на GPU, это возможно через numba например.

    Распознавание лиц с нуля такого проекта ты не найдешь, все что можно найти и в изобилии это создание нейронной сети с нуля (реализованные как на чистом numpy, так и на tensorflow без использования моделй).

    гугли neural networks from scratch python. Например вот https://www.geeksforgeeks.org/implementation-of-ne... Но ничего близкого к распознаванию лиц и эмоций с нуля ты не найдешь.
    Ответ написан
    1 комментарий
  • Когда надо использовать инстанс методы и когда класс методы?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ты не совсем понял их назначение.

    В python у тебя есть атрибуты класса и атрибуты экземпляра класса. Атрибутами называют как методы так и атрибуты в обычном смысле.

    1. Методы экземпляра класса, имеют доступ, и могут изменять, как атрибуты класса, так и атрибуты экземпляра класса.

    2. Методы класса не имеют доступа к атрибутам экземпляра класса, как следствие не могут изменять его состояние.

    3. Статические методы не имеют доступа к атрибутам, экземпляра класса или объекта класса. Обычная функция которая "привязана к классу" для внутренних нужд.

    Если говорить о применении методов класса, то самое основное это создание альтернативного конструктора.

    class MyClass:
    
        def __init__(self, items):
            self.items = items
            initial_total_value = self.total()
    
        def total(self):
            return sum(self.items)
    
        @classmethod
        def from_str(cls, string):
            return cls([int(i) for i in string])
    a = MyClass([1,2,3])
    print(a.total())
    
    b = MyClass.from_str('123')
    print(b.total())
    То есть смотри мой класс метод возвращает изменный объект класса, на котором без проблем сработает конструктор экземпляра класса.
    Ответ написан
  • Куда стоит поступать на ИИ?

    Maksim_64
    @Maksim_64
    Data Analyst
    656095ba3133d432320320.png

    ИИ - это общий термин, и не более. Так что иди туда, где сильная база программирования и математики, если где то включено ML то оно в свою очередь будет включать в себя как классические ML алгоритмы, так и нейронные сети.
    Ответ написан
    Комментировать
  • Как ускорить работу с большими таблицами данных?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Сделай дашборд plotly + dash, он может работать, как с базой данных, так и pandas фреймом. Там же есть объект таблица для красивого вывода, + огромное количество графиков, пользователь будет вводить, что он хочет вывести, ты будешь делать запрос к фрейму и выводить. Все доки в принципе ориентированы на работу с фреймами, бд как пример берется, возможности огромные. plotly+dash

    2. Есть в принципе отдельная библиотека pandasgui Функционал слабенький, но фильтрацию поддерживает.

    Не знаю поможет ли это тебе в твоей проблеме, но раз речь в том числе и о скорости pandas то упомянуть об этом следует, пару недель как nvidia выпустила расширение, которое очень серьезно ускоряет pandas (GPU acceleration). читать здесь
    Ответ написан
    5 комментариев
  • Почему не работает код?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну разбей свою задачу на две части
    1. Парсинг ввода пользователя и запись в подходящую структуру данных (словари)
    2. Расчеты

    Потом все будет просто, например.
    words = {
        'm': 2,
        'a': 3,
        'l': 1,
        'i': 1,
        'n': 2,
        's': 1,
        'o': 5,
        'r': 1,
        'd': 1
    }
    
    jams = {
        'smorodina': 1,
        'malina': 2
    }
    
    total = 0
    
    for jam, amount in jams.items():
        jam_time = 0
        for letter in jam:
            jam_time += words[letter]
        total += jam_time * amount
    
    print(total)

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

    Maksim_64
    @Maksim_64
    Data Analyst
    Восприятия пользователем результатов прогностических систем


    Вообще тема мертвая, она элементарно плохо сформулирована. Как мне видится, что бы со всем этим делом справится. Тебе подойдет дашборд, при чем в качестве web приложения. Если твой язык python то стек будет такой.
    python, pandas, plotly + dash + scikit-learn / statsmodels. Я бы рекомендовал statsmodels, раз уж речь о улучшении восприятия, то работай с интерпретируемыми моделями (statsmodels много инферентной статистики предоставит).

    1. Покажи на графиках, как изменение в одном из предикторов, влияют на твой таргет.
    2. Сделай анализ важности предикторов, это тоже улучшит понимание юзера.
    3. Покажи как удалил выбросы
    4. продемонстрируй что применяя стандартизацию данных (или другую трансфомацию), сама структура данных не меняется и т.д.
    5. Вообще рассмотри толковый EDA.
    Ответ написан
    5 комментариев
  • Какую технологию выбрать для выдачи результата по выбранным параметрам?

    Maksim_64
    @Maksim_64
    Data Analyst
    Тебе нужно API для LLM (Large Language Models). Пользователь выбрал параметры, ты на основе их сгенерировал, запрос к LLM, получил ответ и опубликовал его пользователю.

    вбиваешь в поисковке API for LLM. И начинаешь изучать, чего есть какие тебе подходят и т.д.
    Ответ написан
  • Почему текстовый редактор и консоль по-разному присваивают ссылки на переменные Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотри, здесь вся история про оптимизацию. В целях оптимизации str, int, и float. Указывают на один и тот же объект. Так как это не мутабельные типы данных, то сторонних эффектов нет.

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

    Если ты сделаешь числа по меньшее, то он тебе и в интерактивном и если запускать через один и тот же скрипт выдаст один и тот id. например 11.
    Ответ написан
    Комментировать
  • При выводе users_cards выводится [, ...] как это исправить?

    Maksim_64
    @Maksim_64
    Data Analyst
    self.users_cards[i] = keys.pop Ну так ты добавляешь в свой список, метод pop. Вызывай его. keys.pop() Ну и если keys это словарь, то ты должен сопроводить key.pop(ключ), тогда данный ключ будет удален и его значение запишется в твой self.user_cards.
    Ответ написан
    Комментировать
  • Как правильно трансформировать данные к нормальному распределению?

    Maksim_64
    @Maksim_64
    Data Analyst
    Правильного способа не существует в природе. Надо пробовать все трансформеры.

    Пробуй Power Transformer (Он все таки самый универсальный) с обоими методами Box-Cox и Yeo-Johnwon . И делай тоже самое визуализацию распределение до и после. На всякий случай перепроверь свой код визуализации.

    Держи kaggle notebook из коллекции на эту тему. Где детально разобраны все трансформеры и визуализация хорошо выполнена, QQ график из statsmodels используется, плюс KDE в общем очень советую читать notebook и пробовать на своих данных.
    Ответ написан
    Комментировать