【发布时间】:2021-11-20 14:31:52
【问题描述】:
我构建了一个随机森林回归器,根据颜色、材质、大小等特征来预测某个物体的弹性。
模型运行良好,我可以预测给定特定输入的预期弹性。
最终,我希望能够找到具有某些约束的最低弹性。输入的可能性有限,即材料只能是塑料或纺织品。
我希望有一个聪明的解决方案,我不必强行尝试所有可能的组合并找到弹性最低的组合。我发现可以为此使用代理模型,但我不明白如何将这个概念应用于我的问题。例如,我应该优化的目标函数是什么?我想过通过随机森林的.predict(),但我不确定这是不是正确的方法。
总而言之,我想有一个解决方案,在特定条件下,告诉我什么应该是具有最低弹性的最佳功能集。例如,当物体由塑料制成时,我正在寻找最低的弹性 --> 我想收到一组其他功能,告诉我在这种情况下如何获得最低的弹性。或者简单地说,我应该调整哪些功能来提高性能
import numpy
from scipy.optimize import minimize
import random
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators=10, random_state=0)
model.fit(X_train,y_train)
material = [0,1]
size= list(range(1, 45))
color= list(range(1, 500))
def objective(x):
material= x[0]
size = x[1]
color = x[2]
return model.predict([[material,size,color]])
# initial guesses
n = 3
x0 = np.zeros(n)
x0[0] = random.choice(material)
x0[1] = random.choice(size)
x0[2] = random.choice(color)
# optimize
b = (None,None)
bnds = (b, b, b, b, b)
solution = minimize(objective, x0, method='nelder-mead',
options={'xtol': 1e-8, 'disp': True})
x = solution.x
print('Final Objective: ' + str(objective(x)))
【问题讨论】:
标签: python machine-learning optimization random-forest