hacer - Guardar el modelo de bosque aleatorio de Python en el archivo
como hacer un arbol de decision en python (3)
En R, después de ejecutar el modelo de "bosque aleatorio", puedo usar save.image("***.RData")
para almacenar el modelo. Después, solo puedo cargar el modelo para hacer predicciones directamente.
¿Puedes hacer algo similar en python? Separé el Modelo y la Predicción en dos archivos. Y en el archivo de modelo:
rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
fit= rf.fit(Predx, Predy)
Intenté devolver rf
o fit
, pero aún no puedo cargar el modelo en el archivo de predicción.
¿Puede separar el modelo y la predicción utilizando el paquete de bosque aleatorio sklearn?
Para el modelo de almacenamiento también puede utilizar formato .sav. Almacena modelo completo e información.
Utilizo dill, almacena todos los datos y creo que posiblemente la información del módulo? Tal vez no. Recuerdo que traté de usar pickle
para almacenar estos objetos realmente complicados y no me funcionó. cPickle
probablemente hace el mismo trabajo que dill
pero nunca he intentado cpickle
. Parece que funciona literalmente de la misma manera. Utilizo la extensión "obj", pero eso no es de ninguna manera convencional ... Simplemente tenía sentido para mí ya que estaba almacenando un objeto.
import dill
wd = "/whatever/you/want/your/working/directory/to/be/"
rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
rf.fit(Predx, Predy)
dill.dump(rf, open(wd + "filename.obj","wb"))
por cierto, no estoy seguro si usas iPython, pero a veces escribir un archivo de esa manera no es así, así que tienes que hacer lo siguiente:
with open(wd + "filename.obj","wb") as f:
dill.dump(rf,f)
llamar a los objetos de nuevo:
model = dill.load(open(wd + "filename.obj","rb"))
...
import cPickle
rf = RandomForestRegresor()
rf.fit(X, y)
with open(''path/to/file'', ''wb'') as f:
cPickle.dump(rf, f)
# in your prediction file
with open(''path/to/file'', ''rb'') as f:
rf = cPickle.load(f)
preds = rf.predict(new_X)