Прогнозирование с использованием модели в машинном обучении python - PullRequest
0 голосов
/ 06 августа 2020

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

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

Например .. день 1 У меня есть 10K строк с 6 функциями и 1 меткой - проблема регрессии, которую я создал модель с использованием этого. На второй день я получаю 2К строк с теми же функциями и метками, но, конечно, данные в них будут другими.

Теперь я хочу сначала спрогнозировать, используя эту модель и данные дня 2, какой должна быть метка как по моей модели. Во-вторых, используя этот результат, я хочу сравнить результат модели с исходной меткой дня 2, которая у меня есть.

Итак, чтобы сделать это, когда я передаю функции 2-го дня в качестве теста, установленного для модели, мне нужно сначала выполнить масштабирование функций и категориальное кодирование данных на них?

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

1 Ответ

1 голос
/ 06 августа 2020

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

Самое простое решение - использовать sklearn s Pipeline для создания конвейера с все эти преобразования включены, а затем использовать ее вместо самой модели для прогнозирования новых записей, чтобы все эти преобразования применялись автоматически.

пример - автоматическое применение функции масштабирования StandardScaler перед передачей данных в модель:

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
pipe = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])

// then 
pipe.fit...
pipe.score...
pipe.predict...

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

...