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
エルプリメロes
pipeline
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グラシアス.ハスタラ近郊!
Reference
この問題について(USADOパイプライン), 我々は、より多くの情報をここで見つけました
https://dev.to/ruizleandro/usando-pipelines-para-ahorrar-tiempo-li0
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
param_grid = {'svm__C': [0.001, 0.01, 0.1, 1, 10, 100],
'svm__gamma': [0.001, 0.01, 0.1, 1, 10, 100]}
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.
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))
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))
from sklearn.linear_model import LogisticRegression
pipe = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
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
.
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)
print('Best estimator:\n{}'.format(grid.best_estimator_))
print("Logistic regression step:\n".format(grid.best_estimator_.named_steps['logisticregression']))
print("Logistic regression coefficients:\n{}".format(grid.best_estimator_.named_steps['logisticregression'].coef_))
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())
param_grid = {'polynomialfeatures__degree': [1, 2, 3],
'ridge__alpha': [0.001, 0.01, 0.1, 1, 10, 100]}
grid = GridSearchCV(pipe, param_grid=param_grid, cv=5, n_jobs=-1)
grid.fit(X_train, y_train)
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()
pipe = Pipeline([('preprocessing', StandardScaler()), ('classifier', SVC())])
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]}]
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)))
クリアーパイプラインは、Gan ManeraデAhorrar Mucho TiempoエヌNuestros proyectosです.エスパーque este articulo les haya servido、y si llegaste hasta aquoは、muchasグラシアス.ハスタラ近郊!
Reference
この問題について(USADOパイプライン), 我々は、より多くの情報をここで見つけました https://dev.to/ruizleandro/usando-pipelines-para-ahorrar-tiempo-li0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol