J'essaie de comprendre comment fonctionnent les pipelines scikit-learn. J'ai quelques données fictives et j'essaie d'ajuster un modèle Random Forest à des données d'iris. Voici un peu de code
from sklearn import datasets
from sklearn import svm
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
import sklearn.externals
import joblib
from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
# Load the Iris dataset
iris = datasets.load_iris()
Diviser les données en formation et test et créer un pipeline en 2 étapes
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target,random_state=0)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
pipeline = Pipeline([('feature_selection', SelectKBest(chi2, k=2)), ('classification', RandomForestClassifier()) ])
print(type(pipeline))
(112, 4) (38, 4) (112,) (38,)
<class 'sklearn.pipeline.Pipeline'>
Mais lorsque j'exécute pipeline.fit_transform(X_train, y_train)
Je reçois un message d'erreur disant AttributeError: 'RandomForestClassifier' object has no attribute 'transform'
Cependant, pipeline.fit(X_train, y_train)
fonctionne bien.
Dans un scénario normal, sans aucune pipeline
En règle générale, j'ai pris un modèle ML et je l'ai appliqué au code. fit_transform()
sur mon training
et transform
sur mon unseen dataset
pour générer des prédictions.
Comment puis-je mettre en place quelque chose de similaire en utilisant des pipelines dans sklearn
. Je veux sauvegarder mon pipeline et ensuite effectuer un scoring en le chargeant à nouveau. Puis-je le faire en utilisant pickle
?
Une autre chose concerne le modèle RF lui-même. Je peux obtenir le résumé du modèle en utilisant les méthodes du modèle RF, mais je ne vois aucune méthode dans mon pipeline qui me permette d'imprimer le résumé du modèle à l'aide de pipeline
.