[PYTHON] Réduction de code - Transformateur de pipeline et de fonction -

Déclencheur

Avec make_pipeline qui est apparu dans Code of 1st place in Mercari competition Je n'ai pas vraiment compris le Function Transformer.

Résumé

Make_pipeline → Convertissez du code tel que [Prétraitement + Apprentissage + Estimation] en un estimateur. La réduction du code est possible.

FunctionTransformer → Convertit n'importe quelle fonction en transformateur. Parce que l'argument de Pipeline doit être un transformateur. La condition minimale pour toute fonction est que l'ajustement et la transformation existent.

Exemple d'utilisation

Exemple d'utilisation ①

Dans l'exemple ci-dessous, SVC est exécuté après l'exécution de PCA (). Le prétraitement et la classification peuvent être exécutés en une série d'opérations.

Site de référence pour l'exemple ci-dessous

qiita.rb


from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn import datasets

#Préparation d'échantillons de données
iris = datasets.load_iris()
X, y = iris.data, iris.target

#Créer un pipeline
estimators = [('reduce_dim', PCA()), ('clf', SVC())]
pipe = Pipeline(steps=estimators)

#Apprentissage
pipe.fit(X, y)

#Prévoir
pipe.predict(X)

Exemple d'utilisation (2) Exemple d'utilisation du code de compétition Mercari

Extrait partiel du Code n ° 1 du concours Mercari

qiita.rb


from sklearn.pipeline import make_pipeline, make_union, Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer as Tfidf

def on_field(f: str, *vec) -> Pipeline:
    return make_pipeline(FunctionTransformer(itemgetter(f), validate=False), *vec)

 vectorizer = make_union(
        on_field('name', Tfidf(max_features=100000, token_pattern='\w+')),
        on_field('text', Tfidf(max_features=100000, token_pattern='\w+', ngram_range=(1, 2))),
        on_field(['shipping', 'item_condition_id'],
                 FunctionTransformer(to_records, validate=False), DictVectorizer()),
        n_jobs=4)

Je suis des instances en pipeline de itemgetter et de Tfidf avec make_pipeline. Je crée mon propre convertisseur en convertissant le getter d'élément en transformateur avec Function Transformer. Cela permet d'identifier les chaînes de caractères importantes dans itemgetter (extraction de chaînes de caractères) en une série d'étapes. Cliquez ici pour obtenir les objets

Recommended Posts

Réduction de code - Transformateur de pipeline et de fonction -
Détails du tri rapide et exemples de code
Résumé et code du papier Adam
À propos de la fonction fork () et de la fonction execve ()
Introduction et mise en œuvre de la fonction d'activation
Pointeur de fonction et objdump ~ Langage C ~
Synthèse de fonctions et application en Python
[Python] Différence entre fonction et méthode
[Python] Arguments de fonction * (étoile) et ** (étoile double)