训练/测试拆分确保列唯一值不会在训练和测试集之间拆分?

时间:2018-09-28 18:05:49

标签: python

如何进行训练/测试拆分,以确保列唯一值不会在训练和测试集之间拆分?

在进行本地火车/测试拆分时,我必须按国家/地区拆分数据,以便某个国家/地区的所有年份数据都出现在火车或测试集中,但不会在两者之间拆分。

测试集中的国家代码与火车上的国家代码不同。换句话说,测试集中没有出现在火车集中的国家。因此,特定于国家/地区的功能(即国家/地区虚拟变量)将不是一种选择。但是,测试集中的国家/地区仍然与火车上的国家/地区具有相似的模式,因此其他要素工程的工作方式将与往常一样。

这是数据集的一个示例:

Country     ColumnA    ColumnB   ColumnC   Label
AB            0.2        0.5       0.1       14  
CD            0.9        0.2       0.6       60
EF            0.4        0.3       0.8       5
FG            0.6        0.9       0.2       15 

我有92个不同的国家和1400行。

我尝试了以下代码,但是稍后尝试运行简单回归时,它将返回错误。

# Train/test split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=df.Country)

1 个答案:

答案 0 :(得分:0)

从@ArtemTurnov的评论中,我找到了答案。谢谢。

我根据国家/地区的类别拆分火车/测试数据,然后从火车和测试数据中删除国家/地区列