将 fmin 与随机森林回归结合使用



我正在尝试在示例数据集的随机森林回归模型上使用 scipy fmin 函数。该模型运行良好,但是当我尝试使用 fmin 函数进行初始猜测 np.zeros(8( 时,我收到此错误:

ValueError: Expected 2D array, got 1D array instead:
array=[0. 0. 0. 0. 0. 0. 0. 0.].
Reshape your data either using array.reshape(-1, 1) if your data has a 
single feature or array.reshape(1, -1) if it contains a single sample.

所以我确实重塑了数组,它返回完全相同的错误消息。 这是到目前为止的代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn as sk
import scipy as sp

data = pd.read_csv('Concrete_Data.csv')
data.describe(include='all')
Y = data.iloc[:,-1]
X = data.iloc[:,0:-1]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, 
random_state = 0)
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(random_state = 0)
regressor.fit(X_train,y_train)
def f(x):
p=regressor.predict(x)
return p
guess = np.zeros(8)
guess = guess.reshape(-1, 1) 
minimum = sp.optimize.fmin(f,guess)
print('min = ', minimum)

我也试图从训练数据中给它一行作为初始猜测,它返回的错误消息与以前完全相同。这能做到吗?如果可能的话,这对我的工作非常有用。 谢谢 詹姆斯

可悲的是,这段代码是不可重现的(外部数据(,并且错误/堆栈跟踪有些不完整。

从给定的代码来看,您只需要修改:

def f(x):
p=regressor.predict(x)
return p
->
def f(x):
p=regressor.predict(x.reshape(1, -1))
return p

假设您的回归器返回一个标量,并且您希望查找一些最小化此标量的未知输入样本。

此错误的原因是 scipy(可能(在内部扁平化x(基本上在 scipy 中的所有优化器中完成(,这意味着先验重塑是不够的。

相关内容

  • 没有找到相关文章

最新更新