USADOパイプライン


<研究ノート>アホラールノスの『アホラルノス』における「前」の前段階について


Nota: Por lo que entiendo, en español se le llama tubería, pero como no me siento cómodo hablando de plomería, la llamaré con su nombre en ingles; pipeline.


アホラ・シンM
エルプリメロespipeline Deskkitの学習:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVC

pipe = Pipeline([('scaler', MinMaxScaler()), ('svm', SVC())])
ヘルクリードドスパロス:エルPrimero、Llamado「スケーラー」MinMaxScaler , yエルSegundo、ラママン「SVM」、es una instanciaデSVC . Ahora、Podemos entrenar nuestraパイプライン、como Cualquier Otro Estimador de Scikit Learn :
pipe.fit(X_train, y_train)

USADOパイプラインコンコングリッド検索


Primero , Creamos una grilla de par lenm (パラメータグリッド)
param_grid = {'svm__C': [0.001, 0.01, 0.1, 1, 10, 100],
              'svm__gamma': [0.001, 0.01, 0.1, 1, 10, 100]}
詐欺エステgrilla、usamosGridSearchCV コモシーメンス
grid = GridSearchCV(pipe, param_grid=param_grid, cv=5) # we call the pipeline as an attribute
grid.fit(X_train, y_train)
print("Best cross-validation accuracy: {:.2f}".format(grid.best_score_))
print("Test set score: {:.2f}".format(grid.score(X_test, y_test)))
print("Best parameters: {}".format(grid.best_params_))

Código completo en este link.


HacerパイプラインのNuna Mejor Froma


usandomake_pipeline デScikitは学びます、es mucho mはs sencillo crear unaパイプライン:
from sklearn.pipeline import make_pipeline
# sintaxis estandar
pipe_long = Pipeline([("scaler", MinMaxScaler()), ("svm", SVC(C=100))])
# sintaxis abreviada
pipe_short = make_pipeline(MinMaxScaler(), SVC(C=100))

アレクディンドAロスアトリウム


Un de Los Pasos de la Pipelineの検査に関する一考察POR Ejploo , Los coeficientes de un modelo lineo o Los Componentes Extrados Por PCA (主成分分析)フランスにおけるエトス・パソスエヌ・ヌーナの歴史的変遷named_steps , ロス・アトリエの『ロス・アヴェントス』におけるディノンゴリオ
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

pipe = make_pipeline(StandardScaler(), PCA(n_components=2), StandardScaler())
print("Pipeline steps:\n{}".format(pipe.steps))

pipe.fit(cancer.data)
# extrae los primeros dos componentes principales del paso de "pca"
components = pipe.named_steps['pca'].components_

print("components.shape: {}".format(components.shape))

Accediendo A AtbutosエヌNunaパイプラインコングリッド検索


VAMOSは、リアリティのNAのグリッドを検索しますStandardScaler パラエスカラロスDatosアンテデpasarlos al clasificador.
from sklearn.linear_model import LogisticRegression

pipe = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
Logistica es del par地下鉄の後悔に対する正則化c :
param_grid = {'logisticregression__C': [0.01, 0.1, 1, 10, 100]}

Recuerda: La sintaxis para definir una cuadrícula de parámetros para una pipeline es especificar para cada parámetro el nombre del paso, seguido por __ (doble guion bajo), seguido por el nombre del parámetro. Por ejemplo, para acceder al parámetro gamma de un modelo svm, llamamos a svm__gamma, para el parametro C de un modelo LogisticRegression, llamamos a logisticregression__C.


ELデータセットY entrena el modelo :
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=4)

grid = GridSearchCV(pipe, param_grid, cv=5)
grid.fit(X_train, y_train)
<論説> C・・・Oに対する主訴としての行為GridSearchCV ?
print('Best estimator:\n{}'.format(grid.best_estimator_))
エステ・カジノbest_estimator_ ESウナパイプラインは、ドスPasosに合います.StandardScaler YLogisticRegression . パラ・アクセLogisticRegression , ポドモススウサエルアトブトnamed_steps デラパイプライン
print("Logistic regression step:\n".format(grid.best_estimator_.named_steps['logisticregression']))
Ahora que Ya Tenemos la Gregory in a n n log a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a n a log and the log a stica entrenada , podemos accers a los coeficientes asociados a a caada atributo de entrada :
print("Logistic regression coefficients:\n{}".format(grid.best_estimator_.named_steps['logisticregression'].coef_)) 

