2015-08-09 14 views
13

Niektóre z moich funkcji w modelu mogą zająć trochę czasu, więc aby szybko eksperymentować z wieloma funkcjami i parametrami, dobrze jest zapisać je na dysku do późniejszego wykorzystania.Zapisywanie części sklearn potoku

Jako konkretny przykład (wzięte z here), załóżmy, że mam następujący rurociągu:

pipeline = Pipeline([ 
    ('extract_essays', EssayExractor()), 
    ('features', FeatureUnion([ 
    ('ngram_tf_idf', Pipeline([ 
     ('counts', CountVectorizer()), 
     ('tf_idf', TfidfTransformer()) 
    ])), 
    ('essay_length', LengthTransformer()), 
    ('misspellings', MispellingCountTransformer()) 
    ])), 
    ('classifier', MultinomialNB()) 
]) 

I chciałbym zmienić CountVectorizer() do CountVectorizer(max_features=1000), to tylko CountVectorizer, MultinomialNB muszą być przeliczane od parametru lub transformacja zanim się zmieniła.

Czy można to w jakiś sposób zrealizować?

+0

Czy pytasz, jak używać siatki strojenia podczas szkolenia potoku lub jak dostosować parametr w już wytrenowanym obiekcie rurociągu? – David

+3

Nauka w systemie Scikit nie zapewnia wbudowanego rozwiązania, problem buforowania pośrednich kroków w potoku jest omawiany w dwóch kwestiach github: https://github.com/scikit-learn/scikit-learn/pull/2086 i https : //github.com/scikit-learn/scikit-learn/pull/3951. – ldirer

+0

@ user3914041 Dzięki za referencje. Wygląda na to, że w mojej pierwszej próbie skasowałem części 'Memory.cache', więc przydało się już to w unikaniu powielania pracy. – simonzack

Odpowiedz

1

Odniosłem pewien sukces, robiąc tego rodzaju rzeczy z Pachyderm. Ma trochę cos podobną do git, która pozwoli ci przechowywać twój przepływ pracy. W repozytorium zanotuj przykład ML pipeline for Iris Classification, który zawiera szczegółowe informacje na temat tworzenia i zapisywania danych szkoleniowych z potoku & w tak zwanym "potoku wnioskowania", który pozwoli na rodzaje transformacji, które próbujesz zastosować i zastosować wywnioskowany potok dane treningowe.

Powiązane problemy