Имеет ли значение имя и порядок особенностей для алгоритма прогнозирования - PullRequest
0 голосов
/ 10 февраля 2019

Должны ли имена / порядок столбцов моего кадра данных X_test быть такими же, как у X_train, который я использую для подгонки?

Ниже приведен пример:

Я тренирую свою модельс:

model.fit(X_train,y)

, где X_train=data['var1','var2']

Но тогда во время предсказания, когда я использую:

model.predict(X_test)

X_test определяется как:

`X_test = data ['var1', 'var3']

, где var3 может быть совершенно другой переменной, чем var2.predict предполагает, что var3 совпадает с var2, потому что это второй столбец в X_test?

Что если:

X_live было определено как: `X_live = data ['var2', 'var1']

Можно ли предсказать знать, чтобы изменить порядок X, чтобы выстроить их правильно?

1 Ответ

0 голосов
/ 10 февраля 2019

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

Просто очень простой мысленный эксперимент.Представьте, что вы тренируете модель, которая вычитает два числа.Возможности: (n_1, n_2), и ваш вывод будет n_1 - n_2.

Ваша модель не обрабатывает имена ваших столбцов (так как в них передаются только числа), поэтому она изучает взаимосвязь между первым столбцом, вторым столбцом и выходными данными, а именно output = col_1 - col_2.

Независимо от того, что вы передаете, вы получите результат первого, что вы прошли, минус второе, что вы передаете. Вы можете назвать первое, что вы передаете, и второе, что вы передаетек чему угодно, но в конце дня вы все равно получите результат вычитания.

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

...