Enregistrer le modèle de forêt aléatoire de python dans un fichier

Dans R, après l'exécution de "random forest" modèle, je peux utiliser save.image("***.RData") pour stocker le modèle. Ensuite, je peux charger le modèle pour faire des prédictions directement.

pouvez-vous faire une chose similaire en python? Je sépare le Modèle et la prédiction en deux fichiers. Et dans le fichier de Modèle:

rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
fit= rf.fit(Predx, Predy)

j'ai essayé de retour rf ou fit, mais ne peut toujours pas charger le modèle dans le fichier de prédiction.

pouvez-vous séparer le modèle et la prédiction en utilisant la forêt aléatoire de sklearn package?

18
demandé sur xgdgsc 2013-12-18 19:25:49

3 réponses

...
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)
22
répondu Jake Burkhead 2013-12-18 16:09:18

j'utilise dill, il stocke toutes les données et je pense que peut-être l'information du module? Peut-être pas. Je me souviens avoir essayé d'utiliser pickle pour stocker ces objets très compliqués et ça n'a pas marché pour moi. cPickle probablement fait le même travail que dill mais je n'ai jamais essayé cpickle. on dirait que ça marche littéralement de la même façon. J'utilise l'extension " obj " mais ce n'est pas conventionnel...ça avait du sens pour moi puisque je stockais un objet.

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"))

btw, pas sûr si vous utilisez iPython, mais parfois écrire un fichier de cette façon ne vous permet pas de faire le:

with open(wd + "filename.obj","wb") as f:
    dill.dump(rf,f)

appel les objets de nouveau:

model = dill.load(open(wd + "filename.obj","rb"))
1
répondu O.rka 2016-03-20 16:16:30

pour le modèle de stockage vous pouvez également utiliser .sav de formiate. il stocke le modèle complet et l'information.

0
répondu Ch HaXam 2017-02-07 15:26:34