web-dev-qa-db-fra.com

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

Dans R, après avoir exécuté le modèle "forêt aléatoire", je peux utiliser save.image("***.RData") pour stocker le modèle. Ensuite, je peux simplement charger le modèle pour faire des prédictions directement.

Pouvez-vous faire la même chose en python? Je sépare le modèle et la prédiction en deux fichiers. Et dans le fichier modèle:

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

J'ai essayé de renvoyer rf ou fit, mais je ne parviens toujours pas à charger le modèle dans le fichier de prédiction.

Pouvez-vous séparer le modèle et la prédiction à l’aide du paquet de forêt aléatoire Sklearn?

18
user3013706
...
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
Jake Burkhead

J'utilise l'aneth, il stocke toutes les données et je pense éventuellement des informations de module? Peut être pas. Je me souviens d’avoir essayé d’utiliser pickle pour stocker ces objets très compliqués et cela n’a pas fonctionné pour moi. cPickle fait probablement le même travail que dill mais je n’ai jamais essayé cpickle. il semble que cela fonctionne littéralement de la même manière. J'utilise l'extension "obj" mais ce n'est pas du tout conventionnel ... Cela me paraissait logique 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"))

au fait, je ne sais pas si vous utilisez iPython, mais parfois, écrire un fichier de cette façon ne vous oblige pas à faire les choses suivantes:

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

rappelez les objets:

model = dill.load(open(wd + "filename.obj","rb"))
1
O.rka

pour le modèle en cours de stockage, vous pouvez également utiliser le format .sav. il stocke le modèle complet et les informations.

0
Ch HaXam