gpt4 book ai didi

python - 如何对缩放回归模型执行约束优化?

转载 作者:行者123 更新时间:2023-12-03 14:42:41 25 4
gpt4 key购买 nike

假设我正在对我的数据应用高斯过程回归。在拟合模型之前,我将执行某种特征工程。模型拟合后,我的目标是在曲线上应用最小化,我打算限制某些值,以找到最佳 X。但是,如果我正在应用某种特征,那么问题来了工程到我的数据,并将模型拟合到该特定数据集,当我应用约束优化时,我应该如何找出我想要约束它的值,因为我改变了我的输入数据。如果这听起来令人困惑,以下带有一些代码的解释可能会有所帮助:

假设我有数据:

# X (theta, alpha1, alpha2)
array([[ 9.07660169, 0.61485493, 1.70396493],
[ 9.51498486, -5.49212002, -0.68659511],
[10.45737558, -2.2739529 , -2.03918961],
[10.46857663, -0.4587848 , 0.54434441],
[ 9.10133699, 8.38066374, 0.66538822],
[ 9.17279647, 0.36327109, -0.30558115],
[10.36532505, 0.87099676, -7.73775872],
[10.13681026, -1.64084098, -0.09169159],
[10.38549264, 1.80633583, 1.3453195 ],
[ 9.72533357, 0.55861224, 0.74180309])

# y
array([4.93483686, 5.66226844, 7.51133372, 7.54435854, 4.92758927,
5.0955348 , 7.26606153, 6.86027353, 7.36488184, 6.06864003])

然后我应用某种特征工程,在这种情况下,一个简单的 MinMaxScaler:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)           
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)

然后,我将模型拟合到我的数据中:
kernel = C(1.0, (1e-4, 1e4))*RBF(10,(1e-3,1e3))
model = GaussianProcessRegressor(kernel = kernel, n_restarts_optimizer = 5,optimizer='fmin_l_bfgs_b')
model.fit(X_train,y_train)

现在,我执行拟合模型的约束最小化。请注意,我约束了 theta对于一个常数值等于九。因此,这篇文章的动机,正如我设置的 theta在特征工程过程之前拟合曲线之前,约束为基于样本的值。
bnds = np.array([(theta_bin,theta_bin),(data_alpha1_bin.min(),data_alpha1_bin.max()),
(data_alpha2_bin.min(), data_alpha2_bin.max())])
x0 = [theta_bin,0,0]
residual_plant = minimize(lambda x: -model.predict(np.array([x])), x0, method='SLSQP',bounds=bnds)


总而言之,我需要最小化我的机器学习拟合模型,但是我还需要在拟合之前对其进行特征缩放,因为它是高斯过程所必需的。问题是,我的最小化受限于其中一个特征( theta )的给定常数值,那么,我将如何处理拟合到缩放特征的曲线以及我根据之前的值设置的约束剥落。

最佳答案

一旦有了你 scaler装好了,继续用吧。由于您的变换只是缩放而不旋转,变换后的 theta坐标将保持不变。

residual_plant = minimize(lambda x: -model.predict(scaler.transform(x)), scaler.transform(x0), method='SLSQP',bounds=bnds)

顺便说一句,你打算写:
model.fit(X_train_scaled,y_train)

对?否则,您无需缩放即可在原始坐标上进行训练。在这种情况下,这似乎也是合法的。我认为没有真正需要扩展。但我相信你需要添加 normalize_y=True到 GPR,因为它假定观察到的目标值的平均值为零,而根据您提供的数据样本,情况并非如此。

关于python - 如何对缩放回归模型执行约束优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com