Это хорошая практика для хранения переменных в качестве атрибутов другой переменной? - PullRequest
0 голосов
/ 29 ноября 2018

Я недавно начал хранить переменные (такие как X_train, y_train, X_test, y_test) в качестве атрибутов их полных данных.Это помогло мне организовать различные наборы данных для обучения и тестирования, когда я использую более одного одновременно.Это вообще считается хорошей / хорошей практикой?Вот пример:

То, как я узнал это изначально, было:

X_train, X_test, y_train, y_test = train_test_split(some_dataframe[features],\
    some_dataframe[target]

Способ, которым я начал заниматься недавно:

some_dataframe.X_train, some_dataframe.X_test,\
    some_dataframe.y_train, some_dataframe.y_test = \
    train_test_split(some_dataframe[features], some_dataframe[target]

1 Ответ

0 голосов
/ 29 ноября 2018

tl; dr: Если вы не можете найти действительно вескую причину, избегайте слияния.

Я думаю, что то, что вы делаете, является частью того, чтоназывается "плохая возможность" .

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

Вам нужно перегруппировать все ваши данные в структуру данных, чтобы отличить их от других источников данных, поэтому, я думаю, вы подумали, почему бы не использовать то, что уже доступно, почему бы и нетиспользовать этот «неопределенно связанный» фрейм данных, который я только что использовал?

Но вы должны спросить себя, почему эта структура данных имеет отношение к тому, чего вы хотите достичь?Что делает его правильной структурой данных?Собираетесь ли вы использовать предыдущие данные этого df с новым?Или вы просто выбираете эту структуру, потому что она «там»?

Если у вас нет причин использовать именно этот фрейм данных, Я бы просто создал новую структуру данных, возможнословаря будет достаточно .В вашем конкретном случае следующие причины:

  1. Фрейм данных, вероятно, является превышением того, что вы ищете.

  2. Вы потеряли частьхорошие свойства предыдущего фрейма данных, объединяя разные вещи (например, каковы размеры вашего фрейма данных? Сколько строк?)

  3. Люди / вы можете запутаться между различными частямиваш фрейм данных.Например, когда вы будете изменять данные, вы уверены, что будете знать, к каким данным будет применено преобразование?Будете ли вы помнить, какие данные являются частью «исходного» фрейма данных, а какие были добавлены впоследствии?

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

PS: см. вопросы, которые @roganjosh задает в комментариях, как хорошие примеры проблем, возникающих, когда вы начинаете ставитьвместе вещи, которые не были предназначены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...