2017-08-24 242 views
0

训练组的头看起来如此训练集后归一化应该怎样测试集做

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 

那么我是否需要让它们用训练集进行规范化?

模型期望的测试数据是什么?

测试数据需要什么预处理?

回答

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. 
0

As sklearn doc provide

预处理模块还提供了一个实用工具类 StandardScaler实现Transformer API来计算训练集上的平均值 和标准偏差,以便能够在以后的 在测试集上重新应用相同的转换。

Talk about the Normalizer

预处理模块还提供了一种工具类正规化 ,使用变压器API

实现相同的操作

所以只是重新应用在测试组相同的变换将是精细。

相关问题