当我阅读scikit学习示例时,典型的机器学习流程是预处理 - >学习 - >预测。如下面显示的代码段:
steps = [('scalar', StandardScalar()),
('knn', KNeighborsClassifier())]
pipeline = Pipeline(steps)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
knn_scaled = pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
此处,训练和测试数据集都会在插入分类器之前进行缩放。但在我的任务中,我将预测单个数据样本。在训练我的模型后,我将从流线获取数据。因此,每次收到一个新数据时,我需要使用分类器对其进行预测,并在我的任务之前使用预测值。
所以每次只有一个例子可用,如何在预测之前对其进行预处理?缩放这个单一的例子似乎毫无意义。我该如何处理这个问题?
答案 0 :(得分:0)
就像训练分类器并使用生成的模型预测单个记录一样,预处理步骤也会生成预处理模型。假设你的输入是Xi,你已经拟合了预处理和分类器模型(分别为scaler
和clf
):
Xi_new=scaler.transform(Xi)
print(clf.predict(Xi_new))