@Robin_TY 关于特征工程MinMaxScaler的问题

梁老师
你好
 
您提供的《Python数据分析升级版》第三期的lect05_eg01代码中,
 
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
 
想向您请教的是,这个scaler fit 的是训练数据集,但是训练集中特征的最大、最小值 和 测试集中的不一定相同吧。
那么,用fit训练集的MinMaxScaler直接去 transform 测试集中的特征,就不能保证测试集中特征的值在0和1之间了吧。
 
是不是没有必要保证测试集中的特征值也在0和1之间呢?
 
谢谢
 

Robin_TY - PhD@CSU,研究方向:计算机视觉,模式识别

赞同来自: 子秦1117 fish

首先,要清楚机器学习的一个基本前提就是测试集和训练集的样本是相似的,所以才能通过学习训练集去预测测试集。比如,一个学生只学习了汉语,你给他一个英文单词,他肯定是不认识的。   这也就是为什么现在工业界发现机器学习非常有用,因为现在有大量充足多样的数据可以作为训练,也就是说几乎可以包含测试集中的类似样本。   具体到这里的scaler,如果测试集中出现了超出训练集范围的特征,可以认为这个样本是一个outlier(异类),另一方面也说明训练集还不够充足,因为没有包含这种情况。当然,这种情况是非常少见的,即使出现,也不太可能所有的特征都超出了训练集的特征范围,只可能有个别的维度会出现outlier,对整体的性能不会有太大的影响。

要回复问题请先登录注册