-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
“拆分数据”和“特征缩放”的顺序 #41
Comments
拆分数据是要在特征缩放前的,不需要保证训练集和测试集一致,只能假设测试数据集(或者模型部署后的生产数据)是近似的,然后做和训练数据同样的处理(例如减去训练集的均值)。 如果在拆分数据前就进行了特征缩放,测试集的特征就会被参杂到训练数据里了。 |
之前回答过英文版的问题,还是保持原来的观点-先拆分数据再特征缩放。 |
我的理解,如果数据量足够大,先后都无所谓,但当数据不够多时,影响会变大。 |
from sklearn.preprocessing import StandardScaler 请教一个问题,为什么特征缩放时,对训练集用的是fit_transform,而对测试集用的是transform. |
哪个文件? |
day6 @zhyongquan |
@Huang-Jack 原作者repo有人提过这个问题,都改成fit_transform,刚我试了下,没什么问题,你报什么错误? |
我试了都改成 fit_transform不会报错了,但是我不知道他们的区别是什么 |
摘自此文章的评论https://blog.csdn.net/appleyuchi/article/details/73503282 |
@wengJJ |
尝试了对测试集如果用fit_transform会造成F1 score低于对测试集用transform的情况,可能是对测试集做了新的fit就无法反映整体数据集的特征了 @zhyongquan
avg / total 0.89 0.89 0.89 100 X_test = sc.fit_transform(X_test)
avg / total 0.88 0.88 0.88 100 |
所以train和test的transform,要使用同样的fit参数 |
进行特征缩放时我们的顺序是 @Huang-Jack 你提出的说测试集使用fit_transform效果变差是肯定的,因为你使用的是测试集的新的规则来进行转换。如果你使用的是transform,则会使用训练集的规则进行转换,效果会更好。 |
是的,这个issue算讨论明白了。 |
刚看到有人提出这个问题:
特征缩放
要放在拆分数据
之前。我觉得挺有道理,这样才能保证拆分后的训练集合
和测试集合
一致。The text was updated successfully, but these errors were encountered: