Pour un projet de classification de texte, j'ai créé un pipeline pour la sélection de caractéristiques et le classificateur. Maintenant, ma question est de savoir s'il est possible d'inclure le module d'extraction de caractéristiques dans le pipeline et comment. J'ai regardé certaines choses à ce sujet, mais cela ne semble pas correspondre à mon code actuel.Inclure l'extraction de caractéristiques dans le pipeline sklearn
C'est ce que j'ai maintenant:
# feature_extraction module.
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.feature_extraction import DictVectorizer
import numpy as np
vec = DictVectorizer()
X = vec.fit_transform(instances)
scaler = StandardScaler(with_mean=False) # we use cross validation, no train/test set
X_scaled = scaler.fit_transform(X) # To make sure everything is on the same scale
enc = LabelEncoder()
y = enc.fit_transform(labels)
# Feature selection and classification pipeline
from sklearn.feature_selection import SelectKBest, mutual_info_classif
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import LinearSVC
from sklearn import linear_model
from sklearn.pipeline import Pipeline
feat_sel = SelectKBest(mutual_info_classif, k=200)
clf = linear_model.LogisticRegression()
pipe = Pipeline([('mutual_info', feat_sel), ('logistregress', clf)]))
y_pred = model_selection.cross_val_predict(pipe, X_scaled, y, cv=10)
Comment puis-je mettre le dictvectorizer jusqu'à ce que l'encodeur d'étiquettes dans le pipeline?
oui, instances est un dict. Donc, je n'ai plus besoin de faire fit.transform dans l'extraction de feature? – Bambi
Correct, vous n'avez pas besoin de faire le 'fit_transform'. Le pipeline le fera automatiquement. –