Entrené un modelo de predicción con Scikit Learn en Python (Random Forest Regressor) y quiero extraer de alguna manera los pesos de cada característica para crear una herramienta de Excel para la predicción manual.
Lo único que encontré es el model.feature_importances_
pero no ayuda.
¿Hay alguna forma de lograrlo?
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
Por el momento, uso el model.predict([features])
para hacerlo, pero lo necesito en un archivo de Excel.
decision trees
, por lo que no obtendrá una ecuación como lo hace con la regresión lineal. En cambio, obtendrás un montón deif, then, else
lógica y muchas ecuaciones finales para convertir las hojas finales en valores numéricos. Incluso si puede visualizar el árbol y extraer toda la lógica, todo esto parece un gran desastre. Si está trabajando en Excel, quizás piense en entrenar a su modelo en Excel usando Azure. Sin embargo, probablemente llamaría a Python desde Excel.Respuestas:
La biblioteca SKompiler podría ayudar:
Mira este video .
fuente
En lugar de exportar los pesos, puede exportar el modelo a un archivo pickle y usar un xlwings para leer los datos de la hoja de cálculo, cargar el modelo en escabeche y ejecutar una predicción. Aquí hay preguntas similares .
fuente
Supongo que quieres extraer toda la lógica seguida por los diferentes árboles para terminar en el regresor final. Para eso, primero debe extraer la lógica de cada árbol y luego extraer cómo se siguen esos caminos. Scikit learn puede proporcionar eso a través de .decision_path (X), con X algún conjunto de datos para predecir. A partir de aquí, tendrá una idea de cómo predice el bosque aleatorio y qué lógica se sigue en cada paso.
Una vez que haya extraído el decision_path, puede usar Tree Interpreter para obtener la "fórmula" del Bosque aleatorio que entrenó. No estoy familiarizado con este intérprete de árbol, pero parece funcionar directamente en el modelador que ha entrenado, es decir,
fuente