据我所知,train_test_split方法将数据集拆分为随机序列和测试子集 . 并且使用random_state = int可以确保每次调用方法时我们在此数据集上都有相同的拆分 .
我的问题略有不同 .
我有两个数据集,A和B,它们包含相同的示例集,每个数据集中出现的这些示例的顺序也相同 . 但它们的关键区别在于每个数据集中的exmaples使用不同的功能集 .
我想测试一下A中使用的功能是否比B中使用的功能更好 . 所以我想确保当我在A和B上调用train_test_split时,我可以在两个数据集上获得相同的分割,以便比较是有意义的 .
这可能吗?我是否只需要确保两个数据集的两个方法调用中的random_state都相同?
谢谢
2 回答
是的,随机状态就足够了 .
查看
train_test_split
函数的代码,它会在每次调用时在函数内设置随机种子 . 因此每次都会产生相同的分割 . 我们可以检查这很简单哪个输出:
哪个好!解决此问题的另一种方法是在所有功能上创建一个训练和测试分割,然后在训练之前分割您的功能 . 但是,如果您想要训练集中的测试功能,那么您可以使用
StratifiedShuffleSplit
函数返回属于每个集合的数据的索引 . 例如: