如何在Python中的随机森林回归器中进行手动预测?

如何在Python中的随机森林回归器中进行手动预测?,python,pandas,numpy,random-forest,Python,Pandas,Numpy,Random Forest,我有一个随机森林模型 其中,X_列、X_测试以及y_列、y_测试是(1,n)和(1,m)形状的numpy数组 i、 e.输入仅由一个特征组成 model_1 = RandomForestRegressor(n_estimators=50,random_state=42) model_1.fit(X_train.reshape(-1,1), y_train.reshape(-1,1)) print(model_1.score(X_test.reshape(-1,1), y_test.reshape

我有一个随机森林模型 其中,X_列、X_测试以及y_列、y_测试是(1,n)和(1,m)形状的numpy数组 i、 e.输入仅由一个特征组成

model_1 = RandomForestRegressor(n_estimators=50,random_state=42)
model_1.fit(X_train.reshape(-1,1), y_train.reshape(-1,1))
print(model_1.score(X_test.reshape(-1,1), y_test.reshape(-1,1)))
这完全适合训练数据,然后测试数据的分数分别为0.95左右,但现在如果我想预测

future = np.array([int(i) for i in range(len(X)+1,len(X)+11)])
所以未来是

array([155, 156, 157, 158, 159, 160, 161, 162, 163, 164])
我这样做:

model_1.predict(future.reshape(-1, 1))
但在输出中,我得到了所有相同的值

array([2985.02, 2985.02, 2985.02, 2985.02, 2985.02, 2985.02, 2985.02,
       2985.02, 2985.02, 2985.02])
有人能告诉我为什么所有的预测都是同一个数字吗? 这并不是发生在10个未来值上,而是发生在100个值上。
还有其他方法可以手动预测结果吗?

我没有办法尝试运行代码,但听起来像是随机数生成器种子没有改变。通常,您所描述的重复性/再现性类型是需要的,例如,它有助于测试某些东西。在该示例中,OP受到关注,因为结果不可再现

我认为首先要看的是
随机状态=42
。如果每次都使用相同的随机种子,您可能会在那里找到

至于预测结果(如果这意味着你想预测每次得到的“相同的数字”,你需要找到(pseudoRandomNumberGgenerator()

事实上,这篇文章很好地描述了您可能遇到的情况:

PRNG生成的序列不是真正的随机序列,因为它完全由一个称为PRNG种子的初始值决定

您需要查看源代码。希望有人对其代码进行了足够好的注释,以便轻松找到。请从wiki文章中查找seed、generator等词,以及其他可能的词


再一次,在无法尝试或无法查看源代码的情况下,我无法告诉您这是实际问题。然而,这让我想起了我们在研究生院搞砸的一个模拟。目标是为10^12个事件的顺序运行粒子碰撞模拟器;我们没有重置种子,所以我们有大约10^12个事件相同的模拟。这对我们试图做的统计没有帮助。

当你尝试预测测试数据时会发生什么?我的意思是
模型1.predict(X_test.reformate(-1,1))
?@bşraçelik for X_test output不是一个相同的数字。你能举个小例子吗(可能m和n小于5或小于10)对于
{X | y}u train
{X | y}u test
,这将显示问题?我不知道这是否会涉及到重新构造整个模型,但如果不涉及,则有助于再现您的问题。