训练组头看起来像这样
Session ID Timestamp Item ID Price Quantity
0 420374 2014-04-06T18:44:58.314Z 214537888 12462 1
1 420374 2014-04-06T18:44:58.325Z 214537850 10471 1
2 281626 2014-04-06T09:40:13.032Z 214535653 1883 1
3 420368 2014-04-04T06:13:28.848Z 214530572 6073 1
4 420368 2014-04-04T06:13:28.858Z 214835025 2617 1
所以我对数据进行预处理,逐列对它们进行标准化,并使它们适合SGDClassifier。
from sklearn import linear_model
from sklearn import preprocessing as pp
scaler = pp.MinMaxScaler()
columns_list = list(train_data.columns)
del columns_list[-1]
train_data[columns_list] = scaler.fit_transform(train_data[columns_list])
clf = linear_model.SGDClassifier()
clf.fit(train_data.iloc[:, :-2],train_data.iloc[:,-1])
然后我想用模型预测,如clf.predict()
,但原始测试集应该是以下格式。
Session ID Timestamp Item ID Price Quantity
0 420374 2014-04-06T18:44:58.314Z 214537888 12462 1
然后我是否需要使用训练集进行标准化?
模型期望的测试数据是什么?
测试数据需要什么样的预处理?
答案 0 :(得分:2)
我们应用所有预处理来测试在列车数据上执行时学习的数据。我们不会从测试数据中学到任何新东西。
因此,在您的情况下,我们仅对从列车数据中学习的测试数据应用相同的规范化: -
test_data[columns_list] = scaler.transform(test_data[columns_list])
# Predict Quantity from model
y_pred = clf.predict(test_data.iloc[:, :-2])
# Actual values of Quantity
y_true = test_data.iloc[:,-1]
# Now use y_true and y_pred to calculate the metrics.
答案 1 :(得分:0)
预处理模块还提供实用程序类 StandardScaler实现Transformer API来计算平均值 和训练集上的标准偏差,以便以后能够 在测试集上重新应用相同的转换。
预处理模块还提供实用程序类Normalizer 使用Transformer API实现相同的操作
所以只需在测试集上重新应用相同的转换即可。