[Python] Qu'est-ce que Pipeline ...

Bonjour.

Du coup, je me suis intéressé au machine learning et au deep learning, j'ai donc récemment participé au concours kaggle. kaggle a une fonction Notebook, donc j'étais enthousiaste à l'idée de comprendre le code!

"Je ne sais pas du tout ce que cela signifie"

Je n'avais aucune connaissance en programmation, alors quand j'ai regardé le code dans le cahier de Kaggle, cela ressemblait à un chiffrement (rires). Par conséquent, j'ai pensé que je comprendrais lentement chacun d'eux, alors j'aimerais l'écrire ici comme s'il s'agissait d'un journal.

Cette fois, il s'agit de "Pipeline".

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

iris_data = datasets.load_iris()
input_data = iris_data.data
correct = iris_data.target

Pour le moment, j'ai accédé au site suivant. sklearn.pipeline.Pipeline — scikit-learn 0.23.2 documentation

Selon cela, la forme de base est

from sklearn.pipeline import Pipeline pipe = Pipeline ([(méthode de prétraitement), (méthode d'apprentissage)]) pipe.fit (variable explicative, variable objective)

Il semble que le code puisse être simplifié.

Sur cette base, j'ai formé les données d'iris dans une forêt aléatoire.

from sklearn.ensemble import RandomForestClassifier as RFC 

X_train, X_test, y_train, y_test = train_test_split(input_data, correct)
pipe = Pipeline([('scaler', StandardScaler()), 
                 ('RandomForestClassifier', RFC())])
pipe.fit(X_train, y_train)
pipe.score(X_test, y_test)

# 0.9473684210526315

Sur la base de ce qui précède, nous avons standardisé les variables explicatives et nous nous entraînons dans une forêt aléatoire. En les rassemblant dans Pipeline de cette manière, le code devient "concis".

Ci-dessous le code de confirmation.

X_train, X_test, y_train, y_test = train_test_split(input_data, correct)
tr_x, te_x, tr_y, te_y = X_train.copy(), X_test.copy(), y_train.copy(), y_test.copy() #Copie pour chèque

pipe = Pipeline([('scaler', StandardScaler()), 
                 ('Classifier', RFC())])
pipe.fit(X_train, y_train)
print("pipe score = " + str(pipe.score(X_test, y_test)))


from sklearn.preprocessing import StandardScaler

stdsc = StandardScaler()
tr_x = stdsc.fit(tr_x).transform(tr_x)
te_x = stdsc.fit(te_x).transform(te_x)

clf = RFC()
clf.fit(tr_x, tr_y)
print("RFC score = ", clf.score(te_x, te_y))

# pipe score = 0.9473684210526315
# RFC score =  0.9473684210526315

J'ai pu faire correspondre le calcul, donc je savais que le prétraitement de Pipeline fonctionnait correctement.

Je vois, j'ai en quelque sorte appris sur Pipeline. Mais même s'il existe de nombreux pré-processus, un seul peut-il être exécuté?

Apparemment, il semble que plusieurs processus puissent être combinés.

from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier as RFC 
from sklearn.preprocessing import OneHotEncoder
from sklearn.impute import SimpleImputer

preprocessing = Pipeline([
    ('imputer', SimpleImputer(strategy='constant', fill_value='missing')),  #Processus de suppression des valeurs manquantes
    ('onehot', OneHotEncoder(handle_unknown='ignore'))])                    #Un encodage à chaud


rf = Pipeline([
    ('preprocess', preprocessing),
    ('classifier', RFC())])

rf.fit(X_train, y_train)

de cette façon, Tube de formulaire de base = Pipeline ([(méthode de prétraitement), (méthode d'apprentissage)]) En ce qui concerne la (méthode de pré-traitement), il semble qu'une méthode consiste à chevaucher les pipelines sous la forme d'une image comme la notation BNF (ce n'est qu'une histoire d'image).

Recommended Posts

[Python] Qu'est-ce que Pipeline ...
Qu'est-ce que python
Qu'est-ce que Python
[Python] Qu'est-ce que virtualenv
[Python] Python et sécurité-① Qu'est-ce que Python?
[Python] * args ** Qu'est-ce que kwrgs?
Cours de base Python (1 Qu'est-ce que Python)
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce qu'une instruction with?
[Python] Qu'est-ce que @? (À propos des décorateurs)
[python] Quelle est la clé triée?
Python pour la déclaration ~ Qu'est-ce qui est itérable ~
À quoi sert le trait de soulignement Python (_)?
Python> Qu'est-ce qu'une tranche étendue?
Qu'est-ce que l'espace de noms
Qu'est-ce que copy.copy ()
Python est facile
Qu'est-ce que Django? .. ..
Qu'est-ce que dotenv?
Qu'est-ce que POSIX
Qu'est-ce que Linux
Qu'est-ce que le klass?
Qu'est-ce que SALOME?
Qu'est-ce que Linux?
Qu'est-ce que l'hyperopt?
Python est une instance
Qu'est-ce que Linux
Qu'est-ce que pyvenv
Qu'est-ce que __call__
Qu'est-ce que Linux
[Python] Qu'est-ce que la série pandas et DataFrame?
[Python] Qu'est-ce qui est hérité par l'héritage multiple?
Qu'est-ce que NaN? NaN Zoya (Python) (394 jours de retard)
Quel type de langage de programmation est Python?
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Qu'est-ce qu'un chien? Volume d'installation Python
Qu'est-ce qu'un algorithme? Introduction à l'algorithme de recherche] ~ Python ~
python int est infini
Qu'est-ce qu'une distribution?
Qu'est-ce que le F-Score de Piotroski?
Qu'est-ce que la «programmation fonctionnelle» et «orientée objet»? Édition Python
Qu'est-ce que Raspberry Pi?
Qu'est-ce que Calmar Ratio?
Qu'est-ce qu'un terminal?
Qu'est-ce que wheezy dans l'image Docker Python?
[Tutoriel PyTorch ①] Qu'est-ce que PyTorch?
J'ai essayé Python! ] Diplômé aujourd'hui de "Tout le monde Python! Qu'est-ce que Python!"!
Qu'est-ce que le réglage des hyper paramètres?
Qu'est-ce qu'un hacker?
Qu'est-ce que JSON? .. [Remarque]
À quoi sert Linux?
Qu'est-ce qu'un pointeur?
Que comparez-vous avec Python et ==?
Qu'est-ce que l'apprentissage d'ensemble?
Qu'est-ce que TCP / IP?
[Introduction à l'application Udemy Python3 +] 54. Qu'est-ce que Docstrings?
Qu'est-ce que __init__.py de Python?
Qu'est-ce qu'un itérateur?