Loading...
NikolaKalev avatar NikolaKalev 1 Точки

Pipeline - как се използва?

В курса по Machine Learning, Данчо, беше споменавал за "pipelie", поредица от вече обучени модели която може да бъде постороена - след което нови данни да минават през така нареченият "pipeline" и дават резултат (без необходимост от обучение). Някой знае ли как може да се направи такъв pipeline? 

0
Machine Learning
dim4o avatar dim4o 288 Точки
Best Answer

Здравей,

Pipeline-а е създаден просто за улеснение и няма как сам по себе си да даде резултат "без необходимост от обучение". Както показва името, това е просто поредица от действия, които могат да се автоматизират. Подобен резултат можеш да постигнеш като си напишеш функция. Няма как обаче да се отървеш от необходимистта на което и да е действие. 

Ето пример за създаване на pipeline:

from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

logistic_regression_pipe = Pipeline(steps=[('scaler_before', StandardScaler()), 
                          ('pca', PCA(n_components=30)),
                          ('scaler_after', StandardScaler()),
                          ('classifier', LogisticRegression())])

Както се вижда това е поредица от действия, която не е обвързана по никакъв начин с някакви данни. Следователно може да бъде приложена към всякакъв вид съвместими данни.

  1. Скалира данните с mean=0 и standard_deviation=1. Това е подготовка за PCA.
  2. Прилага алгоритъм за редуциране на измеренията чрез PCA алгоритъм.
  3. Скалира данните отново. Това не е лошо да се прави след PCA.
  4. Ще проложи алгоритъм LogisticRegressin въргу данните.

След като вече са дефинирани действията може да работим с конкретните данни:

logistic_regression_pipe.fit(features_train, labels_train)
print(logistic_regression_pipe.score(features_test, labels_test))
...

От дефиницията на pipe-а се вижда, че действията имат нещо като placeholder-и. Ето пример за използването им:

params = dict(classifier__C=[0.1, 1, 10],
              pca__n_components=[10, 20, 50])

# init kFold validation
kfold = StratifiedKFold(n_splits=5)

# Grid search for the best Logistic Regression parameters
grid_search_logistic_regresion = GridSearchCV(
    logistic_regression_pipe, param_grid=params, cv=kfold, return_train_score=True, n_jobs=6)

grid_search_logistic_regresion.fit(features_train, labels_train)

В случая чрез placeholder-и те на действията могат да се достъпят и присвоят списъци от параметри, които после да се използват за grid search.

Това е в общи линии. Има доста инфо по въпроса ако се разтърсиш.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.