繁体   English   中英

Scikit学习:训练/测试拆分不可重现

[英]Scikit-learn: train/test split not reproducible

我正在使用scikit-learn的train_test_split功能,并在重复运行相同代码时得到不同的结果:

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=42)

当我在y_train记录唯一元素的y_train

logger.info(len(set(y_train)))

我在重复运行中得到了不同的值(没有代码更改)。 我本以为random_state可以确保确定性的划分。

如何确保每次均分?

随机性不是由train_test_split引起的,因为您可以看到是否多次运行此最小代码:

from sklearn.model_selection import train_test_split

x = [k for k in range(0, 50)]
y = [k for k in range(0, 50)]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=44)

print (x_train)

您的代码中可能还有另一个随机性来源。 因此,也许是numpy / pandas引起了问题。

设置random_state的值(在许多scikit-learn示例中使用的random_state 42)并不重要,最重要的是该值始终相同,因此您可以多次验证代码。

如果您发布完整的代码,则代码中可能还存在其他一些随机性,它们会产生不同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM