从 Scikit-Learn 中的随机森林回归器中导出权重(公式)

数据挖掘 Python 预测建模 回归 随机森林 scikit-学习
2021-09-21 10:00:25

我用 Python 中的 Scikit Learn(随机森林回归器)训练了一个预测模型,我想以某种方式提取每个特征的权重,以创建一个用于手动预测的 excel 工具。

我发现的唯一一件事是,model.feature_importances_但它没有帮助。

有没有办法实现它?

def performRandomForest(X_train, y_train, X_test, y_test):

    '''Perform Random Forest Regression'''

    from sklearn.ensemble  import  RandomForestRegressor

    model  =  RandomForestRegressor()
    model.fit( X_train , y_train )

    #make predictions
    expected  = y_test
    predicted  = model.predict( X_test )

    #summarize the fit of the model
    mse  = np.mean(( predicted - expected )** 2)
    accuracy = ( model.score ( X_train , y_train ))

    return model, mse, accuracy

目前,我用model.predict([features])它来做,但我需要它在一个 excel 文件中。

3个回答

SKompiler库可能会有所帮助

from skompiler import skompile
skompile(rf.predict_proba).to('excel')

看看这个视频

除了导出权重,您可以将模型导出到 pickle 文件并使用xlwings从电子表格中读取数据,加载 pickle 模型并运行预测Here's a similar questions

我猜你想提取不同树后面的所有逻辑,最终得到最终的回归量。为此,您需要首先提取每棵树的逻辑,然后提取这些路径的遵循方式。Scikit learn 可以通过 .decision_path(X) 提供这一点,并使用 X 一些数据集进行预测。从这里您将了解随机森林如何预测以及每一步遵循的逻辑。

提取出决策路径后,您可以使用Tree Interpreter获取您训练的随机森林的“公式”。我不熟悉这个树解释器,但它似乎直接在你训练的建模器上工作,即

from treeinterpreter import treeinterpreter as ti
# fit a scikit-learn's regressor model

rf = RandomForestRegressor()

rf.fit(trainX, trainY)

prediction, bias, contributions = ti.predict(rf, testX)