有人在拟合的sklearn模型上使用任何优化模型吗?
我想做的是基于火车数据的拟合模型,并使用该模型尝试找到参数的最佳组合,该模型可以预测出最大的价值。
一些示例,简化的代码:
import pandas as pd
df = pd.DataFrame({
'temperature': [10, 15, 30, 20, 25, 30],
'working_hours': [10, 12, 12, 10, 30, 15],
'sales': [4, 7, 6, 7.3, 10, 8]
})
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
X = df.drop(['sales'], axis=1)
y = df['sales']
model.fit(X, y);
我们的基线是一个简单的循环,可以预测变量的所有组合:
results = pd.DataFrame(columns=['temperature', 'working_hours', 'sales_predicted'])
import numpy as np
for temp in np.arange(1,100.01,1):
for work_hours in np.arange(1,60.01,1):
results = pd.concat([
results,
pd.DataFrame({
'temperature': temp,
'working_hours': work_hours,
'sales_predicted': model.predict(np.array([temp, work_hours]).reshape(1,-1))
}
)
]
)
print(results.sort_values(by='sales_predicted', ascending=False))
使用这种方法很难或不可能:*快速执行(粗略方法)*对两个或多个变量相关性实施约束
我们尝试了PuLP库和PyOmo库,但都不允许将model.predict函数作为返回错误的目标函数:
TypeError: float() argument must be a string or a number, not 'LpVariable'
没有人知道我们如何摆脱循环并使用其他东西吗?
[当人们谈论优化拟合的sklearn模型时,他们通常意味着最大化准确性/性能指标。因此,如果您想最大化您的预测值,则可以肯定地改进您的代码以更有效地实现它,如下所示。