#!/usr/bin/env python # coding: utf-8 # In[1]: from lale.lib.lale import ConcatFeatures as Concat from lale.lib.lale import NoOp from lale.lib.lale import Both from lale.lib.sklearn import KNeighborsClassifier as KNN from lale.lib.sklearn import LogisticRegression as LR from lale.lib.sklearn import MinMaxScaler as Scaler from lale.lib.sklearn import Nystroem from lale.lib.sklearn import PCA # ## Combinator-Style # | Symbol | Name | Description | Sklearn feature | # | ------ | ---- | ------------ | --------------- | # | >> | pipe | Feed to next | `make_pipeline` | # | & | and | Run both | `make_union`, includes concat | # | | | or | Choose one | (missing) | # In[2]: scl = Scaler | NoOp scl.visualize() # In[3]: tfm = (PCA & Nystroem) >> Concat tfm.visualize() # In[4]: clf = KNN | LR clf.visualize() # In[5]: optimizable = scl >> tfm >> clf optimizable.visualize() optimizable.pretty_print(ipython_display=True, show_imports=False) # In[6]: optimizable.pretty_print(ipython_display='input') # In[ ]: # generated by pretty_print(ipython_display='input') from previous cell from sklearn.preprocessing import MinMaxScaler as Scaler from lale.lib.lale import NoOp from sklearn.decomposition import PCA from sklearn.kernel_approximation import Nystroem from lale.lib.lale import ConcatFeatures as Concat from sklearn.neighbors import KNeighborsClassifier as KNN from sklearn.linear_model import LogisticRegression as LR import lale lale.wrap_imported_operators() pipeline = (Scaler | NoOp) >> (PCA & Nystroem) >> Concat >> (KNN | LR) # ## Sklearn-Style # In[7]: from lale.operators import make_choice, make_pipeline, make_union scl = make_choice(Scaler, NoOp) scl.visualize() # In[8]: tfm = make_union(PCA, Nystroem) tfm.visualize() # In[9]: clf = make_choice(KNN, LR) clf.visualize() # In[10]: optimizable = make_pipeline(scl, tfm, clf) optimizable.visualize() optimizable.pretty_print(ipython_display=True, show_imports=False, combinators=False) # In[11]: optimizable.pretty_print(ipython_display='input', combinators=False) # In[ ]: # generated by pretty_print(ipython_display='input') from previous cell from sklearn.preprocessing import MinMaxScaler as Scaler from lale.lib.lale import NoOp from lale.operators import make_choice from sklearn.decomposition import PCA from sklearn.kernel_approximation import Nystroem from lale.operators import make_union from sklearn.neighbors import KNeighborsClassifier as KNN from sklearn.linear_model import LogisticRegression as LR from lale.operators import make_pipeline choice_0 = make_choice(Scaler, NoOp) union = make_union(PCA, Nystroem) choice_1 = make_choice(KNN, LR) pipeline = make_pipeline(choice_0, union, choice_1) # In[12]: import lale lale.wrap_imported_operators() #so combinators work # ## Nested # In[13]: nested = PCA >> (LR(C=0.09) | NoOp >> LR(C=0.19)) nested.visualize() nested.pretty_print(ipython_display=True, show_imports=False) # In[14]: from lale.pretty_print import ipython_display ipython_display(nested.to_json()) # ## Higher-order # In[15]: higher_order = Both(op1=PCA(n_components=2), op2=Nystroem) >> (KNN | LR) higher_order.visualize() higher_order.pretty_print(ipython_display=True, show_imports=False) # In[16]: ipython_display(higher_order.to_json()) # In[17]: from lale.lib.sklearn import VotingClassifier as Vote vote = Vote(estimators=[('knn',KNN), ('pipeline',PCA()>>LR)], voting='soft') vote.visualize() vote.pretty_print(ipython_display=True, show_imports=False)