【发布时间】:2018-03-11 09:39:49
【问题描述】:
我有一个包含 9 个特征 [数字] 的原始数据集,第 10 列是一个分类 [国家 = 法国、德国、印度、中国、墨西哥]。数据集有 20000 行。许多数值特征列都缺少数据,而且它们没有按比例排列。我应该预测位于数据集中第 5 列位置的特征值。
我应该如何处理它?
我应该:
使用 Imputer 预处理整个原始数据集(用于丢失 数据),用于分类和特征尺度的编码器。
在训练和测试集中拆分预处理数据。
或者其他方式:
- 将原始数据拆分为训练集和测试集
- 仅预处理训练集。
我感到困惑的原因:一旦我对原始数据集进行了预处理,分类列就会爆炸成 5 个新列。那么如何从这个数据集中剪掉自变量和因变量(第 5 列)以分别生成 x 和 y 数组,我可以在这个公式中将其拆分为 x_train、x_test、y_train、y_test :
from sklearn.cross_validation import train_test_split
x_train,x_test,y_train,y_test =
train_test_split(x,y,test_size=1/3,random_state=0)
【问题讨论】:
-
所有用于训练或测试的数据都应该以相同的方式处理。进行机器学习时,您训练模型以接收特定类型(或缩放)的输入以获得所需的输出。因此,您要测试(或使用训练模型)的数据应该与用于训练模型的数据具有相同类型(或相同规模)。您可以处理所有内容然后拆分,或者您可以拆分数据集然后使用相同的方法处理两个组...
-
感谢您的回复。这有帮助。您是否建议我在预处理步骤之前将因变量(在本例中为第 5 列)作为数据集的最后一列?这样做,我可以更好地控制变量。因为一旦我进行了分类变量编码,这是我数据集中的最后一列,它就会爆炸成多列。然后它对如何 iloc 自变量和因变量感到困惑。你有什么建议。
-
我不同意您应该缩放然后拆分,请参阅下面的答案。
-
我同意@Jblasco 先拆分然后进行处理并在测试中应用相同的处理。想一想在所有可用数据都是训练数据而所有看不见的或新数据都是测试数据的真实世界场景中您将如何进行。在这种情况下,如何将测试数据与训练数据一起处理。
标签: python machine-learning scikit-learn