我正在尝试编写一个集成测试,它使用模型预测(model.predict(X)
)结果的描述性统计(.describe().to_list()
)。但是,尽管我设置了np.random.seed(###)
,但是在控制台中运行测试后,与在Pycharm创建的环境中运行测试后,描述性统计数据是不同的:
以下是本地的MRE:
from sklearn.linear_model import ElasticNet
from sklearn.datasets import make_regression
import numpy as np
import pandas as pd
np.random.seed(42)
X, y = make_regression(n_features=2, random_state=42)
regr = ElasticNet(random_state=42)
regr.fit(X, y)
pred = regr.predict(X)
# Theory: This result should be the same from the result in a class
pd.Series(pred).describe().to_list()
以及一个示例测试文件:
from unittest import TestCase
from sklearn.linear_model import ElasticNet
from sklearn.datasets import make_regression
import numpy as np
import pandas as pd
np.random.seed(42)
class TestPD(TestCase):
def testExpectedPrediction(self):
np.random.seed(42)
X, y = make_regression(n_features=2, random_state=42)
regr = ElasticNet(random_state=42)
regr.fit(X, y)
pred = pd.Series(regr.predict(X))
for i in pred.describe().to_list():
print(i)
# here we would have a self.assertTrue/Equals f.e. element
当我在Python控制台中运行这个测试时,会得到一个结果。但是当我使用PyCharm的unittests对文件夹运行它时,我得到了另一个结果。现在,重要的是,在PyCharm中,项目解释器用于为控制台创建一个应该与测试环境相同的环境。这让我相信我遗漏了一些关于随机状态传递方式的东西。我的期望是,鉴于我已经播下了种子,结果将是可复制的。但事实似乎并非如此,我想了解:
我还没有找到很多关于测试预期模型结果的最佳实践。因此,这方面的评论也会有所帮助。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