我正在使用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
中记录唯一元素的数量时:
logger.info(len(set(y_train)))
我在重复运行(没有代码更改)时得到不同的值。我本以为random_state
将确保确定性的划分。
如何确保每次均分?
答案 0 :(得分:1)
随机性不是由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引起了问题。
答案 1 :(得分:0)
您设置的random_state
(在许多scikit学习示例中使用了42)的值并不重要,最重要的是该值始终相同,以便您可以多次验证代码。 / p>
如果您发布完整的代码,则代码中可能还会存在其他随机性,从而产生不同的结果。