Link a GitHub

Opteniendo Pasos de Preprocesamiento con Grid検索


USADOのパイプラインは、podemosのカプセルのtodosロスpasos de pre procesamienenエヌnuestro proceso de aprendizaje automのようなtico esの単独のソロエバードールデscikitを学ぶ.OTRO Predicicio de Haer Estes es que Podemos ajustar los Periphesamiento Uusando El Dreamtado de Nua Tarea監督
from sklearn.datasets import load_boston
boston = load_boston()
from sklearn.linear_model import Ridge

X_train, X_test, y_train, y_test = train_test_split(
    boston.data, boston.target, random_state=0)

from sklearn.preprocessing import PolynomialFeatures
pipe = make_pipeline(StandardScaler(), PolynomialFeatures(), Ridge())
Solinomios elegir , O - si Eleir polinomios O interaccionesの成績メトロアルファOリッジについての理想的な方法についての質問集
パラhacer esto、definmos unaparam_grid コンティネン・アンボス,前フィジャドスにおけるパロ・エル・ノムブレ・デ・ロス・パロス
param_grid = {'polynomialfeatures__degree': [1, 2, 3],
              'ridge__alpha': [0.001, 0.01, 0.1, 1, 10, 100]}
Ahora Podemos Correr de NuevoラGrilla de Parametros :
grid = GridSearchCV(pipe, param_grid=param_grid, cv=5, n_jobs=-1)
grid.fit(X_train, y_train)
USMAROのヒートマップにおけるCruzada ( Cross Validation )の検証
plt.matshow(grid.cv_results_['mean_test_score'].reshape(3, -1),
            vmin=0, cmap='viridis')
plt.xlabel("ridge__alpha")
plt.ylabel("polynomialfeatures__degree")
plt.xticks(range(len(param_grid['ridge__alpha'])), param_grid['ridge__alpha'])
plt.yticks(range(len(param_grid['polynomialfeatures__degree'])),
           param_grid['polynomialfeatures__degree'])
plt.colorbar()

USANUグリッド検索パラパラ


AUCは、dejo un JejecoRandomForestClassifier 叶雲SVC . サエモスモスSVC Turbien Buscamos SobrususarとしてStandardScaler o前procesarロスデータ.パラエルRandomForestClassifier , Ya Sabemos que Necesita Ningun Tipo de Preprocesamiento
パイプラインパイプライン.アキュラAmbramosロスPasos説明書.Queremos Dos Pasos , Uno de Preprocesamiento y despues el clasificadorシュヴァードスインスティンニールSVC YStandardScaler :
pipe = Pipeline([('preprocessing', StandardScaler()), ('classifier', SVC())])
Ahora Podemosは、ラGrillaデpar Gauquasパラシュートで降下します.クレモフィカドール『海』RandomForestClassifier o SVC . <研究ノート>アジュススター, y necesitan diferentes preprocesamientos , podemos hacer una lista de grillas de b - b . squeda :
from sklearn.ensemble import RandomForestClassifier

param_grid = [
              {'classifier': [SVC()], 'preprocessing': [StandardScaler(), None],
               'classifier__gamma': [0.001, 0.01, 0.1, 1, 10, 100],
               'classifier__C': [0.001, 0.01, 0.1, 1, 10, 100]},
              {'classifier': [RandomForestClassifier (n_estimators=100)],
               'preprocessing': [None], 'classifier__max_features': [1, 2, 3]}]
Ahora instanciamos y corremos la grilla como siempre :
X_train, X_test, y_train, y_test = train_test_split(
    cancer.data, cancer.target, random_state=0)

grid = GridSearchCV(pipe, param_grid, cv=5)
grid.fit(X_train, y_train)

print("Best params:\n{}\n".format(grid.best_params_))
print("Best cross-validation score: {:.2f}".format(grid.best_score_))
print("Test-set score: {:.2f}".format(grid.score(X_test, y_test)))
y de esta sencilla manera,obtenemos el mejor modelo con sus mejoresはアウモリ属に属する.

結論


クリアーパイプラインは、Gan ManeraデAhorrar Mucho TiempoエヌNuestros proyectosです.エスパーque este articulo les haya servido、y si llegaste hasta aquoは、muchasグラシアス.ハスタラ近郊!