[英]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.