sklearn模型(例如RandomForestRegressor)的预测优化

问题描述 投票:0回答:1

有人在拟合的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'

没有人知道我们如何摆脱循环并使用其他东西吗?

scikit-learn mathematical-optimization pyomo nonlinear-optimization scipy-optimize
1个回答
0
投票

[当人们谈论优化拟合的sklearn模型时,他们通常意味着最大化准确性/性能指标。因此,如果您想最大化您的预测值,则可以肯定地改进您的代码以更有效地实现它,如下所示。

© www.soinside.com 2019 - 2024. All rights reserved.