From 3d8dbcd28f233e5ca32fb9487fc1fe555a09c0c2 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 13 Feb 2020 11:37:41 -0800 Subject: [PATCH 001/245] pickling functionality --- examples/vignette.ipynb | 210 ++++++++++++++++++++++++++--------- ngboost/ngboost.py | 27 +++++ ngboost/tests/test_distns.py | 3 + 3 files changed, 186 insertions(+), 54 deletions(-) diff --git a/examples/vignette.ipynb b/examples/vignette.ipynb index 8fc021d3..b9994114 100644 --- a/examples/vignette.ipynb +++ b/examples/vignette.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 8, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -31,20 +31,20 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6466 val_loss=0.0000 scale=0.5000 norm=3.3445\n", - "[iter 100] loss=3.0647 val_loss=0.0000 scale=1.0000 norm=3.6810\n", - "[iter 200] loss=2.4172 val_loss=0.0000 scale=2.0000 norm=3.9852\n", - "[iter 300] loss=2.0091 val_loss=0.0000 scale=1.0000 norm=1.5805\n", - "[iter 400] loss=1.8331 val_loss=0.0000 scale=1.0000 norm=1.4402\n", - "Test MSE 7.144910503688899\n", - "Test NLL 2.929927437108882\n" + "[iter 0] loss=3.5943 val_loss=0.0000 scale=0.5000 norm=3.1659\n", + "[iter 100] loss=3.0313 val_loss=0.0000 scale=1.0000 norm=3.6096\n", + "[iter 200] loss=2.3518 val_loss=0.0000 scale=2.0000 norm=3.7780\n", + "[iter 300] loss=1.9689 val_loss=0.0000 scale=2.0000 norm=3.0412\n", + "[iter 400] loss=1.8020 val_loss=0.0000 scale=1.0000 norm=1.3862\n", + "Test MSE 11.74546103315823\n", + "Test NLL 3.5726360018956087\n" ] } ], @@ -80,17 +80,17 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'loc': array([22.30086284, 17.60249364, 22.59308329, 19.80476978, 32.7724845 ]),\n", - " 'scale': array([1.44388336, 1.5834853 , 1.26117502, 1.54215879, 1.59310141])}" + "{'loc': array([24.86452787, 17.94111028, 20.59806152, 23.66830739, 19.76809899]),\n", + " 'scale': array([1.48279066, 1.38775584, 1.42909473, 0.98669068, 1.22823768])}" ] }, - "execution_count": 10, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -135,7 +135,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -163,7 +163,7 @@ { "data": { "text/plain": [ - "array([50.13241257, 15.57358815, 20.92892103, 24.74608742, 14.03258949])" + "array([12.96594041, 15.34704932, 12.51212606, 36.600307 , 17.54788321])" ] }, "execution_count": 5, @@ -183,7 +183,7 @@ { "data": { "text/plain": [ - "array([49.05324748, 15.64012362, 21.0497493 , 23.38368345, 13.78404979])" + "array([13.68114563, 15.35553609, 12.75141496, 36.85744468, 17.64392172])" ] }, "execution_count": 6, @@ -203,7 +203,7 @@ { "data": { "text/plain": [ - "{'scale': array([49.05324748, 15.64012362, 21.0497493 , 23.38368345, 13.78404979])}" + "{'scale': array([13.68114563, 15.35553609, 12.75141496, 36.85744468, 17.64392172])}" ] }, "execution_count": 7, @@ -231,18 +231,18 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=1.2521 val_loss=0.0000 scale=8.0000 norm=4.7796\n", - "[iter 100] loss=0.5687 val_loss=0.0000 scale=2.0000 norm=0.7759\n", - "[iter 200] loss=0.3025 val_loss=0.0000 scale=4.0000 norm=0.8196\n", - "[iter 300] loss=0.1894 val_loss=0.0000 scale=4.0000 norm=0.5053\n", - "[iter 400] loss=0.1047 val_loss=0.0000 scale=4.0000 norm=0.3314\n" + "[iter 0] loss=1.2229 val_loss=0.0000 scale=4.0000 norm=2.5264\n", + "[iter 100] loss=0.5316 val_loss=0.0000 scale=2.0000 norm=0.7395\n", + "[iter 200] loss=0.2912 val_loss=0.0000 scale=4.0000 norm=0.7919\n", + "[iter 300] loss=0.1673 val_loss=0.0000 scale=8.0000 norm=0.8899\n", + "[iter 400] loss=0.0792 val_loss=0.0000 scale=4.0000 norm=0.2917\n" ] } ], @@ -332,7 +332,7 @@ { "data": { "text/plain": [ - "array([1, 0, 1, 1, 1])" + "array([1, 0, 0, 1, 1])" ] }, "execution_count": 10, @@ -352,11 +352,11 @@ { "data": { "text/plain": [ - "array([[3.76836020e-03, 9.95955712e-01, 2.75927822e-04],\n", - " [9.94560554e-01, 4.91255650e-03, 5.26889742e-04],\n", - " [2.88689817e-03, 9.96901717e-01, 2.11385186e-04],\n", - " [1.45193967e-02, 9.85479045e-01, 1.55785396e-06],\n", - " [1.36456817e-02, 9.86209216e-01, 1.45102549e-04]])" + "array([[9.31753755e-03, 9.89886479e-01, 7.95983288e-04],\n", + " [9.81325822e-01, 1.44814322e-02, 4.19274590e-03],\n", + " [5.11989449e-01, 4.37524715e-01, 5.04858357e-02],\n", + " [8.81580568e-03, 9.90431073e-01, 7.53121085e-04],\n", + " [2.33686610e-02, 9.75128444e-01, 1.50289466e-03]])" ] }, "execution_count": 11, @@ -376,10 +376,9 @@ { "data": { "text/plain": [ - "{'p0': array([0.00376836, 0.99456055, 0.0028869 , 0.0145194 , 0.01364568]),\n", - " 'p1': array([0.99595571, 0.00491256, 0.99690172, 0.98547905, 0.98620922]),\n", - " 'p2': array([2.75927822e-04, 5.26889742e-04, 2.11385186e-04, 1.55785396e-06,\n", - " 1.45102549e-04])}" + "{'p0': array([0.00931754, 0.98132582, 0.51198945, 0.00881581, 0.02336866]),\n", + " 'p1': array([0.98988648, 0.01448143, 0.43752471, 0.99043107, 0.97512844]),\n", + " 'p2': array([0.00079598, 0.00419275, 0.05048584, 0.00075312, 0.00150289])}" ] }, "execution_count": 12, @@ -425,7 +424,7 @@ " Dist=.Categorical'>,\n", " Score=, learning_rate=0.01,\n", " minibatch_frac=1.0, n_estimators=500, natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x1098D8D10, tol=0.0001,\n", + " random_state=RandomState(MT19937) at 0x10FC27D10, tol=0.0001,\n", " verbose=False, verbose_eval=100)" ] }, @@ -474,7 +473,7 @@ " Dist=.SurvivalDistn'>,\n", " Score=, learning_rate=0.01,\n", " minibatch_frac=1.0, n_estimators=500, natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x1098D8D10, tol=0.0001,\n", + " random_state=RandomState(MT19937) at 0x10FC27D10, tol=0.0001,\n", " verbose=False, verbose_eval=100)" ] }, @@ -514,7 +513,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6434 val_loss=0.0000 scale=0.5000 norm=3.4614\n" + "[iter 0] loss=3.6079 val_loss=0.0000 scale=0.5000 norm=3.2045\n" ] }, { @@ -531,7 +530,7 @@ " Dist=,\n", " Score=, learning_rate=0.01,\n", " minibatch_frac=0.5, n_estimators=100, natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x11838C258, tol=0.0001,\n", + " random_state=RandomState(MT19937) at 0x10FC27D10, tol=0.0001,\n", " verbose=True, verbose_eval=100)" ] }, @@ -596,7 +595,7 @@ { "data": { "text/plain": [ - "array([1, 1, 0, 1, 1])" + "array([1, 0, 0, 1, 1])" ] }, "execution_count": 17, @@ -617,9 +616,9 @@ { "data": { "text/plain": [ - "{'p0': array([0.0026707 , 0.0026707 , 0.98645598, 0.0026707 , 0.00974706]),\n", - " 'p1': array([0.99717031, 0.99717031, 0.0052626 , 0.99717031, 0.98999218]),\n", - " 'p2': array([0.00015899, 0.00015899, 0.00828142, 0.00015899, 0.00026076])}" + "{'p0': array([0.00931798, 0.98132496, 0.50971742, 0.00881622, 0.02138126]),\n", + " 'p1': array([0.989886 , 0.01448215, 0.43558461, 0.99043062, 0.97726061]),\n", + " 'p2': array([0.00079602, 0.00419289, 0.05469797, 0.00075316, 0.00135814])}" ] }, "execution_count": 18, @@ -648,12 +647,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6357 val_loss=3.6319 scale=0.5000 norm=3.3471\n", - "[iter 100] loss=3.0756 val_loss=3.2082 scale=1.0000 norm=3.7605\n", - "[iter 200] loss=2.4103 val_loss=2.9428 scale=2.0000 norm=3.8016\n", - "[iter 300] loss=1.9591 val_loss=3.7327 scale=2.0000 norm=2.9567\n", - "[iter 400] loss=1.7564 val_loss=4.8953 scale=1.0000 norm=1.3309\n", - "189\n" + "[iter 0] loss=3.6456 val_loss=3.5938 scale=0.5000 norm=3.4019\n", + "[iter 100] loss=3.1001 val_loss=3.1220 scale=1.0000 norm=3.8740\n", + "[iter 200] loss=2.4532 val_loss=2.6877 scale=2.0000 norm=3.9502\n", + "[iter 300] loss=1.9924 val_loss=2.7163 scale=2.0000 norm=3.0596\n", + "[iter 400] loss=1.7893 val_loss=3.0873 scale=1.0000 norm=1.3624\n", + "243\n" ] } ], @@ -687,10 +686,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6357 val_loss=3.6319 scale=0.5000 norm=3.3471\n", - "[iter 100] loss=3.0756 val_loss=3.2089 scale=1.0000 norm=3.7605\n", + "[iter 0] loss=3.6456 val_loss=3.5938 scale=0.5000 norm=3.4019\n", + "[iter 100] loss=3.1001 val_loss=3.1221 scale=1.0000 norm=3.8740\n", + "[iter 200] loss=2.4532 val_loss=2.6902 scale=2.0000 norm=3.9502\n", "== Early stopping achieved.\n", - "== Best iteration / VAL 189 (val_loss=2.9344)\n" + "== Best iteration / VAL 243 (val_loss=2.6348)\n" ] } ], @@ -778,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -793,7 +793,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -802,9 +802,21 @@ "Text(0.5, 1.0, 'scale param')" ] }, - "execution_count": 23, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ @@ -877,7 +889,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -897,6 +909,96 @@ "shap_values = explainer.shap_values(X_reg_train)\n", "shap.summary_plot(shap_values, X_reg_train, feature_names=load_boston()['feature_names'])" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Saving Models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Saving ngboost models is easy with the `pickle` package:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[iter 0] loss=3.6456 val_loss=0.0000 scale=0.5000 norm=3.4019\n", + "[iter 100] loss=3.1001 val_loss=0.0000 scale=1.0000 norm=3.8740\n", + "[iter 200] loss=2.4532 val_loss=0.0000 scale=2.0000 norm=3.9502\n", + "[iter 300] loss=1.9924 val_loss=0.0000 scale=2.0000 norm=3.0596\n", + "[iter 400] loss=1.7893 val_loss=0.0000 scale=1.0000 norm=1.3624\n" + ] + } + ], + "source": [ + "ngb = NGBRegressor().fit(X_reg_train, Y_reg_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle\n", + "with open(\"/Users/c242587/Desktop/ngbtest.p\", \"wb\") as f:\n", + " pickle.dump(ngb, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"/Users/c242587/Desktop/ngbtest.p\", \"rb\") as f:\n", + " ngb_unpickled = pickle.load(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test MSE 4.936884111475998\n", + "Test NLL 2.2596615579233683\n" + ] + } + ], + "source": [ + "Y_preds = ngb_unpickled.predict(X_test)\n", + "Y_dists = ngb_unpickled.pred_dist(X_test)\n", + "\n", + "# test Mean Squared Error\n", + "test_MSE = mean_squared_error(Y_preds, Y_test)\n", + "print('Test MSE', test_MSE)\n", + "\n", + "# test Negative Log Likelihood\n", + "test_NLL = -Y_dists.logpdf(Y_test).mean()\n", + "print('Test NLL', test_NLL)" + ] } ], "metadata": { diff --git a/ngboost/ngboost.py b/ngboost/ngboost.py index 411962fd..24134481 100644 --- a/ngboost/ngboost.py +++ b/ngboost/ngboost.py @@ -55,6 +55,33 @@ def __init__(self, Dist=Normal, Score=LogScore, self.random_state = check_random_state(random_state) self.best_val_loss_itr = None + def __getstate__(self): + state = self.__dict__.copy() + # Remove the unpicklable entries. + del state['Manifold'] + return state + + def __setstate__(self, state_dict): + state_dict['Manifold'] = manifold(state_dict['Score'], state_dict['Dist']) + self.__dict__ = state_dict + + def __getnewargs_ex__(self): + # The method must return a pair (args, kwargs) where args is a tuple of positional arguments and + # kwargs a dictionary of named arguments for constructing the object. + return (tuple(),{ + 'Dist':self.Dist, + 'Score':self.Score, + 'Base':self.Base, + 'natural_gradient':self.natural_gradient, + 'n_estimators':self.n_estimators, + 'learning_rate':self.learning_rate, + 'minibatch_frac':self.minibatch_frac, + 'verbose':self.verbose, + 'verbose_eval':self.verbose_eval, + 'tol':self.tol, + 'random_state':self.random_state + }) + def fit_init_params_to_marginal(self, Y, sample_weight=None, iters=1000): self.init_params = self.Manifold.fit(Y) # would be best to put sample weights here too return diff --git a/ngboost/tests/test_distns.py b/ngboost/tests/test_distns.py index 4c9d5aaa..c6ede077 100644 --- a/ngboost/tests/test_distns.py +++ b/ngboost/tests/test_distns.py @@ -11,6 +11,9 @@ import numpy as np +# test all the dist methods and score implementation methods, i.e. they all return proper shapes and sizes and types +# check metric lines up with defaults for lognormal where applicable + @pytest.fixture(scope="module") def learners(): # add some learners that aren't trees From d6132622a4a447e7e52fd188284a1f684a691f47 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 13 Feb 2020 12:07:32 -0800 Subject: [PATCH 002/245] started survival tests --- ngboost/tests/test_distns.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/ngboost/tests/test_distns.py b/ngboost/tests/test_distns.py index c6ede077..7cc6a8b9 100644 --- a/ngboost/tests/test_distns.py +++ b/ngboost/tests/test_distns.py @@ -26,7 +26,6 @@ class TestRegDistns(): @pytest.fixture(scope="class") def reg_dists(self): - # try importing these in the class but outside the fn return { Normal: [LogScore, CRPScore], LogNormal: [LogScore, CRPScore], @@ -52,7 +51,36 @@ def test_dists(self, learners, reg_dists, reg_data): # test what happens when a dist that's not regression is passed in -# test survival stuff +class TestSurvDistns(): + + @pytest.fixture(scope="class") + def surv_dists(self): + return { + LogNormal: [LogScore, CRPScore], + Exponential: [LogScore, CRPScore] + } + + @pytest.fixture(scope="class") + def surv_data(self): + X, Y = load_boston(True) + X_surv_train, X_surv_test, Y_surv_train, Y_surv_test = train_test_split(X, Y, test_size=0.2) + + # introduce administrative censoring to simulate survival data + T_surv_train = np.minimum(Y_surv_train, 30) # time of an event or censoring + E_surv_train = Y_surv_train > 30 # 1 if T[i] is the time of an event, 0 if it's a time of censoring + return X_surv_train, X_surv_test, T_surv_train, E_surv_train, Y_surv_test + + def test_dists(self, learners, surv_dists, surv_data): + X_surv_train, X_surv_test, T_surv_train, E_surv_train, Y_surv_test = surv_data + for Dist, Scores in surv_dists.items(): + for Score in Scores: + for Learner in learners: + # test early stopping features + ngb = NGBSurvival(Dist=Dist, Score=Score, Base=Learner, verbose=False) + ngb.fit(X_surv_train, T_surv_train, E_surv_train) + y_pred = ngb.predict(X_surv_test) + y_dist = ngb.pred_dist(X_surv_test) + # test properties of output class TestClsDistns(): From 27f3897e3723baf80e51aeeac6fbc155cd5c86f5 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 13 Feb 2020 12:35:23 -0800 Subject: [PATCH 003/245] implemented column subsampling --- examples/vignette.ipynb | 22 ++++++++++++---------- ngboost/api.py | 12 +++++++++--- ngboost/ngboost.py | 37 ++++++++++++++++++++++++------------- 3 files changed, 45 insertions(+), 26 deletions(-) diff --git a/examples/vignette.ipynb b/examples/vignette.ipynb index b9994114..3b16c2a8 100644 --- a/examples/vignette.ipynb +++ b/examples/vignette.ipynb @@ -31,20 +31,20 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.5943 val_loss=0.0000 scale=0.5000 norm=3.1659\n", - "[iter 100] loss=3.0313 val_loss=0.0000 scale=1.0000 norm=3.6096\n", - "[iter 200] loss=2.3518 val_loss=0.0000 scale=2.0000 norm=3.7780\n", - "[iter 300] loss=1.9689 val_loss=0.0000 scale=2.0000 norm=3.0412\n", - "[iter 400] loss=1.8020 val_loss=0.0000 scale=1.0000 norm=1.3862\n", - "Test MSE 11.74546103315823\n", - "Test NLL 3.5726360018956087\n" + "[iter 0] loss=3.6472 val_loss=0.0000 scale=0.5000 norm=3.4604\n", + "[iter 100] loss=3.0978 val_loss=0.0000 scale=1.0000 norm=3.9637\n", + "[iter 200] loss=2.5082 val_loss=0.0000 scale=2.0000 norm=4.6709\n", + "[iter 300] loss=2.1126 val_loss=0.0000 scale=2.0000 norm=3.4394\n", + "[iter 400] loss=1.9856 val_loss=0.0000 scale=1.0000 norm=1.6529\n", + "Test MSE 11.746884594838457\n", + "Test NLL 2.7693067339587607\n" ] } ], @@ -501,7 +501,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The learning rate, number of estimators, and minibatch fraction are also easily adjusted:" + "The learning rate, number of estimators, minibatch fraction, and column subsampling are also easily adjusted:" ] }, { @@ -540,7 +540,9 @@ } ], "source": [ - "NGBRegressor(n_estimators=100, learning_rate=0.01, minibatch_frac=0.5).fit(X_reg_train, Y_reg_train)" + "ngb = NGBRegressor(n_estimators=100, learning_rate=0.01, \n", + " minibatch_frac=0.5, col_sample=0.5)\n", + "ngb.fit(X_reg_train, Y_reg_train)" ] }, { diff --git a/ngboost/api.py b/ngboost/api.py index 95932db9..d6b03bd4 100644 --- a/ngboost/api.py +++ b/ngboost/api.py @@ -21,6 +21,7 @@ class NGBRegressor(NGBoost, BaseEstimator): n_estimators : the number of boosting iterations to fit learning_rate : the learning rate minibatch_frac : the percent subsample of rows to use in each boosting iteration + col_sample : the percent subsample of columns to use in each boosting iteration verbose : flag indicating whether output should be printed during fitting verbose_eval : increment (in boosting iterations) at which output should be printed tol : numerical tolerance to be used in optimization @@ -37,6 +38,7 @@ def __init__(self, n_estimators=500, learning_rate=0.01, minibatch_frac=1.0, + col_sample=1.0, verbose=True, verbose_eval=100, tol=1e-4, @@ -58,7 +60,7 @@ class DistWithUncensoredScore(Dist): Dist = DistWithUncensoredScore super().__init__(Dist, Score, Base, natural_gradient, n_estimators, learning_rate, - minibatch_frac, verbose, verbose_eval, tol, random_state) + minibatch_frac,col_sample, verbose, verbose_eval, tol, random_state) class NGBClassifier(NGBoost, BaseEstimator): ''' @@ -74,6 +76,7 @@ class NGBClassifier(NGBoost, BaseEstimator): n_estimators : the number of boosting iterations to fit learning_rate : the learning rate minibatch_frac : the percent subsample of rows to use in each boosting iteration + col_sample : the percent subsample of columns to use in each boosting iteration verbose : flag indicating whether output should be printed during fitting verbose_eval : increment (in boosting iterations) at which output should be printed tol : numerical tolerance to be used in optimization @@ -89,13 +92,14 @@ def __init__(self, n_estimators=500, learning_rate=0.01, minibatch_frac=1.0, + col_sample=1.0, verbose=True, verbose_eval=100, tol=1e-4, random_state=None): assert issubclass(Dist, ClassificationDistn), f'{Dist.__name__} is not useable for classification.' super().__init__(Dist, Score, Base, natural_gradient, n_estimators, learning_rate, - minibatch_frac, verbose, verbose_eval, tol, random_state) + minibatch_frac, col_sample, verbose, verbose_eval, tol, random_state) def predict_proba(self, X, max_iter=None): ''' @@ -137,6 +141,7 @@ class NGBSurvival(NGBoost, BaseEstimator): n_estimators : the number of boosting iterations to fit learning_rate : the learning rate minibatch_frac : the percent subsample of rows to use in each boosting iteration + col_sample : the percent subsample of columns to use in each boosting iteration verbose : flag indicating whether output should be printed during fitting verbose_eval : increment (in boosting iterations) at which output should be printed tol : numerical tolerance to be used in optimization @@ -152,6 +157,7 @@ def __init__(self, n_estimators=500, learning_rate=0.01, minibatch_frac=1.0, + col_sample = 1.0, verbose=True, verbose_eval=100, tol=1e-4, @@ -168,7 +174,7 @@ def fit(Y): # and expects a {time, event} array as Y. # assert issubclass(Dist, RegressionDistn), f'{Dist.__name__} is not useable for survival.' super().__init__(SurvivalDistn, Score, Base, natural_gradient, n_estimators, learning_rate, - minibatch_frac, verbose, verbose_eval, tol, random_state) + minibatch_frac, col_sample, verbose, verbose_eval, tol, random_state) def fit(self, X, T, E, X_val = None, T_val = None, E_val = None, diff --git a/ngboost/ngboost.py b/ngboost/ngboost.py index 24134481..276d436c 100644 --- a/ngboost/ngboost.py +++ b/ngboost/ngboost.py @@ -35,7 +35,7 @@ class NGBoost(object): ''' def __init__(self, Dist=Normal, Score=LogScore, Base=default_tree_learner, natural_gradient=True, - n_estimators=500, learning_rate=0.01, minibatch_frac=1.0, + n_estimators=500, learning_rate=0.01, minibatch_frac=1.0, col_sample=1.0, verbose=True, verbose_eval=100, tol=1e-4, random_state=None): self.Dist = Dist @@ -46,11 +46,13 @@ def __init__(self, Dist=Normal, Score=LogScore, self.n_estimators = n_estimators self.learning_rate = learning_rate self.minibatch_frac = minibatch_frac + self.col_sample = col_sample self.verbose = verbose self.verbose_eval = verbose_eval self.init_params = None self.base_models = [] self.scalings = [] + self.col_idxs = [] self.tol = tol self.random_state = check_random_state(random_state) self.best_val_loss_itr = None @@ -76,6 +78,7 @@ def __getnewargs_ex__(self): 'n_estimators':self.n_estimators, 'learning_rate':self.learning_rate, 'minibatch_frac':self.minibatch_frac, + 'col_sample':self.col_sample, 'verbose':self.verbose, 'verbose_eval':self.verbose_eval, 'tol':self.tol, @@ -89,19 +92,26 @@ def fit_init_params_to_marginal(self, Y, sample_weight=None, iters=1000): def pred_param(self, X, max_iter=None): m, n = X.shape params = np.ones((m, self.Manifold.n_params)) * self.init_params - for i, (models, s) in enumerate(zip(self.base_models, self.scalings)): + for i, (models, s, col_idx) in enumerate(zip(self.base_models, self.scalings, self.col_idxs)): if max_iter and i == max_iter: break - resids = np.array([model.predict(X) for model in models]).T + resids = np.array([model.predict(X[:,col_idx]) for model in models]).T params -= self.learning_rate * resids * s return params def sample(self, X, Y, params): - if self.minibatch_frac == 1.0: - return np.arange(len(Y)), X, Y, params - sample_size = int(self.minibatch_frac * len(Y)) - idxs = self.random_state.choice(np.arange(len(Y)), sample_size, replace=False) - return idxs, X[idxs,:], Y[idxs], params[idxs, :] + idxs = np.arange(len(Y)) + col_idx = np.arange(X.shape[1]) + + if self.minibatch_frac != 1.0: + sample_size = int(self.minibatch_frac * len(Y)) + idxs = self.random_state.choice(np.arange(len(Y)), sample_size, replace=False) + + if self.col_sample != 1.0: + col_size = int(self.col_sample * X.shape[1]) + col_idx = self.random_state.choice(np.arange(X.shape[1]), col_size, replace=False) + + return idxs, col_idx, X[idxs,:][:,col_idx], Y[idxs], params[idxs, :] def fit_base(self, X, grads, sample_weight=None): models = [clone(self.Base).fit(X, g, sample_weight=sample_weight) for g in grads.T] @@ -177,7 +187,8 @@ def fit(self, X, Y, val_loss_monitor = lambda D,Y: D.total_score(Y, sample_weight=val_sample_weight) for itr in range(self.n_estimators): - _, X_batch, Y_batch, P_batch = self.sample(X, Y, params) + _, col_idx, X_batch, Y_batch, P_batch = self.sample(X, Y, params) + self.col_idxs.append(col_idx) D = self.Manifold(P_batch.T) @@ -189,11 +200,11 @@ def fit(self, X, Y, scale = self.line_search(proj_grad, P_batch, Y_batch, sample_weight) # pdb.set_trace() - params -= self.learning_rate * scale * np.array([m.predict(X) for m in self.base_models[-1]]).T + params -= self.learning_rate * scale * np.array([m.predict(X[:,col_idx]) for m in self.base_models[-1]]).T val_loss = 0 if X_val is not None and Y_val is not None: - val_params -= self.learning_rate * scale * np.array([m.predict(X_val) for m in self.base_models[-1]]).T + val_params -= self.learning_rate * scale * np.array([m.predict(X_val[:,col_idx]) for m in self.base_models[-1]]).T val_loss = val_loss_monitor(self.Manifold(val_params.T), Y_val) val_loss_list += [val_loss] if val_loss < best_val_loss: @@ -260,8 +271,8 @@ def staged_pred_dist(self, X, max_iter=None): predictions = [] m, n = X.shape params = np.ones((m, self.Dist.n_params)) * self.init_params - for i, (models, s) in enumerate(zip(self.base_models, self.scalings)): - resids = np.array([model.predict(X) for model in models]).T + for i, (models, s, col_idx) in enumerate(zip(self.base_models, self.scalings, self.col_idxs)): + resids = np.array([model.predict(X[:,col_idx]) for model in models]).T params -= self.learning_rate * resids * s dists = self.Dist(np.copy(params.T)) # if the params aren't copied, param changes with stages carry over to dists predictions.append(dists) From b78eadd49ff1303768f2241784985ebee5e06178 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 13 Feb 2020 12:36:35 -0800 Subject: [PATCH 004/245] vignette updated --- examples/vignette.ipynb | 131 ++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 64 deletions(-) diff --git a/examples/vignette.ipynb b/examples/vignette.ipynb index 3b16c2a8..60600815 100644 --- a/examples/vignette.ipynb +++ b/examples/vignette.ipynb @@ -31,20 +31,20 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6472 val_loss=0.0000 scale=0.5000 norm=3.4604\n", - "[iter 100] loss=3.0978 val_loss=0.0000 scale=1.0000 norm=3.9637\n", - "[iter 200] loss=2.5082 val_loss=0.0000 scale=2.0000 norm=4.6709\n", - "[iter 300] loss=2.1126 val_loss=0.0000 scale=2.0000 norm=3.4394\n", - "[iter 400] loss=1.9856 val_loss=0.0000 scale=1.0000 norm=1.6529\n", - "Test MSE 11.746884594838457\n", - "Test NLL 2.7693067339587607\n" + "[iter 0] loss=3.6374 val_loss=0.0000 scale=0.5000 norm=3.3851\n", + "[iter 100] loss=3.0993 val_loss=0.0000 scale=1.0000 norm=3.9331\n", + "[iter 200] loss=2.4672 val_loss=0.0000 scale=2.0000 norm=4.0413\n", + "[iter 300] loss=2.0335 val_loss=0.0000 scale=2.0000 norm=3.1635\n", + "[iter 400] loss=1.8247 val_loss=0.0000 scale=2.0000 norm=2.8134\n", + "Test MSE 17.10585841129959\n", + "Test NLL 4.800276135509374\n" ] } ], @@ -86,8 +86,8 @@ { "data": { "text/plain": [ - "{'loc': array([24.86452787, 17.94111028, 20.59806152, 23.66830739, 19.76809899]),\n", - " 'scale': array([1.48279066, 1.38775584, 1.42909473, 0.98669068, 1.22823768])}" + "{'loc': array([14.63728515, 23.05560566, 24.81390559, 31.52559914, 30.86089205]),\n", + " 'scale': array([1.52221161, 1.2605293 , 1.48545931, 1.07927704, 1.76727756])}" ] }, "execution_count": 3, @@ -163,7 +163,7 @@ { "data": { "text/plain": [ - "array([12.96594041, 15.34704932, 12.51212606, 36.600307 , 17.54788321])" + "array([16.68522196, 13.55225153, 18.4168269 , 15.01845474, 16.11015684])" ] }, "execution_count": 5, @@ -183,7 +183,7 @@ { "data": { "text/plain": [ - "array([13.68114563, 15.35553609, 12.75141496, 36.85744468, 17.64392172])" + "array([16.48812056, 13.35423192, 18.80807519, 14.29219904, 16.00448798])" ] }, "execution_count": 6, @@ -203,7 +203,7 @@ { "data": { "text/plain": [ - "{'scale': array([13.68114563, 15.35553609, 12.75141496, 36.85744468, 17.64392172])}" + "{'scale': array([16.48812056, 13.35423192, 18.80807519, 14.29219904, 16.00448798])}" ] }, "execution_count": 7, @@ -238,11 +238,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=1.2229 val_loss=0.0000 scale=4.0000 norm=2.5264\n", - "[iter 100] loss=0.5316 val_loss=0.0000 scale=2.0000 norm=0.7395\n", - "[iter 200] loss=0.2912 val_loss=0.0000 scale=4.0000 norm=0.7919\n", - "[iter 300] loss=0.1673 val_loss=0.0000 scale=8.0000 norm=0.8899\n", - "[iter 400] loss=0.0792 val_loss=0.0000 scale=4.0000 norm=0.2917\n" + "[iter 0] loss=1.2751 val_loss=0.0000 scale=4.0000 norm=2.3854\n", + "[iter 100] loss=0.5998 val_loss=0.0000 scale=2.0000 norm=0.7419\n", + "[iter 200] loss=0.3415 val_loss=0.0000 scale=4.0000 norm=0.8437\n", + "[iter 300] loss=0.2072 val_loss=0.0000 scale=4.0000 norm=0.4554\n", + "[iter 400] loss=0.1142 val_loss=0.0000 scale=4.0000 norm=0.3329\n" ] } ], @@ -332,7 +332,7 @@ { "data": { "text/plain": [ - "array([1, 0, 0, 1, 1])" + "array([1, 0, 1, 1, 1])" ] }, "execution_count": 10, @@ -352,11 +352,11 @@ { "data": { "text/plain": [ - "array([[9.31753755e-03, 9.89886479e-01, 7.95983288e-04],\n", - " [9.81325822e-01, 1.44814322e-02, 4.19274590e-03],\n", - " [5.11989449e-01, 4.37524715e-01, 5.04858357e-02],\n", - " [8.81580568e-03, 9.90431073e-01, 7.53121085e-04],\n", - " [2.33686610e-02, 9.75128444e-01, 1.50289466e-03]])" + "array([[2.39367936e-01, 7.43731719e-01, 1.69003456e-02],\n", + " [9.84744138e-01, 1.47430731e-02, 5.12788852e-04],\n", + " [3.17987605e-03, 9.96593133e-01, 2.26990696e-04],\n", + " [3.17987605e-03, 9.96593133e-01, 2.26990696e-04],\n", + " [3.17987605e-03, 9.96593133e-01, 2.26990696e-04]])" ] }, "execution_count": 11, @@ -376,9 +376,9 @@ { "data": { "text/plain": [ - "{'p0': array([0.00931754, 0.98132582, 0.51198945, 0.00881581, 0.02336866]),\n", - " 'p1': array([0.98988648, 0.01448143, 0.43752471, 0.99043107, 0.97512844]),\n", - " 'p2': array([0.00079598, 0.00419275, 0.05048584, 0.00075312, 0.00150289])}" + "{'p0': array([0.23936794, 0.98474414, 0.00317988, 0.00317988, 0.00317988]),\n", + " 'p1': array([0.74373172, 0.01474307, 0.99659313, 0.99659313, 0.99659313]),\n", + " 'p2': array([0.01690035, 0.00051279, 0.00022699, 0.00022699, 0.00022699])}" ] }, "execution_count": 12, @@ -422,9 +422,10 @@ " presort=False, random_state=None,\n", " splitter='best'),\n", " Dist=.Categorical'>,\n", - " Score=, learning_rate=0.01,\n", - " minibatch_frac=1.0, n_estimators=500, natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x10FC27D10, tol=0.0001,\n", + " Score=, col_sample=1.0,\n", + " learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,\n", + " natural_gradient=True,\n", + " random_state=RandomState(MT19937) at 0x10DB46D10, tol=0.0001,\n", " verbose=False, verbose_eval=100)" ] }, @@ -471,9 +472,10 @@ " presort=False, random_state=None,\n", " splitter='best'),\n", " Dist=.SurvivalDistn'>,\n", - " Score=, learning_rate=0.01,\n", - " minibatch_frac=1.0, n_estimators=500, natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x10FC27D10, tol=0.0001,\n", + " Score=, col_sample=1.0,\n", + " learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,\n", + " natural_gradient=True,\n", + " random_state=RandomState(MT19937) at 0x10DB46D10, tol=0.0001,\n", " verbose=False, verbose_eval=100)" ] }, @@ -513,7 +515,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6079 val_loss=0.0000 scale=0.5000 norm=3.2045\n" + "[iter 0] loss=3.6494 val_loss=0.0000 scale=0.5000 norm=3.3553\n" ] }, { @@ -528,9 +530,10 @@ " presort=False, random_state=None,\n", " splitter='best'),\n", " Dist=,\n", - " Score=, learning_rate=0.01,\n", - " minibatch_frac=0.5, n_estimators=100, natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x10FC27D10, tol=0.0001,\n", + " Score=, col_sample=0.5,\n", + " learning_rate=0.01, minibatch_frac=0.5, n_estimators=100,\n", + " natural_gradient=True,\n", + " random_state=RandomState(MT19937) at 0x10DB46D10, tol=0.0001,\n", " verbose=True, verbose_eval=100)" ] }, @@ -597,7 +600,7 @@ { "data": { "text/plain": [ - "array([1, 0, 0, 1, 1])" + "array([1, 0, 1, 1, 1])" ] }, "execution_count": 17, @@ -618,9 +621,9 @@ { "data": { "text/plain": [ - "{'p0': array([0.00931798, 0.98132496, 0.50971742, 0.00881622, 0.02138126]),\n", - " 'p1': array([0.989886 , 0.01448215, 0.43558461, 0.99043062, 0.97726061]),\n", - " 'p2': array([0.00079602, 0.00419289, 0.05469797, 0.00075316, 0.00135814])}" + "{'p0': array([0.24958925, 0.98504163, 0.00312272, 0.00312272, 0.00312272]),\n", + " 'p1': array([0.73118816, 0.01445569, 0.99665482, 0.99665482, 0.99665482]),\n", + " 'p2': array([0.01922259, 0.00050268, 0.00022247, 0.00022247, 0.00022247])}" ] }, "execution_count": 18, @@ -649,12 +652,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6456 val_loss=3.5938 scale=0.5000 norm=3.4019\n", - "[iter 100] loss=3.1001 val_loss=3.1220 scale=1.0000 norm=3.8740\n", - "[iter 200] loss=2.4532 val_loss=2.6877 scale=2.0000 norm=3.9502\n", - "[iter 300] loss=1.9924 val_loss=2.7163 scale=2.0000 norm=3.0596\n", - "[iter 400] loss=1.7893 val_loss=3.0873 scale=1.0000 norm=1.3624\n", - "243\n" + "[iter 0] loss=3.6437 val_loss=3.6016 scale=0.5000 norm=3.3634\n", + "[iter 100] loss=3.0772 val_loss=3.1190 scale=1.0000 norm=3.7436\n", + "[iter 200] loss=2.4212 val_loss=2.6632 scale=2.0000 norm=3.9115\n", + "[iter 300] loss=1.9987 val_loss=2.7854 scale=2.0000 norm=3.0907\n", + "[iter 400] loss=1.8054 val_loss=3.1318 scale=1.0000 norm=1.3951\n", + "230\n" ] } ], @@ -688,11 +691,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6456 val_loss=3.5938 scale=0.5000 norm=3.4019\n", - "[iter 100] loss=3.1001 val_loss=3.1221 scale=1.0000 norm=3.8740\n", - "[iter 200] loss=2.4532 val_loss=2.6902 scale=2.0000 norm=3.9502\n", + "[iter 0] loss=3.6437 val_loss=3.6016 scale=0.5000 norm=3.3634\n", + "[iter 100] loss=3.0772 val_loss=3.1192 scale=1.0000 norm=3.7436\n", + "[iter 200] loss=2.4212 val_loss=2.6636 scale=2.0000 norm=3.9115\n", "== Early stopping achieved.\n", - "== Best iteration / VAL 243 (val_loss=2.6348)\n" + "== Best iteration / VAL 219 (val_loss=2.6407)\n" ] } ], @@ -723,11 +726,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'Base': DecisionTreeRegressor(criterion='friedman_mse', max_depth=2, max_features=None,\n", + "{'Base': DecisionTreeRegressor(criterion='friedman_mse', max_depth=4, max_features=None,\n", " max_leaf_nodes=None, min_impurity_decrease=0.0,\n", " min_impurity_split=None, min_samples_leaf=1,\n", " min_samples_split=2, min_weight_fraction_leaf=0.0,\n", - " presort=False, random_state=None, splitter='best'), 'minibatch_frac': 1.0, 'n_estimators': 20}\n" + " presort=False, random_state=None, splitter='best'), 'minibatch_frac': 0.5, 'n_estimators': 20}\n" ] } ], @@ -780,7 +783,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -810,7 +813,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -848,7 +851,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -891,7 +894,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAGgCAYAAAA+UMTwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd5wdVd348c+ZmVv3bi/pvYf0TAhBWgQUhQgICCJKBxWx609FEQVFH6oKPI8iRXoRAQHpBCSUwAQSQkJ63WzPtru3z8z5/TF3d+9NAqmbsJvzfr02mXrmzC3nfOecM3OFlBJFURRFUZRO2oHOgKIoiqIony4qOFAURVEUJY8KDhRFURRFyaOCA0VRFEVR8qjgQFEURVGUPCo4UBRFURQljwoOFEVRFKWHCSE2CCEmbbPMEkIcI4T4rRDizF1I4yohxPU9l8tuxv44iKIoiqIoOyalvPJA52FbquVAURRFUQ4gIcTdQojvZKeLhRCPCSFWCCFeFkLcs01rwSAhxH+y658RQoR7Ik+q5UBRFEVR9o9/CiGSOfNjd7DNlUCLlHK8EKIMWAQ8lrPeBGYBbcDzwNeA2/d1RlVw0HPUc6mVPfbUU08BMG/evAOcE0XpU0TPpPrl/PJe/uvjjnO6lPLDrt2EsHawzVzgcgApZbMQ4olt1j8vpWzN7r8QGLWn2f4kqltBURRFUXqP3JYHhx66yFfBgaIoiqLsFbHN3155FfgGgBCiBDh5bxPcEyo4UBRFUZS9sk+Dg98CVUKIFcDjgIU3vmC/UmMOFEVRFGWv7DwgkFIO38EyMzv5as7iGPBVKWVSCFEELAD+lt3+qm32z5vfl1RwoCiKoiifHqXAs0IIHQgCD0gpX9rfmVDBgaIoiqLslX13E4SUsgGYuc8S3ENqzIGiKIqiKHlUcKAoiqIoSh7VraAoiqIoe6Vnnq10IKngQFEURVH2igoOFEVRFEXJ0/eCAzXmQFEURVGUPKrlQFEURVH2St9rOVDBgaIoiqLsFRUcKIqym+yMS0NtCjclKa3yUVDs85bbkrr6DKUlBgUFe97Dl0hLLr+jjXfWZDhyvJ+bLyjCp+9+YfXjpxPc+kYKO+MS8QluPjXMuYcG9jhfiqL0Xio4UJQelIg5XPfDNTQ32QgpKXAynPOLEYycXsyvr6ymdlMSI6Rz9lnlfPb44j06xl2vxHl1eQaA5z9Ic+8rcS44vmD30rDS3PB6GmwAjdaU5MKHY5w+1U9BoO9dFSnKvtX3viNqQKKi9KA7f72W5iYbACkEaVfw2FUr+eM3PyK2JkrAddHiNg/dWc//3lyzR8dYtS6dNz//nfhup3HrW2mQOQuEwCV/kaIoOyYReX99gQoOlB4jY6n9fszGh9ayeNpjfPj5Z0nX7n4luS+9e8c6tixv75r3ZzKUt7XhjyaI1yWQeAFDp0ULO3j3nY7dOsaHK5PUr4wTdhyQkkLbIdXm7HZea9u3DwOOH2MQUa0GinJQUsGBss/JVIbkYTeQiPyYxORrkQ3R/XLcdG2clefMp2lJO60vbsKa9CjNz24mua595zvvY02rorzxf2vQXUkgnUF3XCpaWjEcF01KStvbEVKC7K6U/Rmb+c+17vIxXFfy+1u20tHhMjidYWwqTZVtU1q0exV62pa0xQBNgC68FlJN8MY6m/sXpXh1rY3tqDYERTmYqDEHyj6Xueh+WLgWDZAfVpO5+VX8o8PQ0AbnzYX+pT1yXLs9TcaBEdQRlmlkM2z84uPE9TDjHz+e8nnDurbd/N96mpa2MHRuf8onluSl0/TP9SRWtlLxlZGExuzZOIBUNEOsIAyaht9x8DsOmttdweoSBjU00RYO4eg6gUyGeDDAuuVxFlu71nrguBBPuLgCyLZA6MC4gb7dyuvjH2aI2RIMrftywZXEpOCch5OA4LOjdV68KIym9Z6WhJc3uLy1RfL5kYJZA9R1kNKTes/3Ylep4EDZ59z5qxBkMOjAwcC+4Rn86QZv5R0vw4c3Q2D3KrBd4cRshIB6SimX7RSRoIg4cSfEmrNeoHxuA5w+hw0Dx/PSZQsBWHzbSmYM1slsSOAbUURkYjEbbllOS3GQ9N9WU3RUf6Z+czxDPlO1W3kZMK2UkkEh6lpy8qdr6I7bVYwYrktlWxuahFgwQGNZKRLJrTfVcMRxQcoqkp94DJ8hmDk5wNtL87tvqusz/M9fGvD7Be0BPx1JydnHhZk22r/DdJZssb1Wg05SevOOpLPQe2WNw9qtLmMq9d16HQ6U59e5fOERBwn8egF8f5bkhs/2jrwrvc+24wz6QqjQ48GBaZqvAi9ZlnXNNssrgT8AJwDFQBRYDFwAnA/8IrupAMJAnO7xUb+3LOv32XQiQA1QZ1nW2Jz07wZOz87qQBCI5WThXMuyHtsnJ9lTapq9QrqHrrR32StL4cJbwXHgqjO9q9Rf3A/hANz3PZgzHtIZ2NQEg8sR46rwb1lFlCra6YeeTuGnFYM0rKlFvrcBMWcMALI1Ds0xxMhKyNiwsRF53ZPw6JswfQRNRx1P/S3L8Q8oYNA/jieVglU/toivjjL02+MYct4o9IgPIV1WHPckCc1PUvrpIMQ4WU0aA4HEjkvSz3yI/5lFNM07G80RCCkRtsOHy5KkAz7cVTH6v15Pa1UBru5daTa+0cBzH7Ry9ovHEyj2E6tLUDgwjObLvxJNp12aWxwqyg0MQ6Dpgq/eeAi3nPsBruMSiScQUuIK0VVwSCARDJII+Gks9loodFcigab68E6Dg7/ft5XFixPoQpDUhddSI2Hd6hTrJEQNnZjhgBAsWpXmyd9VEAltfwXdlsoGAznjH0hlAwafDn4dXMmljyV4/qIw1VEoCQoCBtREJcNLBEkb6ju8aT0n0NjS6qJr0L/o46/ck7akuh2GFoMr6ZquiUJRAMpCgqa4JJaBYcWCREaycqskqIMDnP2kQ31McrmpcdJojYER+MErTldh4Uq40XI5dKDgzPHZ9zUuqemQvF8v+dUCL2C750SdqVWC1iSMKPHOIZ6R1ERheAkYu9hqsqlNEvZBRbgvVBHKwUpI2bN9iZ8QHDwPtAHfsSyrwTTNKrxA4QXLsupythsMbAZGWJa1YQfpXwL8ESgCjrMsa/4OtjkOeNqyrOA+O7Gd27sX9upH4MqHvAL7LxfhHj0N5/1q9GNGow3ZR8GC48CT74KuwTwT1tTBwlUwZxyMHgCAW9OGPfGnGG3NaHgD3SQCFz8aKYTfgGvOhj8/A9VbkaVF0JpGSEk7FXRQnq0MHapYhUCSpAr90iPIzBiF8d17EakMzB2HsW4V+sa6vCzWMpo4pUQJU1NQhiM0hCMxUi4RN0WYDMKnEZpZyooVNgiBnnbwxV2qZCsOfjTABYQRpUKrZ3HBDECQ9Gs4hldZVDTGcF0NKQRbB4S6ju8KQSLsY8pJg1j3dhPxhiRlY4uYd98RBIq8K/GGxgzX/K6W5maHURWS04/w05KAV//VhBtNUdgRywsIXE0gJLQURkiFgkjXJRXw4wKOJpASQkU2R52wkdNOO3G7t21jdZrX3onz76fautJtNXSihgFCUJixKci2UCQ1QYvPW/7tMyMsq3M5c3aQMf10Xl6W5rnNgr8udsF2uw8gJWSygxoL/N2fZCkpMCAmNQI6+KVDR0pyyCCDLW2SlrhkxkCNty4O0JGSfPX+GC+schBScuupYSYN8bGpTXLSGI3ioJfz6nYX806b+hiMKYNExgsUAjqkHAgYgi+OFjy1WmK7cN4Uwb9XujQnvCyFAxDP4HWJSAmudzUhjezYCSlB89YdNURw0SSNtpTk+/Ndr2Ek51vq00BogrQLXxkHv/uMxmH/sNmahBHF8I95BkcO0Xij2mVDG3xxlKA0ex6ulPx7leTOJQ5PrZEYGpwyXmP2QMHXD9HoV+BttyUqeWWTZGqVYErlrgcPrpQ8tVbiuHDy6PwAbGeWN0kW1UuOHCwI6PDyJskh5YLp/Q7K4KVHTtoV5+WV95q8u9e/uAcyOIgCZ1qW9Z+d7L+z4GAR8DowDmizLOusHWzTu4IDxwHfGV0pyICPuDvYK7DLCwi992O0ofsgQPjqjfDQAm/6y7PhucUQT0FBEBb+AbeilPjkPxJuXNkVGHTKUIhEw0/bNon66Oy4jlFMO/271vjpIEACDQEIUuiESeXs2ZR3nGaGkcIbD+ACS8LDcTSvscuXtKmyuxuCMppGbXFR13xBe5qQkyJEd6VXWxJGAo7wujRkTl+9P5ZB9x4VQHupj1TYQALpgIGjC0pakkQL/V0tCkf+ZhoTzhwOwEMPN/P0M22EE0kmrd2I7notBFsrSwkmU/jTma5mewk4mheENJaXIoUgpeuAJOb3dVVkmoQJkxr58S8Oz3t1P1yR5OobGoi6ggK3+9zqAn58UuIAIdsllPO9bvIbZAp0NqW91gEBjKwQbGySbC4Je6+BK70/6J6WEvw5jYvS9VoSsq+ZyDj4OpI4Pt0LshxvvzOn+3ljXYbqtmx6Pp2wH+KGF0xNqhS8e5EPKWH0rRlqctrzhOt238HR2auh5cx35lHgfcxyWzvybsXEq+07X4fO7RyJDjid+7rbfE1zKt2xEZdVOd1CQhdcPkPwZ8vbZ1wZLDrPoMAvuOgZmzuWuN3HNrItMRL6hWHZBTopB6bf49AQ92KZ507TOHbYro2FuPh5h78v9Y575jjBQ/N2rYtkYY3k6IccUg4U+SFgQGPCG3f61KkaXxh50I3F6KHg4PxtgoO7en1wcCA/Gf8FrjNN8xLTNKebprnbHYKmac4EZgB3Zv9OzXZX9G51rfkFne10X8ltjeG8smrvjyGl13Tf6T/veYEBQCwJz76H8/o6tMam7QIDAImGQ2gHy7u/EyKnYgZwwyEMXHQcdGwCZHL2A5Fz0hJIU9g1rwGFTqJrfqLzPuSkn/fNlBLNlbjbfLxtQycjdjzWobPSByhsyYAtSfoNHF0j3JHC1QX+TPfrEKrofnJgcbH30S2JxtCzlY0mJYFkGlvX0W3vNkOkRLguGb+PlN9ACu+M/a6L35WE7Gz6QiCFYM3qMjLp/NfwnfcS2A7EdJ0OXUPiPbco4jgEXZcC192uvqzWNVZktK5KVwLrmrx3Spc5la2TbUHoDAy2Ld5cIJ3zWejc13HBll37PvpeiurWnHw7LrbRHWR82Cj5qFFy6TM2NdH8yjn31s4dFeOall2eE9jtVO522Rhmh8fYJrkNbdvkTUoeW9m9bGUzLG305h/5KOd8c/MmoD4OC2slr26WNGTvrrVdeGLNrl8/PJJz3MdWS3b1ou7fa11S2besPQ2N2eM7Eh7fjeMrB58DGRycCdyHN77gTWCraZo3m6a5O1f3lwKLLMv6AHgSb9zCefs6o3siGo3u+XRQgwHdLQNy+ujuhA0NbdqgvUs/GvUKr5mjutOdMLh7WgjiEwaiTR6A6wvlVfguOjYFOBSgkfEugTrziUYDg+mgmDiFtFJJCh8OGil8MHdkXvlro9NAGXFCdFBClH6kRQEOASCEnhc8SErcBkqcZialFjNUbmI07yPx+uhF5y2DtksolsEvHQSCmPCRERptfj/NhUFcCXrGQcs4aHZ34Sg0l7CbQmqSRKFBKuzDn3Yoa04QTHvb6Y6kaHAI87vjKT800rXvnMMExx9XiLPNI4tTfoN0wLta9qVttIxDW3Ex8VCIjD+AK2VexdUZWHS2dmfSBu3tTt57N6h/tmtHQIdhUO/30eYzvEo+W2G4eC0IDhDXNcISygu0vNe+MDs2saIj27riZCs3v+b9GaIroOl+E6S3nesiMjZGNpjsXyjyAjtX5o9vRBPMGtT9OSkPwfASgVVjd6crJQOiie5gZQcifsn3Zn1MkdXZktD1YnYuF+SFjhIMTTKrn9d1gRAfG2xMrxRdrSE4EnSNCWXdwVFJQDKq1NtnelV3cBDU8/srAjpMLBeMDsfJHapiZpv1d+U7O72i+7hTK1yE2LV9zZyuA28ISXe+JhWnPnHfvjy9r/XFhyAdsG6Fbbbx4403uBf4k2VZV+as22G3gmmahXgDEf+fZVm3ZZfdBJwEjLUsS+Zs27u6FQA2NMAt/4HyQvjBPOx/LcV5ZyPGvEnox47d+f67oqkdbvy3N+bgRyfDa8u8wYfHTYF5swCwF6zD+fNLaAuXkdjkkqIYH0kMUhRQi7jpXKjeCnWtuEmX6sc6CJEggvdFbKeIKKVIYMiCsxCX3AXLawHo+PqxNJYNpfKUIQSXVWOvaSb0jSk4P3mY4MuLcBG09R+Pg0akbgUh2rHxYeQEDStHfZ7oWq9gthEk8KEj8+qJmM9HyqeT8WkURL3HGGsFBm7MJhP0ahFdOgxIRmkoKmBroffoYeFIjJwKOxPQOGvt6dsNRuz0whVLWPWfGpDgP6SCeEmEpg0JjEyGUDxB2u8nHQwQSKcRgC0ELYWRrry2+30kfQa2pmG4koFlHfzhpsnb3T742lsxHn45xtJqh6DjUGw7ZITAFZAR3piFVM6VeuUAg1t+UMZNz8VZtMHmNDPAcZP8PPBGkgElOqmQzuVPpb3KVcs5N8f1KkzH9VoNXBdfUCMjNRAwpdRl3hiN7x4T4m4rzc+e8h7sNLJc42uzg1z9choEDCo3WHZZgLuWuGxqgwunaRxSpfG7121++apX6VW4NhNr2on5dNyxEbbYOg3Z7oYZAwWfH6Xxo0N1ysOCfyxxeKfG5eGVkq2djUmdlXznnRbbVPZfmyCwHagMSr48TmPuMI20I/ntmy43WpLENo1jM6vg5a9o3Pi2y/o2STAgOHSgxvmTBLe957KuFc6fojGlyjtGa1Jyw0IHR8KPDtV5o0byp0UuBT644jCd2QO97V7bLHl8tcvMft5YhF3VmpTcYHnjJH44U9utwY6PrHB5s0byhRGCiF/w6EqXqZWC8ycfdF0K0EPdCo64MK+81+UdvT5C+FQEBznbPgb4LMv6Us6yjwsOLgX+D9hK9onweHckFOMNTHw5Z9veFxx8ysiMQ9uRfyO9sBZRFqTkp9PwzR0Dh47J267umLspfs3q3g+oYzAEDEYmf4yMJnGfXYYYUoo2Z+THH++5DyCZhpOmIwwdXlwM0SR2eRna6X9Aa2r1Wj7m/5b2d7dSe8cqah9YD4C2XXBg4ArQbG+p8GsMvWwcm25Y3rVNYkSEmG0jXOgqP6TEZ3cHB+N/PpnJ3z/k4/PsSja83ojQYNgRlTx7Xy1vPlgLQlDQEcM2dC9fOZVWY6SA9nAIRxNkdB2/bRP3+RgxqIU5s7ZwyiknfezxrI9S/OPeraxtcHGzaWquS7uuY2uCoIRIWHD998oYP3zHtzF26v+7DuoT5AcHnRyvZUHXBE+dGwRNI+3CSWO0vIFx71XbrG50OW6sQXmBxrtbXNa1Sj4/SqMkuOOy8pX1Ls0JyQkjBYuWpygIaZgTvFaVp1d5dzp8cbTWdaWcqy0peW6dZHixd2G/uF4SNCR3LYcF1d1jDeaNEjx5yo7TAKjpkPy3WjK5QlAflzQnYN4oQcDo9eW7sj0VHOyi/fWcA2MH3QW/Bx4ElgJp4ChgLnDtLqZ5KXAP8P+2Wf4AcAnw8nZ7KHtM+HSK37wUd1MbWmUBomDHlU3FA6eRHrzIe/of3jiCAAkiJ3hdI6IwiP6VmTs/3glT8hccPw3IfmA3/x/UtsCQCjB0ij47GFfXqX1gAym/TsbQiCTT6K4kJOIcktlE4vdnsO6+OpxYhnHXmfQ/Yzhu3Kb+nxspml5Ov19MZsEfl+GuaEFk+/mNoE6o2I/m05jym2kMOmEwn0RoghFHdz8PoaHOJq0JIokEhuuip11cTcPxZb922QGESV/319CQkmFVGnNmbUHXPzm+NCcEeMhHV2AA3p0QR8wM8c2TI+hCUF6sEQ5+8hXiGxsdtqa6AyLvZDoH1GW7PjSNG0/y84VxH/98ihmDDWbkvESzBmnMGvSJh+azI7rzdvSM7jEsmhB8adwnD0MqDgrOnNh97odnj/2ZIZKzn3Go6YDvThf8bPbHBwYAAyOCs8Z76w/pI03Cyv7Vp64Es/ZXcPDr7F+uvwJ3AUPxXtstwPXADTtLzDTNWcA04Jzc2x6z664HnjBNs8qyrIZ9kHclS2ga+vBPvkvCGFiI/Nlx2Nc+7y3w65SeM5HQjV/6xP12S9API/rlLSo5egBDrpnBsv9ZBkB7JIgv7VCUbKPtM9MY/vPZDPx5fjITb5vDxNvmdM2fdXR/OjbHWHrdh0hXMuUnk4gMi7CnMpvaGVTXiAbEwiF0KTEyGTTpBQm4LmHXJZVMkfIZ6K4kiMuVVwzk1f8u2aVjjBgWYNmWRN5APqc1w/D+u/6QqS/em8KW2zbLe+MIfvoZnY8aXA4bonP5nH3/4KqeMK5MsOjr6vluyv7U94LKHu9WOIgd1C+s8/hi5OoG9DNmIEZU7Jdjtixq4vXPPt8170cy/lfTGPr9iWjG/u9fvXPef4nVJnCFIO33kfH7cITA1nU0KUkGA7i6d3Wc1HVcTUOTkt/8bSyvv/kcAPPmzfvEY6xam+L7f2jEzimcDCRP3jYIn2/nBVZNu2TQdd13gWzbV19kSN6/LMjIsoOyf1rpe3qkFs+Ii/PKe5+8vddHCyq8VnqEfuq0/X7M0pkVDDtvNBvvXkOgMsDsh46m5ADe2Vo8IEisNkEyHOwKAhKhEI6xfXO5Bggp8fkFgZ10A+QaOyqArWndNxVISSgI+i7eGFzgB58BmUxnAqK7+JSS9hQ8v9rhW7NVcKAoBxMVHCh9ytQ/zWbS/5jogQP/HP3jrpzEK79fxooVacCrc3XHyQsO+g0JMP7QYjZvStPRbvP5M6oIFex63t9fkyaN9+gp8MYfnPflol3+gaTioOBfZwX48t0dZHy+7nEGkG37kkxVP1qkKDvR6xsKtqOCA6XP+TQEBgDFg8OcetssHvzpMjZY3k8xa9IlGBBU9Tc44cIhjJpauJNUPllTu3d3Qij7tMRwUHDsnILdSuOkcTqnT/Hz4Irsgs7bFyWcMEbn8KGfjtdTUT6t+sqzDXKp4EBRethXfj+BVQuaqa9OUjQozKQ5xfiD+6bCPWJSgEkjfCzdYBMJCm74dtFO707Ykb+fFuQ/1ydpSwFILphp8KVxOl+aoAIDRTkYqeBAUXqYbmhMOKaCCT2QdsgvuPOHpWxpcqjchdsWP07YL2j8f0Fe2+AwukxjeKnqSlCUXadaDhRF+ZQxdMGwfnv/VfbpguNGqSJBUXZXX+xWUJcHiqIoiqLkUcGBoiiKoih5VHCgKHsonXZ5990YK1cmdr6xoih9Vl/8VUbVwagoe8B1Jd/+WQ3rOwQCOPOIIBd/o/xAZ0tRlAOibwQEuVTLgaLsgdffjbEupoEQSCG4/600tu0e6GwpiqLsEyo4UJQ9cMOD7XnzuuNywo/q6Uh0BwhvP9/EbZd+wCM3bcC2D+qf2lCUPq0vdiuo4EBRdlMqZtMRzy8CBnbEmbilhV/+ZgvtKclXr63n9Z9b2O9Us+XB1fzhc29y00/WEG21D1i+FUXpKWKbv95PjTlQlN30xBXLCKWLSQb83gIpidgOAqiuyXDqnTHE8jbw+0gaOhoQTGdILazhzp8nsZtSlFYanHrFWEoHhQ7kqSiKouyQajlQlF2wtd3hBSvJmi0Z2usSHLliLUUdcQLpDP074vizv23Q6vdR/tIGZja3kw4HSft92LqGnnEobonRsbyN1hhsWpPkzrPfoWV9xwE+M0VR9lZf7FZQLQeKshMrFkf53gMJtnZIdNflsA6DAQEfszdVc9ekMawZXEnYdhiSTNIUCVJZGODQhR8SSGUASPsMhq5rRLguLhqNfh+2zyCV1nn95+/xpYeOOsBnqCiKkq/XBQemab4KzAEygAOsB35nWdajOeuPBs60LOuRnP1mA28DGy3LGr5/c630RlJKbrl0KSvrXLYOHgDAyJY2+nckSOs6W8qKKRQagzsSbCoM81G4kJAuOXnxpq7AAMCXttEdl03Dq6gfWI4tBK4Q6D6ddH0HicYk/kIfelBHSsl7X34F441WMpP8tPRvpOXfm9ADGpoOoshP1dmj8ZcGvDzaLk13fkSmNk7lZZPwVfSebgqnIYaI+NHCvp1v3MvJVAZa4oj+xZ+8YVM7BH0Q2Ufvo+NAQxtUFYOufkSrp/SV1oJcvS44yLrasqxrTNM0gO8AD5im+b5lWWuy6z8CLgYeydnn4uzy8P7NqnKgrV6VoLnZZsrUAkKh7XvS1q9N0lifIVygEY+7TJ5aQCis8Z//tLCq1sFnO2iui6tppHWdF8aMJG3oFKfSzGyOIqSk2qextrSQE1dtYFhTG64ALXuDQspnIIF4QRBb00j5vK9du1HIlg1Rnpr0OI5fp9+kElLvNuHGHPS0i/+1BO8c9gyalIRkpqsPcPV3FiJLA2hjiihp78Be0QzAlqvepfSMkZTPG0ZwcgWhaZVd5+i0JIk/vx7f6FICUyuJPrUO4ddxkw5GRRD/uDI6nl1P9P7lOE0JgkcMIrW4EVIOZd+Zim9oIS0/eQWtMkzlvV9Crwx3pzmqhOCsAV3HSltbSNy/FP/hgwmdMQlnwVpkTRtMGkT69Y0k/2ohl9fhpByEDv6BIexwAU5RIZGxAbRl1TilRfiumYf78krS97+PNqwU/9lTcP88H8oj+O/5BvbSBmQ0hX/eeITv01XxybfXIjduhZnD4NePwMOvgyNw50xE++5xiHkzoSAI1z0Otz6PDISgKQbNbQjdgYd+CKcfDq4Lzyzyfkb7xJkgJfzobnh5KZx6KPzmqzvOwBML4c/PwHvroC0OEwbDW9dCcfbnvF0XLrsd3l4F80y46kzQVC+z0k1I2btuscq2DLxkWdY12fkCoAM4w7Ksf2bXLwC+CRxqWdY60zQLgU3A74HL9lPLQe96Yfuo+S+3cc9djQAMHebnl1cNwefrjvIXvhnl77fW4Uq8AhgYPMTP+Zf356Jrt5KyQXddJtbUU1NSRDQYJOnrjqlHtccIOw6Ok+GBKSOQwJnWCqbUbkVISdowSISCFMaSaI6kenAlds4V3Isjqjjq/TUcs2wjwYTTdf2hJx10W3blye/a6MIl5TMQrmpMHcEAACAASURBVERkwMChgDR+Mkg0XAQOGgYOPl0y9F8nUfSlkbjRNJtn3kNmdQsI0Kf2J7G4KfsB9dLXIj5ERwIdidvVb9qZG0mYGBXUI5DEBg2h7KMfUm3eQ2aVl2bVA/MoPGsCqf+sovnEB7vOLzR3EIH5SwBwNIMON0KQdHati4abPQLEiOAjjR87u0wiEWhd12USDQeBhPIwia1eZeY7YQzFz563Jx+PHuHe+TrywrsACZqD5nZsc12pgzkKfn4ynHYdEh0I5qxPIcI6xB6E8/8Cd8/3Fl9wLIzqB1c80L3pny+Ey0/Mz8C6Ohh3OdhO/vIffQmuP8+b/sLV8Nz73etuuwS+dcJenHWv0SOX+DHx/bzyvkDe3OubEnp1qGiaph/4VnZ2Vc6qJHA/cGF2/qvAa0Dt/sud8mnwztvdA/42bUxTV5vOW//uW1G2jY+rN6d56e04qexdh46mkfb5OHRTDSEnp8CVEl1KkJJXRvQn7veR8PtoKSzADvjJBAMIXaO4vQMjk2HounqK26JduwvXZXNphNs/NxNb0/JKLSnoCgwAUrpOeyhIyucjGfDj+DQKSREhhR8XP3bXcCgXDRxJ+z9XA5BcVOcFBgASMovrO3PQlb7bkUHLhgs7aiIVSHRcNCSRLZtIvVXtBQbZNGOPrAAgcd+SvP1SC7Z0TeuujUZuhdX9wgtAw0XHzVkmtrkxrHuwl9vc/cjqzHOrcduS2+X5QJEPvdM1LdzUjmsjay089nbnVtusFBBPQUcCHlzQvfihBfD68vxNcyv4Tluatw8MAP6bs+/LH+Sv29i4o1wqu6gvDkjsrcHBFaZptgIJ4BrgIsuytvm0cztwfrbr4ZLs/H4TjUbV9KdgetjwQNeySETDH0jmbTNsRPf6TuECwZRxwbxlJYkkm8tLKU1nKEmlCWVsKhNJSjs6KGtro7Gge/v+0XjXtJHOIFwHKSSpoMHYFVsYWNuIlk7xyogqogGvv902BE7nt1FKr9UgG7VkdI23pg7PCxYcXWDkVLSdlaiErgo2OKOKaDSKf2wZItLdr6+Vd/Zn50RFYkdNXd4SHQcfmZxtBcboUkShv2tRYEY/otEoxuzBeekaAwu6pl0Ebvba35vXurZ00LDxIXKCA4ns+rc7m94yt6w7XTGyFFHkvY8H+vMGkJnUP+ccdtzd4VYWwfnHZucc6DpvF7BBQLQjBjNGdu80YyRccGze65E4cfr2eZg9Bvsz47Y/6NETu7eZPqJ7uaETO+PQ3TrH3j6t7Fyv7lYwTbMUuAOIW5Z1zg7WvwW8AJwPjMBrQbhGdSscPGxb8uJzrTQ32xw9t4jBQ/KDAdeVvPJ8K3W1aXRDQ0o4cm4RQ4YGePTFKH9/pBURS4DjUF1WwphkhsJ0htG1dazrV0na0MkYBvUhPwsHlZLWNWZVN5DWdD4cUMaIxla+OX8RBWmbUEea4mgaW9d4du4kHps8koyAc+cv4aiPNgGSwrY0gWQGRzOQ0qsYnz5qEmsHl3PusxaRZBqkpKMoyLCtzZSmYwDEg34Ck6ooP2UEsq6DwMQyyr45GZENKJLv1hK9Zxm+MaWETxlDy83v42YcpAu+AQUEzX60P76G5L9X4TTE0QcWEpjVD0NIgrP6ExzkQ37zfoTrYNxyJsaFnyFp1RL9h5dm8XdmIDSBlJLYH14n8fAyfDMGUHjD53D/ugBZ0447bgCZj5oRI8tw738Xe0ktWtjATUoyhp9AyCEYbcauqPDGHJw+BaN/iPQD7yMKg/jnjkB77yPEkDLEz04m/qe3kdE0oR8cjj6kZD9/sj6etB3kn16EjVth+lC49lHE2i2IiiI4+yhwJHzrc944gEffhF89gNzaAc0xkC4i6INbLva6EZra4bonvMDwJ6dAeSE88oa33wnT4cLjdpyJjA1vroBv/w1W1cLsMfDa1d2DErdG4ff/hKYoXHkGjBqw43T6nh65rI+KH+aV94Xyxl7ffNCrg4PsfBmwFjjPsqwntwkOzscLHn5rWdZVpmmegwoOlN2QTEumXbWVlRkfftflc83t+BAcum4DQghcAfOHDqY5EmZgMsVTEwaCK/Pe/ROXrOakJWvwpWxihRGa+pXiahq2kJx2zQQmD9FpfLuRojFFhMr8bLh5GR+9vBp3lI+T/noyza/WYUR8FE0ro/G1OgpGRCieUgZA/K0a7Lo4kROGo4V66/hiRdlvVHCwi3p9aWJZVrNpmjcCvzdN86ltVj8IbAYW7f+cKX1B0C+wfl3O1U908NrLUQKOS0k02nVFrknoH+3gxSH9aOkwmFHTQoehs6q8sCsNIb0xBC3lhbRWdP9yYybiZ+bUMJomGHLSkK7lY39nsvKwWjTAF/HRL2fdwJOH5uUvPGdgD525oigHs14fHGT9CfgB8I3chZZlJYGXDkiOlD4jEhD88cxCovMKqG6wcTZHeeaXrSAEjoC1RQUgJQ0BH4fVbmV5UZhRbiubSgsZ0trBzLpmNg0diNQNDLe7T332zAI0rddfYCjKQa+vDELM1euCA8uyjtnBsnagLDt79yfsex9wX49kTOnzCsMaE4b7ee2NBFrKRkjJjYdOpiEcAtslkHFo8Rt8UBLhe+99hBsMIoBocRFpAYO3NOGWFRDTfURKDOaera76FaVvUMGBohz0Xn96K8niCA1+nxcYZEkp2Vwe5usVCcpicZpCISTerZCj1lZTGDH46kMzQBcEwjq63vcKFEU5GKmWA0VRCJX4sVtSFLkuhutiZ58sN83t4Omrh5CR8LUik9YPWpkYkVx4fJiBg0bSb0gQX6C33j2sKMrBRAUHirKbvv6L4fzvRR9QZNucvW4zCyvKKMfmyT8PJuQXhICnLgijntStKAeHvthyoC5jFGU3VQ0JMec070E3IztinJNo5uGfVRJRrQKKcpAS2/z1fqrlQFH2wOcuGcb0z1eiGxplg4I730FRFKUXUcGBouyhymGq20BRlL75xDsVHCiKoijKXlBjDhRFURRF6fNUcKAo+1tTOzSrX4hTlL6j7w1IVMGBouxP3/4rVJ7n/d2hnuytKH2BROT99QUqOFCU/eWRBWT+dwFxBhJ3+2N/Vz3JW1H6AhUcKIqyx5zv3YtGBj/NCCTpeOHOd1IURTkAVHCgKD3MfW8zqTP/jlbXhE4agyR+WgCB3Bo70NlTFEXZjrqVUVF6kLu8luSs69HcDiQCmxA6aQQOICGZBAry9pGOS+H8drS0xD0ugxby5a3v2BLjpftqoDjI8ecMpCCi778TUhRlO32lKyGXCg4UpQdlfvMsfrcRgyQAgiQJqvAa7SSiNJK3vb2+hU1HP0z/zTFAUP3h4wx99SvULmsnurqNxNv1PLYwTc2ASiDJq++u5/q/jsIw+l7hpCjKgaOCA0XpQVp9AxrprnmBi04GhxAgIRzoWpd8djXNJz5ASIIfjRhhEq9V8/wfVrD06ToAShraiY0aQiCZYlBdI64QfPBmKQ3hMP9emGRomeCsz0fw+TQGFapeQ0XZHw7KlgPTNF8F5gAZwAHWATcDt+ZsFgRc6CoFN1qWdYhpmhuA/oCd3f8j4JeWZb2yg+PcDlwEHGNZ1mvZZccAT+dsFs4ew87OzwdOzaY9x7Kst7P7hYBfAmcBA4E24Nnssbfs7JwVZV8RZJBoeF8PrxBx6e4msN9ajzFnBABt5z+JkJBBJ4UfiSSNztJn6rq2j5YVUNXQTsiOEUx5X7cnf7KYB2dNZmAqwxsBHz/fLEFzGVjgcttxgvca4IhBguOHa2xul9z1oWRgBC6YLNBE3yvUFGX/63vfo11tObjasqxrTNM0gB8CdwATLctaBWCa5kvAAsuyrtrBvhdZlnWfaZoB4HfAE6ZpDrYsq71zA9M0i4CvAs3AJcBrAJZlvQpEcrbbgFfB35ezLO8csvPPAuXZNN8DhgI3AQtN05xlWVbtLp63cpByN7fgvr0BbeYQtJEVe7R/5tb/Il5bjSSMi41EwyGM7PraCZzDr6L6Cyfy4YcZBrXpVKDRQhGdhU3M0Ai3RNEcFzQNI+Xii7kki7sLo9J4gnUFQVpLQrRF/KB562picMoTLrgSNIGmuUjZ/Rz4y1+GyhBcMlVjZAn4NTh2mKAuBs+scykNCE4dIygL9b2CT1H2pYP+txUsy7JN07wN+CMwGVi1G/umTNO8C/gRMBawclZ/DUgBlwN3mqb5Xcuytu5O3nKcg9fSMd6yrPXZZetM0zwDr+Xi18A39zBt5SDgrmkkOet6aE1AgZ/gGz9Amzpo1/df3UBy1vWItighOkhQiUMRAAIHH1sRSGwK8BFl88IttBUMxi2soCBpk3sV4nchkMrg6Bo4DmWNcRqKC6kpjzB4axtNkRAPz5nEAGy2hMMYQjCruoVwxmFVeQG1RSFveIMQuNuUYEkHNnfAr95wu5YNjkBtDBwJILnmbXj/GzolQRUgKMrBZLc6JU3T9AOX4TXjL9nNfcPAxXhBwMZtVl8C3A88CkSB83Yn7W18EXgzJzAAwLKsNPAI8IW9SFs5CDjPLPMCA4BYGufJD3Z//7YkndcTgu7K108zPhIYJAnQDOhd20WDQVr0gryrEJ/rUpDsHrPw/qh+XPatz3H1l47g0cMO4W/HmnwwuIrqskJ0YGptGyNa4/SLpTh8czPBjAO70XVQ3dEZGHg2tMPC2r54XaQo+87B/BCkK0zTbAWqgZOB0yzLWrOL+/41u28HcC5wumVZjZ0rTdM8FJgG3GlZVga4Fy+I2FOVwMeNK6gBqvYi7V0WjUbVdC+dTo4pzatQxbTBu5VOZyuDxE+KUlxC2bUSQaY7XSQCh4ntazAcB4CMppOh+9ZECaQMHaQkGMvwt8/NoKo9zrUPvsxXFizlM8u742xb0whm7K55XULA6Q5MkDuv5P1a/jZBHcaViU/F+6Km1fS+mt7X+mJwIOROCozsgMSXLMu65hO22eGYg9wxAqZpDgAeA+ZblnVFzjZ3ANMty5qRnT8E+BCYmx1zsMP0cpYZ5AxINE3zEaDSsqy5O8jntcDXLMsa+oknvW+oy61ezH58Ce7zK9COGoVxtrn7+/9rCZmb5iMXrMsukQSpQcv5WDgYOP4i2kdPpH61zeJ+wylIpqhsiuFDomVHKriGztZQAWuHDeDaE01Of/cjzPXdw2auPP1oqsuLCcdSFKUcDm9oxZCwJRLgjQElgCDgF8weJPhvTXfBFTbgp7MEdTFJdYdgYATOPUTjg0aXe5dLSoPws0N1jhjcNwo7RaGHRg7WiqvyyvsB8qpe/6XZb7cyWpZVa5rmecBS0zT/aVnW+9mBiGcCmmmadTmbS+BS4NU9ONRzwG2maQ63LGtD50LTNH3AGXiDFRXlExmnToVTp+75/l+eivHlqaR+8C/kzc/ipyUvMABIUkZo7bVUDC6ldGkNHRe/Qe16QaLIoKi9Aw2XNgowKgOEax1ExqWhpAB3m26Cr7+7gqfHjSCcTLFwxECeGVJBwJUUVejcc7yPqRWC8RUCvy54t9blB/NdAgbcNFdnSuX2Zdjhg3S+OW2PT11RDkK9PhbYzn59zoFlWatM07wPuBY4AW/woAtMAeI5m54E3GKaZoVlWU27eZh7gQuAJ03TvBB4H+9uhRvwboX8zd6dhaLsOuMLo9Bu3rpd0eGiEyCKNrgUAH3yQCbfdjThmQ9i4CKBKCEkgpG3H8sHJ73EpJW1XPbUIp6ePYrBze30b+sgEfRz6d0zeOtNP8vXppjhSzNrlI9z5wSYM2j7XsNZAzQWnK2ef6Ao+1Jf6UrIdSAegnQNsNI0zaPxBiLeblnWutwNTNO8G/gV3sDE63cnccuyMqZpfi67/yN0P+fgOWC2ZVk1e3sCirKr9ERqu2UuBkkq8RFFJtKIkB+A8IwqBj92EqtOfxFbehV44eH9qDhxCFOf+xxrf/UeZ9RWo7/n0Br0U1PYj898ZyzDhoWZPwzUM80URdlXdjrmQNlj6oVVoDWGHPMdRFMbEnAIkqYM0NBI4E/dhubP/+2E1heref/nL+NW6hzz2Fno4e0r/fXrE5SU+igtUQGBouyGHrnE3yJ+m1feD5JX9vqmBFWyKEpPKilArL2V1Mzf4q5pz3kAknenAlvaYUR5/i7HD6YjWQaww8AAYMSI0A6XK4qy//XFbgXV+agoPa0ojH/Jb5FGbkUvvJue+hUesGwpirKviG3+ej8VHCjKfiDCfoK/O57O31gQpNHPmo4I+w9sxhRFUXZAdSsoyn6i/XQeofpm3H8tQps7CXH7tw50lhRF2Qf6YreCCg4UZT8SN5yLfsO5BzobiqLsQ31x9LnqVlAURVEUJY9qOVAURVGUvaC6FRRFURRFyaOCA0VRekR0WSuNCxvRZlQxbGrRgc6OoigHORUcKMoB1rKoiQVzn0dzJGld4/KfHse5kwUBrS8Oc1KUvqjvtRyoAYmKcoD9948r0ByJBBKFfj77wCIevmMI4v30gc6aoii7QG7z1xeolgNFOcA+EmEmA9GiIEVbk5TVxxm3upHaJRG4cvvt31ie4t11GaaP9nP0ePUQJUU50NSYA0VR9rnKE4eyoNFm5IY6Shu9Xy4XEorbUmRa0/hKugOA5xYlueTuKFs1gXgxydh+Bu/+rBhdE7iuRNP6XiGlKMr+p4IDRdnPOu5bil2fwHfmRJKhIC8UFfPsZyYSmzuFcMrmWy8upqDQh9QEzv9tYtORwzlsMAwr0rjrzSSbdQ00DQSsqHc4/8521qxIE0tJIuMjPH1BiNKQChIUZX/piy0H6iebe456YZXttBx7J+4rq7Ax0MjQWKFx19FHcP3047u2KU2k+M6ilQAI1+WVARVUouFKeKMkQpuukfFl43pXEjA0UrpGyHWZ0B7nlNPL+NUxvh0dXlEOdj1Si68R1+WV96PlT3p9tKBaDhRlP0n+8SXkK6tIEQIETaEi/jJ7OjEEhuNg6zoAmitBShDeL7wdurWNpuIibCGYGk8BsC7kZ30oAIYgpWsgBAmhsSXox6eGGSuKspd6TXBgmuarwBwgjffTdluBN4CbLctalLPNS5ZlXZOd/yxwFTAZ786MOuCflmVdsZ+zrxzknJYYrT97FT3nJ11/+OUTeWHCGG8D6QUEkXSGU1ZtxHAcHCEIpjNE4nGioSAtkYKuL+zYRJp6v4+4bnhdDAC6oN5ncP50fb+fn6IczPpiM3GvCQ6yrs6p+IcBFwNvm6b5FcuyHs/d0DTNEcDTwKXAQ3jv3zhgxv7NsnLQcRy46Sl4cAFyfQNOxk+yI0SKfpSxAZtBSHTWVJThsx0yhg5CMLGxhbOWr/fSEBCwMxiOQ9eCbVSmM2z06ZDJbmNoBDIOx121Fd2BIh+MqtT44uwQFeU6hSGN/kUCa1UaTcCLTTp3LHEI+eD2k/18eUJ+cdAUl7y+RTKxXDCubM9bSVuSktc2S8aUCg6pyE/ntsUO/14jOWaI4Gezey6ocaXk+fWSkAHHDD1wTStv10juWOoS1OGzwwQnDBeEfLv32r5fL9kUlRw7VBDx9/rW6536tLx3n6zvvQ+9LTjoYlnWRuCXpmkOAP5imuYT22wyA4halnVvzrJl2T9F6Tn/8wT84n7AKzIcinHQMXBoZwjgUkAdD/3tEQoTDk9PGcNPTzuepJFfOW4Nh3CFRkE6Q8rvI2I7NGpeF0J10EddwA9O953VwnEZn0gjgAzQlIHM2jRLNtgkhMAVUILEcSGhaywvLQAgkYHTHkzzr7MFp4738tAUl8y812FTFPw6PHeaxtw9KJjbUpJD73NY0wqGBk+crHHiKC+dO5a6XPaSl/fnN0g+arb5xxd6pkg6+2mXh1d6x/p/h0r+cNT+b12p6ZAc96hDLOPN37JYMnsAvH6Wjk/ftcrlgY9cznnGRQLTquCts3WCRt+rmHJ9Gt67g9GnNQzbHQ8Bg/BaBXJZQMQ0zXtN0zzFNM0h+z9rykFpyYa8WR9xOiiFri4FnSjlBBOSRgo59IN6/vfvzzC0sZVWTUOzHdYVF7G+qpJNleWsGNiPcDJFxpXMryrmpWHlrKgsIhXJf8aBkN1jpnVACoFAUpZKE5AuPukFBgAxY/uv/v0ful3Tr1VLNkW96bQDD63Ys4bTt2oka1q9aduFB3PSWVyfn+YTq/foEDuVsmVX5QJwz7ID0wi8rpWuwKDTwlpY2bzrady3XHY1YS9ugA8a91n2PpU+Le/dzkhE3l9f0BeCg+rs/+W5C7MtC7OBFHA9sNE0zRWmaZ6yPzIVjUbV9ME6ffaR5LIJsq00YVopIIOBjc7Q2g5Crku7YXD3hBG0h0NdRYwUAlvXKMykCYSzYwwCOhT4vP91DQyNUE76EtClZGRHDAmkhcDJKbQitkseAVOqRNe5jC8TGDmPbx5bmNqj12RsqSCgd6czrqj7qY/zhibzitFpVbuf/q5MBwzBmJLu851Y6uzyvvtyenS4g0PySikoC0Kx6NjldCZXdO9b5IcKfdf37Y3TPfXe7Wt9MTjoNbcybjvYMGf58cALwATg/3a0TXa7SuAK4DLgEMuyVvVwlnvHC6v0jJc+wPnx/aSWNBOjCoRLWgbwWg5cNBxWMww727PnCvj25V9kTXkxR6zawtkLV/LikZMAr0VgaEsbcUPn9gkjcEW28Anp3uV4Klt4Skn/RJrCVIaB8QSj4gmMUj/HnVHJ0iaIBAVDiwSvLkmhCUhUBvnnBjB0wbdmGVx9jIGe8xClFza4PLJSMrVS8J3pAiH2rNB7bbPkvuUuE8oF358p0HLSeW2Tyx/fcRleDNccoVPWQ89n2NQu+Z93XIIGXHGYRmnwwBTg7SnJ8+td5m8GW8K3p2lMq9r1vGQcyXXvSta3SS6eonHogL5REX2Sffze9cgLtkLcmFfej5c/7PVvTF8IDv4OnAAMAebvaJucbQuBduA0y7L+1bM5VsGBAs7mNtzmBKLQR3TUH+ksm1wkSRyWa5MRruTRI8dz+/HT6d/cwV/ueYnK5hjrB1f8f/buPD6uqv7/+OvMZLI1S9s03dONslPWw75vCgiogAoIisiiuPEVFPyxfP0CgiiKKKIsQlUWBVERZBGQpSwFDnsXCoWW7nuTZk9m5vz+uJN2EpI2aZa5M3k/H4955Nw795587iRz5zPnnHsuC6tGsH5UGYWJBG8PL+fxCaM3VR4hGHOQ9p8Wjcf5waExTp0WY0SJYdxQ9c+KpFFy0E1ZOyAxNYbgHOAs4EvOOW+tTX/+YGAP4J8EXQ9DgEuARoLxCCL9LlpVTrSqHICic3YnfscLRGmhkKCjOUke/912B2779F4AjGppxqQGp01esoZRa2r4z6d2A2B0YxMR7ze1HMRT56O2ORG8p7wlTl60gN3GZ+1bWyTr5EpXQrpsO4NcYa29hOC70lrgJeAA59yrnWy7HjgM+CEwDGgA3gaOc84tGphwRTYpvP5EEn97BqrrSJDP+lgFTYV5PDd1243bRJJJllYNZfmQYoY0tvD3/bbnje3HscfK9awsLiTPJ2nxm+ZKwHuiiWA0QVVjC/nFEc7fV7MjigykXEwOsqZbIQvphZVPWroO/7dXoLKM1k/tiW/1fO+82bwxeiRuwmjGVdfyvRffwuCZPXI4E5et5St/PZB7lxVQmp/ktlfjzF6RBEyQH8ST7B1rJbG2lZGVUf70/WFUlqsrQaQL/fIpPsf8qt35fid/YdZnC0oO+o9eWOmW26//kOKb3yQRMdSMKAHAJ5Ps9NFSFu88jq+9dOzGbVfWJhl/bf3GHoV9qyLM/NYQ3ZFRpHv65U0yu0NysLOSA9kMvbDSbbdM/Rdj19XRWByjNRZl9tjhPLT7VG61SQ792oR2285fk+Qu18K48ggX7J/fRY0i0ol++dCeZW5qd77fxX8v65ODXJjnQCTr/fmgXYhHDEUNrawsLuLR3afy0/kvcvCZ4z+x7dQREX5yTKESA5GQyMV5DrJtQKJITkocNJYLRh/D0IZmmieUcdN2/yV6TDGRTmYyFBHpb0oORELgpbML+NO7MRIevrZrhMf+rV4pkWyRi+9WJQciIZAXMZy9m64yEMlGudKVkE5tliIiItKOWg5ERER6IRdbDpQciITEh89/zOJ/zWHv/UeALkQQyRq5OOZA3QoiIfDo7XM49q+FnNNsOf6hUkY/8kGmQxKRQUwtByIhcOeTTVzw8b+pbNjA3dMOZ+lrED0+01GJSHeoW0FE+sX5r/yLe7Y/nHmTR3L4x+9DS+6dbERyV+69X5UciITAA1MP4r6ddgHgzVGVfG92lINysidTJPfkYsuBxhyIhMCC8oqNZW8MrYkMBiMig56SA5EMe/eddRQ31xBJJgGIes821UszHJWIdJfv8MgFSg5EMuyJfy6nqaiQsUnP2ESC0YkkT06ZRnVTLNOhiUg36MZLA8RaW5e2WJD62dy2wjlXkrbt/wI/Bs5wzt2Ttr4CeBe42jn3u7T1vwH2AQ50zsX75QBEumne86t599VmPpw0hWLY+LUjP5ngyjnTOLEpyV3vJPl4A1x+QISKYuXzItL/jPfhbgSx1t4B5DnnzurkuSiwECgGZjnnDu3w/DHA34A9nXPvW2uPBe4H9nDOze/n0MP9wsrASyTgby/DGx/hp45mxvwi3n98OTfufQDNhfkUpW3aGq9n3rARkBeB4lQO3+rBe/BwxGS483MFPLsgwSXPJqkaavjv6TFK89t/a6lrSXLYX5N8sA4qCmHvMfDtPSIcXBXhhtcS3PKmJxqBL24PJ28XYXkdVJXCqkZYXgfDCuGQ8Yb31sG6Js/UoTB7raclYRg9xHDw+E9+S/qo2jN7reeAsYaKotz4FiU5o1/+IV81v293vt/HfyPr//GzPTk4AXgQOBn4F7Cjc+69Dtv8BtgX+BzwBnCFc+72/o4bJQfS0TFXwRNvAfDy2L15bexeANQU5POPbccxurUJVzmW/JYGagoKqSsqBjwUvhzjHQAAIABJREFUxyDp2/9HJVLLBRHID27YVBTxNFzUviti6E1xalo/GcpeI+H1VZ2HaWj/q0YWBckCQNQEv7rNpfsYrjtk0w2jXlrqOfKBBE1xGF8K7owoo4Zk/XlScke//DPONLe2O9/v58/P+n/6bG+jPA94xDn3MDAbOL+TbX4IlABvATMHKDEQaW993cbEAGBJ6diN5fLmFs6c9SLHz36O1fkxlpaUUxcrCFoJohGIbOY8E9v0Fm5MQMdkv7PEAOCNLhID+GRW25YYQPvEAOCuWe1X/OW9JE2pzroltfDUx8qRRbJR1iYH1toq4FjgztSqO4GvWGsL07dzzjUCLwOVwB8GKr7a2lqVVd5UNgkYVb5xecKGxRvL6woLmD1iDA9O3YtIIhEkBW06SwzSh0QnfbtNjTHtfm+0iwaskliy0/Wd2VxusuOwTddc1tbWssuITRtHDOxYYcLx+qusclq5r+XigMSs7Vaw1v4fcC5Q5ZxLWGsrgaXA2c65u9O2Ow74CzAdOB7YzTnXf/8lm4T7hZWB98EyuOA2mLWI5Njh/KLscGp9GQ2FBdw3uYo1BcHdlvJ9koaCGMloqrl+SAwiEUgkg/+qhCdi4JLDovzJJVjaEqEoZnjn61GmDo+2+5WvLotzwH2bvvGXxOCEbeCXhxo++5DnjZVgDEwsg6MmGhpaPSOKDNXNnvfWwYQyw5k7wrNLYF0TjCuBWas9da3BB//l+0UYUbzpZOi95+Y3Pa+v9Jy8neGEbbL2+4fkpn755H7J3NbufH+APy/rM4SsTA7SBiJWAtVpm48AXnbOHZzarpLgioUfAX8EngE+dM6dPQChh/uFlVC4/4rZzJq5get33m7jutLWOJ/7yPGo3Z2fn1LJ9583xJNw66cNJ20fJWJ6ft5Jer9V+4nkmH55E7xobm93vj/Qn5v1b7ZsTes/A4wB9gN2T3ucCBxkrd0xtd0dwAvOubucc0ngK8BJ1trPZSBmkU/44tU7M3KoZ3z9po797WqqOWXem9y6zxt8ebd8Vn4nxtrvxThlh7yt/oBXYiAiPRHKeQ664XzgQefcWx3WP2qtfRU431o7B9gbmNb2pHPuY2vtd4DbrLUvO+dWDlzIIp376vnlvPabZdTmF1PS2sw1z95FaWMNL7BbpkMTkW7IlXEG6ULfrZDF9MJKt/236kccvmTexlNMnAiP/eurnHDCCRmNSyTH9Mun+AxzR7vz/cH+nKzPFrK1W0EkpxywZH67s1ZjRFMni0jmKDkQCYFktH0P34qyURmKRER6KhcvZVRyIBICs0dt02556UglByLZIheTg2wdkCiSU5pP3Je7Z05gj2XzeGPcDpQdX6jMXUQyRsmBSAgcdMvxlF/+BO/NG8FhJ1bx1rAVmQ5JRLopF0efKzkQCQNjmPaTYzZed/vWww9nNBwR6b5c6UpIp+RARESkF8LWcmCM2QH4AjDae/+t1HK+9/6d7tahbk0REZEcYYz5AvA8MA44M7W6BPhlT+pRciAiItILIbta4SrgaO/9N4C226a+DT2bclXdCiIh1lwX54kb57N+cSO7f3YMu31mdKZDEpEOQpAQpBsJtHUf+LSfPer9UMuBSAj4RJLmaVfRYL5J85DvUPLRBgCevm0hz7pm3liTxz2/X8aqj+oyHKmIhNzrbOpOaHMq8GpPKlHLgUgIrPnC/ayZVUKMKdDg2fmqd3ll+oG8+3Y9leurKWxupakgxpszavj0lJJMhysiaZKZDqC97wL/McZ8HRhijHkC2A74VE8qUXIgEgIr/7Gcwo3dg4amdcUAJFbUUV5TR8R7Ys3NLH19DXx1XOYCFZFP8JHwdCt4799LXZ1wPPAIsBh4xHvfo2ZHJQciGeZXVhOllaBLMOjpC5ahqTnBsNSdU6NJz+qVTRmKUkS64sOTGwDgvW8A7u9NHUoORDLMz11BGRtIkE+CKPk0U8liEs9tR22skjFt2wFLag0TftXED/eN8O398zMZtoiEkDFmBl0MPvTeH9LdepQciAy0eAIOuwJefA/yoqwu2ZEGhqaeTDKO98mjlaq7FlK7/668WzWWkvoG5lUOZ/bIClYuqufCxRF2HRXhkCl6C4tkWpi6FYA7OiyPBr4O3N2TSkJ9ZrHWXgZcA5zlnPtjh+eOBC4G9iU4jlXAS8BNzrnXU9s8C+wPqTbaTfZ3zr3bv9GLdKK5leT/TCfy4nvBcjxBa3Vi49MRPK0UsIFhrDYTGNXUyJwxI3l38ngwwQmoNOGpNUku/kc9r15UnomjEJE0PkTX/Xnv/9hxnTHmQeAugjkQuiW0yYG1NgKcC6wDzgP+mPbc14DfAj8GznbOLbfWDgdOAE4kuJSjzdXOuWsGKm6RLq2qoWXaZTSuaqWQEvKpo4ZKYsRpIkkhDVSyAkOEDRQzf/xI3pw4ntZohPGtcZbG8qguzqexII/WpOetpa28tKCVAybHmLkoQVOrJ68gQtIbDqkK1TcZEcmspcCuPdkhtMkB8GmC6R8/Bzxird3FOTfLWlsC3Ahc65z7WdvGzrl1pCUQIqFz5m/YsKqQOBU0Ank0EaOV4ayjjA1ESGLwgKGCdUSa47RGg68kMQ+rK4ZQU1oQ1NUUp9UbDv1tHSftVsD9s1OtDwVRKM3n/N0Mvz86mpHDFBlsfDQ8ybgx5uwOq4qBk4CZPaknRI0hn3Ae8Jhz7t8Esz2dn1p/AFAO3JepwES2Rv3LK/HENi7HKcQTwQN5xImQpJV86imlmXzmTB67cdskUFOSNgAxPwrek8yL8tDcTd0SNCfAe/7wrsf7sN0ORiQ3JSOm3SPDzuzwOIagy/30nlQSyuTAWjuW4BrNO1Or/gCcYa0tAipT65ambf9ta221tXaDtXZeh+ouSz238dHvBwDU1taqrHK7cv3QcaRPl2JI4onQQjFJDK3kU8twmhlCPcOo2lBDWUsrsUSC5XlRSKR92MeT4CEWTzIqfU6kiAFj2GE4GGNCc+wqqxymci7z3h/e4XG89/5y7/3antRjwvjtwlp7BfBtYJxzLp4aT7AM+AawHHgc2NY5N7/DfmcA1zjnJqWWnwWeytCYg/C9sJJRtQ+8x/Iv/ouRLAYMxawjzhDqTSmJSJTiRDMNbBpg+MKU7Xlsv32ojUZ4oHJ4kMqXFgAeNrRAQZSzdo5w3fFFXPNMC+sbPRTnMaQwwuX7RZhQlvFvMCJh0y9vin+V39PufH9izZcH9M1njJnSne289x91t87QjTlIDUT8OjAUWGKtbXsqStC18ClgA8Fc0RpoKFmj9As7YB4rIPHzRyj77zMYIEYDeb6Z9YkxRGnCUIonAngqltRSsXIdkeJCRpUWs7KwAKpTkyBFDKfsEOGu04cAcPNnCzN2XCKDXQguZZwPqQFLXfMEn6PdErrkgKB/pArYh7SuA4LbTT4OTAIuAn5trW0G/uycW2GtLQf2HOBYRXqk5JjJ8Olvk6yajVm6GjDU5Y+kqKWWIdRSSCMtFJIE8vMqKV+9nl9/4RCaC2NE40kSzfHg7d8Y57y9Y1v4bSIyEDI9Q6L3fX8xZRiTg/OBf7bNVZBmhbX2ZeB859y3rbWLCJKE/2etzQNWAi8DJ3fY7wpr7aUd1p3qnHukP4IX2SJjiCy6BR56DVNRSumwobDrlQBEiVNEHXFiNJ5QwiOF29FcGCQBibwIE9c0sMRHOHXXPI7aXsmBiPSPUI45yBF6YaVbfH0zTSXfpYAGDEnA0EwxT/7rBH57//Y8sdum7sTPrF7BX64aR0lBxpsxRbJRv7xx/jHivnbn+8+vOS1jb1BjTB5wAXAoMIK0Y+7J9MmhvFpBZDAxQwpIVA4nTj4J8oPLG1Nv5+PXrWXHJesobWhh++XrOatpjRIDkZBJmvaPDLuRoAX+eWAv4EFgJPDfnlSi5EAkBIouOZR8GsmjmQhxWkYFXQZDJpdwyrxFXPjyHL4452N2+szYLdQkIoPcScCx3vubgHjq5+eAw3tSiZIDkRCInn0QfuwwAHw0wpxv7Q7AfqePb7ulAiPG5DP1kIpMhSgiXfAR0+6RYcXA4lS50RhT7L1/D9ijJ5WEcUCiyOAzrAQz63p4YR5m+7GsmecA2PGAYXzrdzuzfkUzk6aVkl+oKZFFwibTVyt0MBfYG3gVcMCPjTEbaH/13xYpORAJi2ElcMJeQTltns+RE4sYObEoMzGJSLb5HtA2p/r3gd8BpQS3JOg2JQciIiK94E14mg6896+llT8AjtqaejTmQEREpBfCdLWCMeZtY8wPjDFVvalHyYGIiEgvhGxA4o8JxhzMNcY8Z4w53xgzvKeVKDkQCbG6Fs+LSzyr6jWnlohsmff+H977LwJjCO5s/HlgsTHmXz2pR2MOREKqOp7PmFsS1LV4ohF45YwIe43W1QoiYROyqxUA8N7XGmPuBaqBfOC4nuyvlgORkLpp2S7UtXgwhkQS7J+S/GRGPNNhiUgH3ph2j0wygSONMX8guOfQj4HHgMk9qUctByIhNbd+KBtnQEr9vPxlz/l7JRlRrLxeRDq1DKgD/gIc6L2fuzWVKDkQCaG/rNmGhmQMIn5TguA9Bnj8vQRn7KnkQCQsMn2FQgef9d6/2ttKlByIhMziDUnuXbstRAnu7Zl259SKuiZKYoUZi01EPinTXQnp+iIxAI05EAmdm14PbtuMMdB2WZQHEp6CpgRX3VHNj+6pzWSIIpLjlByIhMzstWxqLfA+SAwAIoalw4tZG8vj8Zca+cfrTZkKUUTSeNP+kQtC0a1grbXA5cCBQAGwAngUuB64Dvgy0AwkCW4e8Rvn3C1p+08H4s65c1LLC4GJwL7OuVfTtvsSwSCN55xzh/X3cYlsifeeD6d/QMuSGspXraXlneWUH3gIDJ/Y+Q7GsGhoMaVNNZz5b8972yYYX6bLG0UyKRmiboW+kvGWA2vt0cALBLea2d05VwYcCqxN/QT4o3OuBBhKkETcbK09bAtVzwXO7bDu3NR6kS1btBqOvRqOuwbmLw/WvfoB/OIhuOc5+MU/4d2F8PWbYftvwYV/gHhis1Uycx58+ir89t+ieo/reKf416z67r9Zda1jxa1zmLkMvvmHh8lvbd20j2dT6wEe8gyzxw+lPhZltxsaePWvi1n83EqSySTz5zaw6CO1KIgMpLC1HBhjjjbG/MEY83Bq2RpjjuhJHWFoObgFuNc5d0nbCufccuBqAGvtMWnrk8CD1tq1gAWe3Uy904EfWWv/xzlXZ62dAuxOcIeqg/v6ICQH7XERrKsLygfMh8tPge/d2WGjP20qvv9viETgl1/rvL4b/gk/CLY3QDnL+Xj08RStjBD1nhoKeXTKbtx/2E4k0i9hjPigzQyCJGHjtxTPV9+cz79e9+Q3tTApNpdXykcDcMKXRnDMSSN6+QKISLYxxnyH4M6MdwCnpFY3Ar8GDuhuPRltObDWbgdMBe7t5vbRVNfACNrd1LZTy4DngdNSy+cAdxN0T4hsXnX9psQAYPUG+PWjW97v8Te7fu7WJ9stGuC90WOIpl2NMGllDS2xPBLRtLem95D0ROMJypvbtyg0RIMuhZbCfBoX1WOSQRbxwlPVW45VRPpEmCZBAi4EjvLe/5RNXyveA7bvSSWZ7laoTP1cuoXtzrTWVgNNwH3Alc65h7tR/+3AedbaPOCs1PKAqK2tVTmby6WFUJJ2yeDESlq3Hc2WNJ+wZ9d17jCu3bYeiJoEKypKAWjJi/DY3tsAUN7YEmzUmoSmJLQmSSQNGwrzGVnXSLQlDtWNlCRS3RjeY4zHR4K39Kix+X3/mqisco6U+1rIkoNSYHGq3PbNIwa09KQS433mbuiSajmYBxztnHuqi22mkxpsaK0tBn4G7AIc5ZyLd9wmtbyQYGzCfcBCgptPHO2cO8Bae3lq38P678iAtF5iyVJzl8APpkNhPtz6TciLwNduBjc/+DYficK0KnAfQn0znHYw3PbNrutbWws/uhsefo1kdSP1TSWsiEzkod32oiavmLpYHq9PHc34NRsoz4d/7zSJxQVF7f+TiqKcPGshT4ysoK68iP1XrOPT61aza3ELu587lRmvNxEriHD8F0dQWhaGXkORUOmXT+47tv1Hu/P9OR98PmMZgjHmb8Cb3vufGGPWee+HG2N+COzuvT+9u/Vk9OzhnHvfWjufoOm/0+Sgw/YN1trvA7OBbwE3bWH7hLX2TuAK4Ow+CFkGkx3HwyOXt1/390s637Y7KkpTycM3iRCk9yUfLOPCW54m+eFa3phdwWfmfMjaYUU8uO+OnDBrAbfYndolB6VNrbxXUUbdyFKiiQSTDhzO/56+qUVi8n5bH56IbJ0wDEJM8x3gYWPMuUCpMWYeUAsc35NKwvDV4gLgYWvtSuBm59wya+0ogg/zBR03ds61WGuvAn5prb3TObeltqJfATMIrogQCRWz7VjybjwTgLbP9TMebuWh2Qmu+ufTxKI70RoxQUtFXpTaSJTZY4ZjvOe3B8P5BxVlLngRAcBHQpUdrAT2Tj0mEnQxvOq9T252rw4yPeYA59yTwEHATsC71tpagg/ykXR9NcK9wDrgom7Uv94595RzTtd3SVYYX2Zoycvj0pOOpjU/DwqiUJgH0WDWxB2ra7l+UiPnH6RplEXCICxjDowxUaAeyPfev+q9f8B7P7OniQFkeMxBjtMLK1vluUVxDrufYDBinkm78RLgPdcfDD/cP5bJEEWyVb98ct+640Ptzvfnz/1sJsccvA0c671f1pt6wtCtICJpDhofpTKvltXNhcGVCrG0eywkoSAvVE2YIoNeyLoV7gEeMcbcBCwhfQo17//b3UqUHIiETDRiuGXyDL487whamiLQ4sH4IEnA8NVdMh2hiLST+csX07VdMvXjDus9MKW7lSg5EAmhgkiSqUUbmMPw1KyIwfpdhsPQIr1tRaRz3vvJfVFPxgckikjnvj/2bYrzgy6FvCj84vAIb3xNiYFI2PiIaffIBTrTiITUyPxmVl4QZe5amDoMhhXmxklHJNeEYFbEjYwxi+liQLz3fkJ361FyIBJiJfmGvcdkOgoRySJndFgeQ3Ajpr/0pBIlByIiIr3gTXh66L33z3VcZ4x5FnicLcwqnE7JgYiISC9kwTiDZqBHAxWVHIiElG/xvP7HBcQLYuzzpXGYEPVrisgmIRtzcFWHVcXAccBjPalHyYFICHnvufXeybw8upjSljiffmQut929U6bDEpHwq+qwXA/8EvhzTypRciASQs8vGMGjE8eDMawvLODhvAhLV7UybqSmTRYJnfA0HAD8yHu/ouNKY8xo4BPruxKeURQistHrC4ZRWd/IAR8vZ1RtPbVFBdQ39vjeKSIyAMJy46WU97tYP6cnlajlQCSEYo1RrntyJoXxBM3RCNMP3gOTX5rpsEQk/D6RnRhjyoAefbtQciASQqNX11AYT7CsbAgF8QRTVq+nqHhipsMSkU6E4WqFtMmPiowxizo8XQHc15P6lByIhNCqYcVM329nntppMpFkkkmrayiK6i7gImEUgq4ECCY/MsCjwJlp6z2w0ns/ryeVKTkQCaG5lRUsqiqHqCEZjbJoRBkN9QkqSvSWFZFPapv8yBgzwnvf0Nv6QnWmsdY+CxwKHOqcez5t/XzgGufcdGttBLgQ+DrBpA6NwLPAFc65OanthwHvAtc7536TVs+NwMHA/s651gE5KJEutL64kMSbS4mduhvRESUb1y9eF+fAj9ayaNpQiAZjhuMFMWon/474qm+SV1KQqZBFpBMhaTkAwHvfYIzZneCzbgRpYxC891d2t55QJQcpa4EbrLX7Ouc6a0e9CzgSOJsgKagArgBesdYe6Jx7xzm33lp7FvCQtfYp59xca+2ngHOBvZQYSG/5FTUwdxl+53HE564lMrYMmlvxbiHRPI+ZNAL23waTSBD/+aMwYz6ceygt975D4uE5xFs9SSIUs5bEdzxxojCsCH/hYdz24jh2SMLohkZWlA4hFk+QiBhWxotZXnUPb+w6md1nLWR0bS2RMaWMvu5AKk7fLtMvicigFabkwBhzHnAj8B/gWILJjz4FPNSjerwPTz9mquXgZeCrwMXOuXtT6+cD1wDzgRnAYc655zrs+wyQcM4dlbbuRoKWiM8ArwNXO+d+NwCHAl3cFUuyn5+9FH/QtVDdQLKggHXNFWAiFPsaiqkNtgE4YXe8+wCWNwKQIEorxXhMKpVPEiXRru7GvCg3H34aGEPCGBaYGGc88Q6teRGKW1vIJ0ERrYCnkBZiJNlAAeN+fhCjL95jAF8FkazUL5/ivzjwmXbn+4tePDxj2YIxZj7wNe/9DGPMeu/9MGPMscCp3vuvdreeMM5zUA9cCVxrre3YfnocsKRjYpByN3CYtbYobd2lQAx4G3hjABMDyWH+npehOujSizQ3U0AjEZ+gkPqN2xjAP/wGLN+0LkEBbEwMwHRyZdFHI4KJjwCi3jO2vpH79tuexlheat/kxr1bUw1/HsP6e7u6tFlEBpmR3vsZqXLSGBPx3j8GnNCTSsKYHEDQdVBHcJvJdJXA0i72WQZEgeFtK5xzzcBLqf3+0Pdhdq22tlblHC2b7UaTLkEeHkMirZfOA758SLvtTKqVYNNXjE++/UY0rIO01rznthnL9IN24qJTD6YpL0JeWkIRwRMnQoII+bZiQI5dZZVzodzXQjYJ0hJjzKRU+X3gs8aYg4GWnlQSxm6Fp5xz11hrjyW4LnMb4BWCboXtgDOdcx3njsZa+3XgVqDUOdeYWvcp4EHgTuCzwK7OuQ0DcSyoWyGn+V88jn/5QxLbjaN+fjOREcVEauqIvTiLqG/F7DyGyDUnweJVJE6/Axrj+FFlNDcVkqhuwmDwQIwaoiSBCIYkrRHDLw8/h3g0yszK4Tw5ZuTGk839tz3M6Jo6GsoKKKtvxCSSJIgw5uRJTPnbsRl9PUSyRL98cv/84Ofane9/MOPQTHYrnEVw6eJjqe6EvwH5wHe9991uPQ/jgEQAnHOPWWtfI+hiaPM48CNr7cHOuRkddjkdeC4tMagApgPfB+4AdgFuBr7S37FL7jMXHYMh+O4/dHMb7jmRvPq9Ny623Rkhsb6BxPWPE3n9A8zxuxP52iGYsiLygQkXvs28Oc2sLi7emBgMb2yiqqaWHd3JlO9ViW9NkFjVQHT0EEw0rA2AIjLQvPfT08qPGWOGAfne+7qe1BPa5CDlYoJWg2YA59zz1tp7gXustWcDzxN0I1wG7Etw6Uab24BXnXO3A6SuXnjHWnuyc+7BgTsEkU+KDism+tOTOn3uq7/ajb2/sYgjFyyjakMZzQnP89uMYYc3vkD5HkH3gYlFyRun6ZRFwiAMMySmM8ZUEIzRG+O9/5kxZoQxZqj3fkl36wj1Vw7n3NsEXQtlaau/Avw69agmuJnEeGA/59ybAKnE4UCCSxfb6loMXADcaq0dMyAHILKVasoLuGHfnXly8mie2HEC0WiERaPKtryjiAy4MI05MMYcCswDvkxwmT/AtkCPBuSHasxBjtELK1vNfvdj5o6oJBaBpIdpy9fz56tHMqVCt2wW6YV++eT+6eEvtDvfX/rMQZkcc/AmcLH3/um0SxkLgY+996O6W0/YuxVEBqX8aJIdq+uYtmoDHviotIA19YYpFVvcVUQGt0ne+6dT5bakpYUeft6HultBZLAas6aGnVcFF9YYYEJdM7uNCVe/pogEwtStAMwxxny6w7qjCG4p0G1qORAJoZ0a17A4vxgiQf5eVtdILE+5vEgYhSAhSHcR8Igx5t8Et2++lWACpM/2pBKdbURCaPcj6tn7zXlUrK2hcvV68mrriITrBCQiIeS9nwnsCswmmONnAbCP9/61ntSjlgOREMqvijDsPEPzs034cWWc/dOdMh2SiHQhDC0HxpjR3vsVAN77ZcDPelOfkgORkCqd6jn9fw7MdBgisgVhSA4IpkreeL2zMebv3vvOJ1PpBnUriIiIZL+OGcphvalMLQciIiK94EPRcNC3c+soORAJqYJ1DfDlX8Oocvhlt2/DLiIDLCTdCnnGmMPZ1ILQcRnv/X+7XVkfBycifSDaHOfosx5g45eBe2bAyjsyGpOIdC4kycEqgqsT2qztsOyBKd2tTMmBSAhNfGhW6qbOKavWZy4YEQk97/2kvqxPyYFICBUvXk+Q6Ld9I9GtOkTCKhmOloM+peRAJIQaK4pSJSUFImHn++d+ThmlSxlFQigZy6f9lUl6q4rIwNEZRySETCJJequBB6hvylQ4IrIZIbvxUp9QciASQiPfXt5u2eDhR3dnKBoR2ZxcTA5yesyBtfZZYH+gNbVqBXCzc+5XGQtKZDO89xhjiK2u7zAc0cPNj2N+fU4mwxORQSKnk4OUq51z1wBYa/cDnrbWznbOPZnhuCTLfVjtWV4H2wz1fLDeMK0ShhUa3PIksQi8+34tdz5bz5z8MkxJAbuPMkwqgzElhkPHQ1EswuQymLOohVGn3cnot+dRW1CM94ZRLUUkyCNKA4YEAMYn4eX3YGgJ7Dg+w0cvIm1ypbUg3WBIDjZyzs201s4BpgFKDmSr/f39JF96JEk8CbEItCZhbAkcNR7+NMszec0a8k2CeaNGBzs0wuML2/ZuG0uQoMAnueiR59mnOs6Nh5/CXsvWcOQSR6QlgqeAODHyWLdpaOIB/w+Mgd+eC988ZiAPWUS6EJLpk/vUoBlzYK011toDgR2AlzMdj2S3W97yxJNBuTX1c1kd/HlO8MF/xIfvb0oMNqPZRDhkwTwu/PSJ7L58LQClrQ1pW0TY1LmQ+uk93PxY7w9CRPpE0ph2j1wwGJKDy6y11UA98AJwD/Bqf//S2tpalXO4PKmklc5UFgWZwtriEsbU1HS6TTtJz0cjKqnPzyceCU4qc4dN3Ni2YGhKmykxbc6DqaND8TqorHI2lmXLjPe5O8lKakDiU2ljDsYD9wILnHP9fSfiN9xqAAAgAElEQVSb3H1hhfoWz2UvJFlcC2OGwJI6OGaS4YgJhh+/kKCuBab861UWUMjioUN5s6oKYyBqDLEITBkKu4wwTCz2zHtpDXXzVlGXyOeMt+dRGI/z+QWPMyxegyGeai8IUgRz1DSYMgquPQMqSjP7Iohkn375Wn/JZ99ud76//qHdsr75YLCNOVhirb0fuA7Qbe5kqw3JN/zqiGinz917YuptdcoB3avsyNHAaOoW1rLh2o8oOWAihV9biyH9TObx5GGe/HGv4haRvqcBiVnOWjsa+ALwdqZjEemoZFIpJbcdB8Di31dR9cri9huMG5qBqERkMBoMycEV1tpLU+V64Dng4gzGI7JFiVis3bIHzO/PzUwwIrJZuTIIMV1OJwfOucMyHYPI1kjmf/JkY47fOwORiMiW5OKljDmdHIhkq3hRFIgCqesk6Xx8g4hIf1ByIBJGSUOQGGyaMElEwikXb9ms5EAkhGonDiX9alijK2NFQisXxxwMhkmQRLLOqoMmKR0QyRK5eFdGJQciIRQvK+bD43cKFiIR+OP3MhuQiAwq6lYQCam55+3L1IevyXQYIrIFudJakE7JgYiISC8kcy83ULeCiIiItKfkQCSEvIe7XxnNSf/7Ea8uimc6HBHZDA1IFJEBcf8fh/BA6/b8o7mSU69bwsL1mudAJKySmHaPXKDkQCSEnh+z48ZvIAvKK/jrPR9mOCIR6YpaDkRkQKwvKNy04D2RV+ZlLhgRGXR0tYJICCWMZ4c1S2nKy2dZyVBmFldlOiQR6YKuVhCRAfHNN55mYXklC4dWcuxH7zDENGU6JBHpQtKYdo9coORAJIQe3G4vmmL5ADy03V60RNXIJyIDR2cckZD55YtNrBpSxhGL5jCyvoaHpu7Jklh5psMSkS7kyiDEdKFLDqy1zwL7A60E96ldAPzEOfdAh+0uA64BznLO/bHDcwuB0ak6ksBy4DngBufcB/18CCK9ctF/PD9862mu/+9fAZg5ZgpXHPvlDEclIl3RmIOBc7VzrgSoAKYD91prp7Y9aa2NAOcC64DzuqjjHOdcKTAU+CxggLestfv1Z+CSuxJJzyvLPQuqu3+/xOomzwPzkjy1MMkTCxJcMSPO+U/E+e2bcWYsjrPHH+NMvT3Oi4uDiY5ueSP4+YW5r26sY7/lH7HX8oV9eSgiIpsVupaDdM65uLX2duBGYHdgfuqpTwPjgM8Bj1hrd3HOzeqiDg/MA86z1k4BfgEc2O/BS05Jes+J/0jy6AJPXgTuOS7CF3fYfG69eINntz8lWN+NsYQH/RXsqDhuJZBnyE9smhWxNRLh7eJRvTwCEekvPkcmPkoX1pYDAKy1+cA3U4vvpz11HvCYc+7fwDvA+d2s8q/Aftba4r6LUgaD99fBowuCFoN4Em5+K7nFfR5433crMWjjVqYKsQhN0TzeGjWRpmiMWDJJQ8TQmuh+i4WIDBxdrTBwLrPWVgONBOMKznHOvQNgrR0LHA/cmdr2D8AZ1tqibtS7hOCYh/V9yO3V1taqnEPlkcVQEtv04VxVHN/ivmPyG+kJQ6p+7znyq5ezx/nXsvc5V7N8SBlri8qIRU3GXweVVc6Fcl/LxeTAeB+ubyOpAYlPOeeusdYOI/jwb3DOnZF6/grg28C4VLfDcGAZ8A3n3PTUNguBy51zd3eo+1zg90Cpc66hnw8lXC+s9Nrziz2/cEnGlsBPD4lQXrDlk8BPX0nwu7c8+VFoTsDKekh6KMyD8nxYWh9st005PHqyYfs7PdS3BsNoU05/ewajGzfwiydO6acjExk0+uWT+4yvLGh3vr/7T5OzPkMI+5iD9dbac4APrbWfBR4Gvk4wyHCJtbZt0yhB18L0LVT5JeCVAUgMJAcdUmU4pCrao30u3TfKpft2f3t/MZgrm8FEgiwCSJgI00z/fesRkd7JxasVQp0cADjn1llrfwlcS3BpYhWwD7A0bbPdgMettdOcc+92rMNauy3wfYKBiEf2f9QiW298WYSl6+L4VOvBWxVVTKtRPisSVrlyJ8Z0oU8OUm4C/ge4D/inc+71Ds+vsNa+TNB68O3Uujustb8jaN5fQTDPwR7OufcGKGaRrbLw+4WU/LCaprzg7TlvxFiGrXkrw1GJyGASuuTAOXdYJ+s2AMO3sN8BaeVJfR6YyACJRgwtkbSxwt7T0rrlqyNEJDM0Q6KIDIiI9yRTYw4w8NqI8ZkNSES6lItjDsJ6KaPIoFZZWwst8dQjQYFuvCQiA0hnHJEQaoikvTW9pzyWuVhEZPNyZW6DdGo5EAmh8XXrNpaHNzdy8te3zWA0IrI5SUy7Ry5Qy4FICH1334/4/cut5CWT7L9DIQfts1OmQxKRLiRyIx9oR8mBSAiNmQD/N2ExJ5xwQqZDEZFBSMmBiIhIL+TimAMlByIiIr2Qi5cyKjkQCaHY2hZi1a34eAKT17P7OYiI9JaSA5GQaXrgbQ49+2FivpnF177NuCVXE83XW1UkrHLlCoV0upRRJGTqv3o7CV9EA5WMXr2E5y74T6ZDEpHNSBjT7pEL9HVEJGya8mmiCIAWhtD67IIMByQig41aDkRC5uPy0WlLERYPqchYLCKyZUnT/pELlByIhMjbCxpZVDmm3brhabMlikj4JDDtHrlA3QoiIfKfh9YxqnhIu3Uj6msyFI2IdEcuzpColgOREKn7uAE3ZSofV1TigbUlJWy3amWmwxKRQaZfWw6stc8CTznnrrHWemAdsI1zrjr1/HhgMTDZObfQWnsWcCfQACSBJmAWcA9wl3Mumdrvx8BBzrmjOvy+duuttXsA1wIWKARWA884577ej4ctstVWrGxgXG0Dj+2xH3FjOHTea+Q1N2Q6LBHZDM2Q2HseuBy4eDPbfOScmwpgrS0BPgXcBBwHnNzdX5Ta90ng58BJQDMwGThqc/uJDJgV6+G1+TCiDPbdlleeXknRuloiqbflnMqh3HDAWTTnRYlf18J+VfDoKTGGFebeiUgkm+XK5YvpBjo5uBr4qbX2Zufcwi1t7JyrA/5urV0DPGetPdo592Q3f9f2QAXwG+dcY2rdh6mHSGa9MBeO+jE0twIw59CD2GPGTF7b71Sqi8fSAvx9p4kkIpt6/mYugcm/j/PqV/LYbnjunYxEJDwGeszB68CDwE97spNz7nlgGXBkD3Z7H1gJPGCt/ZK1dpue/E6RfvW7xzcmBgAlb3xIfjLOCxN3hmSSFpIY79vvEzHUtMCfZicHOFgR2Zx4h0cuyMSAxMuAE621+/RwvyUELQHd4pyrBfYF5gP/C7xvrV1krT2vh793q9TW1qqsctflSSNJV5AIPvCHNrcQTSQYVdfIqW99QFFLK/nxRLt36uRyk/n4VVY5i8t9LRdnSDS+47eTPtTJgMSDnXMvWGuvBw4ATuOTAxIvbxtz0KGupcCfnXOXWmsvAz7lnDu0wzY/AfZ0zh3byf7lwDcIWi2OdM79t08P9pP674WV7NfUAt+/Cx52UFlG8srT2HDmdH5w5JlsU91MQVMLha2tNMdiPLjbVF7YZhzguWw/w9UH52Fy5AQkMsD65Y0z7dur2p3v3715ZNa/QTM1z8G1BN/oP9+dja21BwNjgbYP9IXAFGutcc6l/1GmAh91Vodzrga43lr7Q2D3tLpEBl5hPtxyfvAgaBgor9mTDafOobh2KcfNncvQxgbWFRcTaVrK3l88nR/sG2NMSdafc0QkC2QkOXDO1VhrrwKu3Nx21tohwNEEVys85JxruwPNo8CNwJXW2huAFoKrGU4EDkvtuwPB1Q33EyQMMeBrwFDgxT4+JJFeM5EIJROL2O2l9xjaGFy+OLyhgcM+XMSuR8YyHJ2IdCWeI7MipsvkDIm/B74DjOiwfoq1to6gWb6ZYJ6Da4E72jZwzq231h4FXEfwwZ9PMADxC865V1Kb1QI7Af8BKlN1zQO+mLaNSKgUDS9maFMd6a2fy8rL2DVzIYnIFrTmXm7Qv2MOBjm9sNJjT76wgUXf/QdfeHMmCYZQXxDhldGTOHnhBZkOTSQX9MvH+NTvrG53vp//m8qsTxd0bwWREDnygFLef38pS8qrGNLcwJCmJGvLyjIdlohsRmsODhDWvRVEQiQSMcwbPoyRNfUMafLU5hewaOjwTIclIpvR2uGRC9RyIBIyw1pauPD44yhvambmhCp++8ozmQ5JRAYZJQciITPpgj34v2uf5sOKCi56fgbjn/pKpkMSkc1oyMFuBSUHIiEz4cpDeKF1IaPfqaHqmvOITRuT6ZBEZDMacy83UHIgEkbr9xnG+n2GsasSA5HQa8nBeQ40IFFERETaUcuBiIhIb+Rew4GSA5GwSXrPn1dPpT4R44iWJEPy1cAnEmoakCgi/a3ytwnWNW0LQPlvksQvUnIgIgNLZx2RkFnXtKmc8PDW8njmghGRQUnJgUgYeR88gFveynAsIrJ5xrR/5AB1K4iETXMcqpuDW3eVxHhvTX6mIxKRQUYtByJhU9u66Z6eda1EdedUkXAzHR45QC0HImHT4eSSVG4gEnI5khGkUcuBSNiUFUBeBKIGhhbkTB+mSM5Sy0E4WGsPBh7r5Kk8oAA4BLgaOBQ41Dn3fNq+84FrnHPTByBUkZ6LGRhRFJS9z5lbwIpI9sjK5MA5NwMoSV9nrS0EngNWAS+mVq8FbrDW7uucU+OshNb6Js+CGpi/LsGQ6iamrlnNEUsWsbJoGBuicfjKXpkOUUS6kiOtBelyqVvhTqAIOM05l0ytux0YD5yWsahEtmD2Gs+2f0iw158TfOm+Zpoa47QUFDFzwhS2WVnNie5jXvnSI5kOU0S6lHv9CjmRHFhrrwSOBE5wztWlPVUPXAlca60tyEhwIltwx7tJ1jamFpoSlBVHmVtVyctTxnLLEXvSWpTPx6+sy2iMIjK4ZH1yYK39AnAp8Dnn3MedbHIXUAd8byDjqq2tVVnlbpUnlKZ908iL0FAY27i4tqSIprw8Ynk+43GqrHKulPtc7jUcYHwWX0NtrbUE4wzOc87d0+G5Z4GnnHPXWGuPBe4DtgFeYWAGJGbvCysDKp70XPFCkpnLPM8uTFDU2ExjaTEAuy5ZyYUPP8NpMz9PYeWQDEcqkvX65aPbXFLb7nzvry/N+hQha1sOrLXjgIeAX3ZMDDpyzj0GvEbQxSASKnkRw3WHRHnm1Dz8pQU0lhRR0NrMxLWrmDdqGL+59ItKDERkQGXl1QrW2mKCxOAluv+BfzFBq0Fzf8Ul0leaYwV8XDESgMK85Ba2FpGMyvp2gk/KyuQAOBnYC9gJqA16F9o5v+MK59zb1tr7gLP6PTqRPpQXzcEzj0guycG3aFaPOQg5vbCyVczPW9vNinjQGJjx5WzN40VCpX/GHPyorv2Yg+tKsj5dyNoxByI5q8N0ya0tGYpDRAYtfR0RCbmx5ZmOQEQ2K+vbCT5JyYFIyB0zOdMRiMhm5eDN0dStIBJyJ2+X6QhEZLBRciASMr87EoLxrJ7TdoCKIWrgE5GBpbOOSMh8Y488xi15GIATjj8hw9GIyBblXq+CkgMREZHeyb3sQN0KIiIi0o5aDkRC6JZZU3irdSQXmrVccnxFpsMRkc3JvYYDJQciYbP9Det4P7Y9xODSuZ71LWv56UlKEERCKweTA3UriITM+75004IxXD+/tOuNRUT6gVoOREREeiX3mg6UHIiIiPRG7uUG6lYQERGR9pQciISdT2Y6AhEZZNStIBJyxm95GxHJoBzsVshYcmCttcDlwIFAAbACeBS4HrgOiDvnzumwz/Qu1t8OnAMc5px7rsNzRwA/BqYRtJSsAP7mnLus749KpO/5iBr4REJNd2XsG9bao4EXgHnA7s65MuBQYG3qZ0/qKgNOA9YB53V4bjLwCHA7MBKoAE4C3uvlIYgMrNZ4piMQkUEkUy0HtwD3OucuaVvhnFsOXA1grT2mB3V9GWgGvgPcaa39rnNubeq5PYFa59yf07afnXqIhM6F/40ztL6W6pKyTSu9hxFfhdXTIT+WsdhEZPAY8JYDa+12wFTg3j6q8jzgHuABoBY4K+05B5RYa/9srf2ctbaqj36nSL+45S2oKyxut66otQU2NMIDL2UoKhHZLNPhkQMy0a1Qmfq5dAvbnWmtrU5/AKenb2Ct3QfYHbjTOdcK/Bk4t+1559zHwL4ELQs3AB9ba9+z1n6uj46lS7W1tSqr3ONySQwSHU4uyUhqxbZjQxOnyipnc1m2zHg/sEOhUy0H84CjnXNPdbHNdLoxINFa+wdgD+fcnqnlnYFZwOHOuWc7qbcSuAz4FrCzc+79PjqszmiMufRYdWOcYb9JQvogxHgcv+Ie+NXXMxeYSG7ol+/15qrmdud7f2VB1rcfDHjLQeoDeT7BIMKtlhqI+CVgB2vtCmvtCuBpgg/l87v43auBKwjGWuzSm98v0h+GFuV9cuRzJKLEQCTMcrBbIVMDEi8AHrbWrgRuds4ts9aOAs4GFnSzjjOAJLAr0JC2/njgZmvtCGBHYA/gn8ASYAhwCdBIMB5BREREOsjIpYzOuSeBg4CdgHettbUElzaOBJ7tZjXnAbc75z5yzq1oewDTgZUEAxPXA4cBLxEMVvwI2A84zjm3qK+OR0REJJcM+JiDQUQvrGwV8/PW9l0LyST+h/mZC0gkd/TPmINrOow5uFxjDkRERCTHKDkQERGRdnTjJRERkd7IwXsrKDkQCZsOJxqjGy+JhFvu5QbqVhAJm7+dAOnjWWu+k7FQRGSQUsuBSMicvH0eD817mLpEHqd//thMhyMig5CSA5EQMgZK83SbZpGskIPdCkoOREREeiX3sgONORAREZF21HIgIiLSG7nXcKCWAxEREWlPyYGIiIi0o24FERGR3lC3goiIiOQ6JQciIiLSjroVREREekPdCiIiItJTxpiFxphdMh1Hd6nlQEREpDdy8JbNajkQERHJAGPM3saYl40x76R+7p1af50x5gep8heNMUljzMjU8qPGmE/1d2xKDkRERHrDdHh0Zxdj8oEHgcu997sCVwAPptY/DRyZ2vRIYCZwhDEmBuwLvNCX4XdG3Qr9xBjzBDAi03EA5OXljYjH42syHUd/0LFlJx1bdsqBY3vce39MX1fqL87bmn6F7YEW7/3TAN77p4wxLan1LwJ/TSUKBwIXA6cAS4FZ3vuGvom8a0oO+kl//ANuLWutc87ZTMfRH3Rs2UnHlp1y+djCxHvfaIx5BzgNWA48A/wCWELQqtDv1K0gIiIy8OYB+caYwwGMMUcAsdR6CJKA/wOe9t43EyQGZzFAyYFaDkRERAbGU8aYeNry54FfG2OGAPXAKd77ltRzTwNXsykZeBo4AHh1IAJVcjA43JbpAPqRji076diyUy4fW7/y3k/q4qn9u9j+ZdKGN3rvfwb8rO8j65zx3g/U7xIREZEsoDEHIiIi0o66FXKYtfYM4IfATsCFzrmb054rBu4C9gLiwMXOuUcyEmgvWWunA0cBbZdYPeCc+0nmIuo9a+12wB+BCmAt8BXn3AeZjapvWGsXAk2pB8AlzrknMhfR1rPW3gCcDEwCpjnnZqXWZ/3fbzPHtpAc+ftJ15Qc5La3gFOBSzt57mJgg3NuqrV2W2CGtXaqc65uQCPsOz9NT35ywO+B3zrn7k4lebcCR2Q4pr50StuHTZb7J3ATMKPD+lz4+3V1bJA7fz/pgroVcphzbpZzbg6Q7OTpLxGcsEh9o3HAsQMYnnTBWjsS2BO4L7XqPmBPa21l5qKSzjjnXnDOLU5flyt/v86OTQYPJQeD1wTg47TlRUBVhmLpC9+31r5rrf2ntXbHTAfTS1XAUudcAiD1cxnZ/ffp6B5r7TvW2lustUMzHUwf099Psp66FbKYtfYNgg/5zoxqOzlluy0dJ3AZsNw5l7TWfgV43Fo7JVeOPwcd7JxbbK0tAH4F3AyckeGYpPv09xsElBxkMefcnr3YfREwEVidWp5AMEVn6HTjOJembfsna+2NwHjat4xkk8XAOGtt1DmXsNZGgbGp9VmvranaOdf8/9s792CrqjqOf76AooAgMZJv4WY+0FJpa+Ujycr3I2OawhSu5IiTZjoFlpoajoPvyj8MTXn4SB0S34CPJhy1IT0+rpqhQV4RAy8qiqIjAr/++K3j7HO858HhwhXu7zOzZ85ez99vrX32/q21fnuvLMuuBe7tZJE6mui/YIMnlhW6LtOAMQDJIXFfYFanStQgWZZtl/t9GLCKnMGwoVEoFNpwZ9IRKWgE8GyhUFhSOdeGQZZlvbMs65d+C3eYfa5zpepYov+CjYH4CNJGTJZlI4ArgP7ACvzznIcWCoWXsizrDUwB9sEfpuMKhcI9nSXr2pBl2SP48sJqYBkwtlAozOlcqdaOLMt2w1+F6w8sxV+Fe7l6rs8/WZY14dvUdk/HS8CZhUJhUacK1iBZll0D/ADYGn+V9u1CobDHxtB/7ekGHMNG1H9BZcI4CIIgCIKghFhWCIIgCIKghDAOgiAIgiAoIYyDIAiCIAhKCOMgCIIgCIISwjgIgiAIgqCEMA6CoAxJgySZpO3XcT2nSbo5dz5T0rh1WWfQPpLmSWquM+16uT7WB5J6Jt1362xZgs8XYRwEDSOpSdI0SYslfSDpdUl3Sdo0xTdLmtdOvkrhP0k33QvbiZst6eNUz3uSnpU0fN1otu6R1BsYD1xUDDOzI8zs8k4Tqgapbw7sbDm6AuuirSUNk7QyH2ZmH+PfQrmiI+sKNnzCOAjWhhnAImBXYAvgm8CDgBosbwzwDvBTSd3bib/YzPoAA/Cd7u6QtEuDdXU2JwIvmNn8zhYk6PLcBhwiaefOFiT4/BDGQdAQkgbgRsFEM3vPnIVmNjGNRta0vN2Bg4BRwDZU2T7azFYC1+JfaPtKO2WdLum5srDBklZJGpTOJ6eZjvclvSTphCqyXSTpkbKw2ZLOz53vKelBSUskLZA0QdImVVT+PvBwpTJzU9ejknzLJc2Q1F/SpZLa0ozN6bn8zWmK+BxJi1Kaq/Jy1NJb0lclzUp6vFPUW1JLSvJQmr25oUJb9ZL0x1THW5LulrRjLn52kunOJMN8ScdVaqScTmdLWpjyXClpQCpjmaS5+VG2pB6SLpD0X0lLJf1N0p65+E0kXZ1rw3PaqfcgSY+nNpgv6ZeS6jZ6JQ2X1JJmuVokHV+uU1n6KcU2rdTWklqTXo+n8IKkfdsrIxfWKulESdsCM4HuKe8HkkYBmNky4Cng2Hr1CzZ+wjgIGsLM3gb+BdwgaaSkIWty82yHU4Hnzex+fEZiTKWE8mWL04FPgJZ2kvwF2E3S3rmwZmC2mbWm88eBvYEt8en9KZKGNCK4pIHAo8B0YDt8BuV7wG+qZBuKf3q2FsOBA/GNsQYB/wTm4xv5nAz8If/wxTfT2hFoSnIcA4zNxVfUW9I2SY9HU11bA5cCmNleKf+hZtbHzE6pIO/vgW+kYyf8s7v3qXQmaBRwFdAP39FvqqReVdpgpyRvU2qLn+MPuuKnwacDk3PpxwIjgSOTDo8BD0vqm+J/DRwN7A8MTrruVMyc2mNGKn8r4CjgDOCkKjJ+iqT9gVtTPQOAc4HbJH29nvw12vo04BfAF4C/AjNyelUr83+4wb0qldnHzKbmkryAX5NBAIRxEKwdw4DZwFn45itvSvptmZEwWNK7+QMf9X+KpM3wm3nxBn8jcIQ+6/B1Xsq/EDgOGG5mn/FdMLOlwD34w5MkzyhgUi7NjWb2tpmtMrPbgeeTPo0wEmgxs+vMbIWZvQFMSOGV6I/vA1GLi83snWSM3Q98YmZ/NrOVZjYT/27/Prn0q4GxZvZRWrK4HDeMgJp6nwTMM7MJZrY86VIyY1INSd3wdj7fzN4ws+X4tbE7sF8u6R1m9g8zWw1cjxsJX65S9EfA75I8LbhB+JSZzTGzVcAtwM6S+qX0JwOXmdncNIs1Ht8/5KgUPzLFzzOzj4BfAfnvyP8MmGZm96R2mosbMdX6M08zcKeZzUz99ABwFzC6zvzVuNHMnjazFcBleNsc3QHlLsMNjiAAwjgI1gIze8vMzjWzofjIbhxwAemhnHjVzLbMH/jNN88PgT74TR581LYEKB+dXpLKGGhm+5vZfVXEmwyckKbUD0nyTQd/iEkaL+nlNO37LrAXPkpshMHAAWUG0CR81FqJpUDNER/u01Hkw7LzYtgWufM2M/swd96Kb19dj96DgFfqkKkSWwE9gVeLAWb2AdAG7JBLtygXvzz9zOtQTlsyJIqUt0NR32IZO5TJsBpvh6IM26fzvAxtufIGAyPK+vNCfLmrHkrqT8yntA0apbX4w3xjnAWk/l1L+uL+PkEAhHEQdBBm9qGZTcFHonvXSF7Oqbj/wIuSFuMzA/2p7JhYDw8DH+PT6s3A7WmUCL6F7in4lH3/ZLC0UNmR8n2gd1nYtrnfrwGPlBlB/ZLzZCWeBRpaxqjBwLIp+kF4e0JtvVupPoKvtUvbErzNBxUDJPUBBgKv1yV9x/B6mQzd0nlRhjfK4ntTahi+Bkwq68++ZrZHI/UnmnL117qeoHJb5+UWvoRU7N+SciX1wNu+SN7AKmdP/JoMAiCMg6BB5I5xE+SOeJskJ7Dh+E3msTUoZwi+jnw8blQUj/3wkfeRjciXpptvAs7Et52dlIvuC6zEH2bdJI3GR9CVeBoYKulrSc8z8NFlkZuATNJoSZulEXqTpMOrlHk38N0116wm3YDLJG0uqQmfMi+uLdfS+xZgV7lDYy9Jm0rKy7iYKsZDGqHfBFwsadtkpFwFzAWe7CD96mEKME7SLsk/5TygB/BAir8ZGCvpS5I2x5de8vfCa4EfSzomd20PkXRwnfVPBYZLOkxSd0lH4NdgcdnsOdyIOzpdK8cD3yoro1Jbj5Y0NM2IjQV65fR6GviO3Pm2J3AJkHeKXYw7JOavXSRtgf/f7q1Tv6ALEOxn5NQAAAGqSURBVMZB0Cgr8FHJdHw6cglwPnCmmU1bg3LGAM+Y2X1mtjh3PA9Mo4pjYh1MBg7GlzbyD6epuGPfPHwUOYQqBo2ZzQauBmbh09lfBJ7IxS8Gvo2/gdCKLxnchY8WK3EzsFd6gHckr+EjyVdxHWfhDz+ooXdyWhuGO1MuxB8meWfG84Dx8jcArqtQ/9lAAfd+X4BPxR+bjLX1xRX463kPAW/iy0qHJq98cH+QB4E5eDstwNsNADN7EV/HPwvv7zbc4Khr2cnMnsB9L67Er4XLgRPNbE6Kn487FV6P/3cOB+4sK6ZSW18PXJPK/RFwlJm9l+JuxR/wz+DLGAvwfi7K9QrwJ+DJtFxSdLAcAfzdzP5Tj35B10C+bBUEwfpG0mnAAWZWlxd8HeU1486A8b76RoikVrx/b6mVdg3K7Am8iBtw/+6ocoMNnx6dLUAQdFXMbCIwsbPlCLou6W2Oan4mQRcllhWCIAiCICghlhWCIAiCICghZg6CIAiCICghjIMgCIIgCEoI4yAIgiAIghLCOAiCIAiCoIQwDoIgCIIgKCGMgyAIgiAISvg/tKgHpfLEkNsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] @@ -942,11 +945,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6456 val_loss=0.0000 scale=0.5000 norm=3.4019\n", - "[iter 100] loss=3.1001 val_loss=0.0000 scale=1.0000 norm=3.8740\n", - "[iter 200] loss=2.4532 val_loss=0.0000 scale=2.0000 norm=3.9502\n", - "[iter 300] loss=1.9924 val_loss=0.0000 scale=2.0000 norm=3.0596\n", - "[iter 400] loss=1.7893 val_loss=0.0000 scale=1.0000 norm=1.3624\n" + "[iter 0] loss=3.6437 val_loss=0.0000 scale=0.5000 norm=3.3634\n", + "[iter 100] loss=3.0772 val_loss=0.0000 scale=1.0000 norm=3.7436\n", + "[iter 200] loss=2.4212 val_loss=0.0000 scale=2.0000 norm=3.9115\n", + "[iter 300] loss=1.9987 val_loss=0.0000 scale=2.0000 norm=3.0907\n", + "[iter 400] loss=1.8054 val_loss=0.0000 scale=1.0000 norm=1.3951\n" ] } ], @@ -984,8 +987,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Test MSE 4.936884111475998\n", - "Test NLL 2.2596615579233683\n" + "Test MSE 4.390683115249617\n", + "Test NLL 2.067375393986923\n" ] } ], From bb2afe27083e137ec36a6fed545a2aaa6299e679 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Fri, 14 Feb 2020 15:07:22 -0800 Subject: [PATCH 005/245] readme style edit --- README.md | 2 +- examples/vignette.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b6aa35ab..5e7945e5 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,6 @@ test_NLL = -Y_dists.logpdf(Y_test).mean() print('Test NLL', test_NLL) ``` -More information about available distributions, scoring rules, learners, how to tune NGBoost models, and model interpretation is available in our [vignette](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/vignette.ipynb). Please see our [developer guide](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/dev_vignette.ipynb) for more information on how to add new distributions or scores to NGBoost. +More information about available distributions, scoring rules, learners, tuning, and model interpretation is available in our [vignette](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/vignette.ipynb). Please see our [developer guide](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/dev_vignette.ipynb) for more information on how to add new distributions or scores to NGBoost. A [slide deck](https://drive.google.com/file/d/183BWFAdFms81MKy6hSku8qI97OwS_JH_/view?usp=sharing) with an accessible presentation of how NGBoost works is also available. diff --git a/examples/vignette.ipynb b/examples/vignette.ipynb index 60600815..4f8b9514 100644 --- a/examples/vignette.ipynb +++ b/examples/vignette.ipynb @@ -926,7 +926,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Saving Models" + "## Saving Models" ] }, { From f28b2eae7a294c539b1d8ef9352f0ea57bf7d122 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Mon, 17 Feb 2020 12:22:56 +0900 Subject: [PATCH 006/245] add arXiv link --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 5e7945e5..6579b3a8 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,8 @@ print('Test NLL', test_NLL) More information about available distributions, scoring rules, learners, tuning, and model interpretation is available in our [vignette](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/vignette.ipynb). Please see our [developer guide](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/dev_vignette.ipynb) for more information on how to add new distributions or scores to NGBoost. A [slide deck](https://drive.google.com/file/d/183BWFAdFms81MKy6hSku8qI97OwS_JH_/view?usp=sharing) with an accessible presentation of how NGBoost works is also available. + +## Reference +Tony Duan, Anand Avati, Daisy Yi Ding, Khanh K. Thai, Sanjay Basu, Andrew Y. Ng, Alejandro Schuler. 2019. +NGBoost: Natural Gradient Boosting for Probabilistic Prediction. +[arXiv](https://arxiv.org/abs/1910.03225) \ No newline at end of file From feec7ddc030f34b13808c1224ad7a11df6c3fcf0 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Mon, 17 Feb 2020 12:23:18 +0900 Subject: [PATCH 007/245] add License link --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 6579b3a8..251d7ae2 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,9 @@ More information about available distributions, scoring rules, learners, tuning, A [slide deck](https://drive.google.com/file/d/183BWFAdFms81MKy6hSku8qI97OwS_JH_/view?usp=sharing) with an accessible presentation of how NGBoost works is also available. +## License +Apache License 2.0 (see [LICENSE](https://github.com/stanfordmlgroup/ngboost/blob/master/LICENSE)). + ## Reference Tony Duan, Anand Avati, Daisy Yi Ding, Khanh K. Thai, Sanjay Basu, Andrew Y. Ng, Alejandro Schuler. 2019. NGBoost: Natural Gradient Boosting for Probabilistic Prediction. From 173f7c428ac621cbe315fdcfffd1658afa11d1c1 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Mon, 17 Feb 2020 12:24:37 +0900 Subject: [PATCH 008/245] update markdown header2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 251d7ae2..1f761fc7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ngboost is a Python library that implements Natural Gradient Boosting, as described in ["NGBoost: Natural Gradient Boosting for Probabilistic Prediction"](https://stanfordmlgroup.github.io/projects/ngboost/). It is built on top of [Scikit-Learn](https://scikit-learn.org/stable/), and is designed to be scalable and modular with respect to choice of proper scoring rule, distribution, and base learners. -Installation: +## Installation ``` pip install --upgrade git+https://github.com/stanfordmlgroup/ngboost.git From 6c1808a446f242c9ae7c155a461fc3fbc05dd283 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Mon, 17 Feb 2020 12:30:04 +0900 Subject: [PATCH 009/245] add license badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1f761fc7..8d5e2f2f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ ![Python package](https://github.com/stanfordmlgroup/ngboost/workflows/Python%20package/badge.svg) +[![Github License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) # NGBoost: Natural Gradient Boosting for Probabilistic Prediction From e0c7e9967a3e0caba18235ad0d849174cf9d6470 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Sun, 16 Feb 2020 21:10:24 -0800 Subject: [PATCH 010/245] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8d5e2f2f..0a3a6f97 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # NGBoost: Natural Gradient Boosting for Probabilistic Prediction -ngboost is a Python library that implements Natural Gradient Boosting, as described in ["NGBoost: Natural Gradient Boosting for Probabilistic Prediction"](https://stanfordmlgroup.github.io/projects/ngboost/). It is built on top of [Scikit-Learn](https://scikit-learn.org/stable/), and is designed to be scalable and modular with respect to choice of proper scoring rule, distribution, and base learners. +ngboost is a Python library that implements Natural Gradient Boosting, as described in ["NGBoost: Natural Gradient Boosting for Probabilistic Prediction"](https://stanfordmlgroup.github.io/projects/ngboost/). It is built on top of [Scikit-Learn](https://scikit-learn.org/stable/), and is designed to be scalable and modular with respect to choice of proper scoring rule, distribution, and base learner. A didactic introduction to the methodology underlying NGBoost is available in this [slide deck](https://drive.google.com/file/d/183BWFAdFms81MKy6hSku8qI97OwS_JH_/view?usp=sharing). ## Installation @@ -11,6 +11,8 @@ ngboost is a Python library that implements Natural Gradient Boosting, as descri pip install --upgrade git+https://github.com/stanfordmlgroup/ngboost.git ``` + +## Usage Probabilistic regression example on the Boston housing dataset: @@ -37,9 +39,7 @@ test_NLL = -Y_dists.logpdf(Y_test).mean() print('Test NLL', test_NLL) ``` -More information about available distributions, scoring rules, learners, tuning, and model interpretation is available in our [vignette](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/vignette.ipynb). Please see our [developer guide](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/dev_vignette.ipynb) for more information on how to add new distributions or scores to NGBoost. - -A [slide deck](https://drive.google.com/file/d/183BWFAdFms81MKy6hSku8qI97OwS_JH_/view?usp=sharing) with an accessible presentation of how NGBoost works is also available. +Details on available distributions, scoring rules, learners, tuning, and model interpretation are available in our [vignette](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/vignette.ipynb), which also includes numerous usage examples. Please see our [developer guide](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/dev_vignette.ipynb) for more information on how to add new distributions or scores to NGBoost. ## License Apache License 2.0 (see [LICENSE](https://github.com/stanfordmlgroup/ngboost/blob/master/LICENSE)). From 4bfd838217bba56df8cc98765e89c49ae714efe5 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 12:49:06 +0900 Subject: [PATCH 011/245] init --- .pre-commit-config.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..68b1ae9c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,10 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.4.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-added-large-files From cffd26bf7a3817a8486c2e3bc3011f16c77e0dc2 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:33:23 +0900 Subject: [PATCH 012/245] add black --- .pre-commit-config.yaml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 68b1ae9c..99ca2dde 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,10 +1,7 @@ # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.4.0 + - repo: https://github.com/psf/black + rev: stable hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: check-yaml - - id: check-added-large-files + - id: black From f5189d212b9e589384fd482ad27d0d890bca00d5 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:34:11 +0900 Subject: [PATCH 013/245] apply black --- ngboost/api.py | 221 +++++++++++++-------- ngboost/distns/categorical.py | 42 ++-- ngboost/distns/distn.py | 55 +++--- ngboost/distns/exponential.py | 32 ++-- ngboost/distns/lognormal.py | 75 ++++---- ngboost/distns/multivariate_normal.py | 264 ++++++++++++++++---------- ngboost/distns/normal.py | 41 ++-- ngboost/evaluation.py | 53 ++++-- ngboost/helpers.py | 21 +- ngboost/learners.py | 18 +- ngboost/manifold.py | 11 +- ngboost/ngboost.py | 232 ++++++++++++++-------- ngboost/scores.py | 23 ++- ngboost/tests/test_basic.py | 18 +- ngboost/tests/test_distns.py | 214 +++++++++++---------- setup.py | 6 +- 16 files changed, 808 insertions(+), 518 deletions(-) diff --git a/ngboost/api.py b/ngboost/api.py index d6b03bd4..8791f16c 100644 --- a/ngboost/api.py +++ b/ngboost/api.py @@ -7,8 +7,9 @@ from ngboost.helpers import Y_from_censored from sklearn.base import BaseEstimator + class NGBRegressor(NGBoost, BaseEstimator): - ''' + """ Constructor for NGBoost regression models. NGBRegressor is a wrapper for the generic NGBoost class that facilitates regression. Use this class if you want to predict an outcome that could take an infinite number of (ordered) values. @@ -28,29 +29,36 @@ class NGBRegressor(NGBoost, BaseEstimator): random_state : seed for reproducibility. See https://stackoverflow.com/questions/28064634/random-state-pseudo-random-number-in-scikit-learn Output: An NGBRegressor object that can be fit. - ''' - - def __init__(self, - Dist=Normal, - Score=LogScore, - Base=default_tree_learner, - natural_gradient=True, - n_estimators=500, - learning_rate=0.01, - minibatch_frac=1.0, - col_sample=1.0, - verbose=True, - verbose_eval=100, - tol=1e-4, - random_state=None): - assert issubclass(Dist, RegressionDistn), f'{Dist.__name__} is not useable for regression.' - - if not hasattr(Dist, 'scores'): # user is trying to use a dist that only has censored scores implemented + """ + + def __init__( + self, + Dist=Normal, + Score=LogScore, + Base=default_tree_learner, + natural_gradient=True, + n_estimators=500, + learning_rate=0.01, + minibatch_frac=1.0, + col_sample=1.0, + verbose=True, + verbose_eval=100, + tol=1e-4, + random_state=None, + ): + assert issubclass( + Dist, RegressionDistn + ), f"{Dist.__name__} is not useable for regression." + + if not hasattr( + Dist, "scores" + ): # user is trying to use a dist that only has censored scores implemented DistScore = Dist.implementation(Score, Dist.censored_scores) class UncensoredScore(DistScore, DistScore.__base__): def score(self, Y): return super().score(Y_from_censored(Y)) + def d_score(self, Y): return super().d_score(Y_from_censored(Y)) @@ -59,11 +67,24 @@ class DistWithUncensoredScore(Dist): Dist = DistWithUncensoredScore - super().__init__(Dist, Score, Base, natural_gradient, n_estimators, learning_rate, - minibatch_frac,col_sample, verbose, verbose_eval, tol, random_state) + super().__init__( + Dist, + Score, + Base, + natural_gradient, + n_estimators, + learning_rate, + minibatch_frac, + col_sample, + verbose, + verbose_eval, + tol, + random_state, + ) + class NGBClassifier(NGBoost, BaseEstimator): - ''' + """ Constructor for NGBoost classification models. NGBRegressor is a wrapper for the generic NGBoost class that facilitates classification. Use this class if you want to predict an outcome that could take a discrete number of (unordered) values. @@ -83,26 +104,43 @@ class NGBClassifier(NGBoost, BaseEstimator): random_state : seed for reproducibility. See https://stackoverflow.com/questions/28064634/random-state-pseudo-random-number-in-scikit-learn Output: An NGBRegressor object that can be fit. - ''' - def __init__(self, - Dist=Bernoulli, - Score=LogScore, - Base=default_tree_learner, - natural_gradient=True, - n_estimators=500, - learning_rate=0.01, - minibatch_frac=1.0, - col_sample=1.0, - verbose=True, - verbose_eval=100, - tol=1e-4, - random_state=None): - assert issubclass(Dist, ClassificationDistn), f'{Dist.__name__} is not useable for classification.' - super().__init__(Dist, Score, Base, natural_gradient, n_estimators, learning_rate, - minibatch_frac, col_sample, verbose, verbose_eval, tol, random_state) + """ + + def __init__( + self, + Dist=Bernoulli, + Score=LogScore, + Base=default_tree_learner, + natural_gradient=True, + n_estimators=500, + learning_rate=0.01, + minibatch_frac=1.0, + col_sample=1.0, + verbose=True, + verbose_eval=100, + tol=1e-4, + random_state=None, + ): + assert issubclass( + Dist, ClassificationDistn + ), f"{Dist.__name__} is not useable for classification." + super().__init__( + Dist, + Score, + Base, + natural_gradient, + n_estimators, + learning_rate, + minibatch_frac, + col_sample, + verbose, + verbose_eval, + tol, + random_state, + ) def predict_proba(self, X, max_iter=None): - ''' + """ Probability prediction of Y at the points X=x Parameters: @@ -111,11 +149,11 @@ def predict_proba(self, X, max_iter=None): Output: Numpy array of the estimates of P(Y=k|X=x). Will have shape (n, K) - ''' + """ return self.pred_dist(X, max_iter=max_iter).class_probs() def staged_predict_proba(self, X, max_iter=None): - ''' + """ Probability prediction of Y at the points X=x at multiple boosting iterations Parameters: @@ -124,11 +162,14 @@ def staged_predict_proba(self, X, max_iter=None): Output: A list of of the estimates of P(Y=k|X=x) of shape (n, K), one per boosting stage up to max_iter - ''' - return [dist.class_probs() for dist in self.staged_pred_dist(X, max_iter=max_iter)] + """ + return [ + dist.class_probs() for dist in self.staged_pred_dist(X, max_iter=max_iter) + ] + class NGBSurvival(NGBoost, BaseEstimator): - ''' + """ Constructor for NGBoost survival models. NGBRegressor is a wrapper for the generic NGBoost class that facilitates survival analysis. Use this class if you want to predict an outcome that could take an infinite number of (ordered) values, but right-censoring is present in the observed data. @@ -148,38 +189,60 @@ class NGBSurvival(NGBoost, BaseEstimator): random_state : seed for reproducibility. See https://stackoverflow.com/questions/28064634/random-state-pseudo-random-number-in-scikit-learn Output: An NGBRegressor object that can be fit. - ''' - def __init__(self, - Dist=LogNormal, - Score=LogScore, - Base=default_tree_learner, - natural_gradient=True, - n_estimators=500, - learning_rate=0.01, - minibatch_frac=1.0, - col_sample = 1.0, - verbose=True, - verbose_eval=100, - tol=1e-4, - random_state=None): - - assert issubclass(Dist, RegressionDistn), f'{Dist.__name__} is not useable for regression.' - if not hasattr(Dist,'censored_scores'): - raise ValueError(f'The {Dist.__name__} distribution does not have any censored scores implemented.') - - class SurvivalDistn(Dist): # Creates a new dist class from a given dist. The new class has its implemented scores - scores = Dist.censored_scores # set to the censored versions of the scores implemented for dist - def fit(Y): # and expects a {time, event} array as Y. + """ + + def __init__( + self, + Dist=LogNormal, + Score=LogScore, + Base=default_tree_learner, + natural_gradient=True, + n_estimators=500, + learning_rate=0.01, + minibatch_frac=1.0, + col_sample=1.0, + verbose=True, + verbose_eval=100, + tol=1e-4, + random_state=None, + ): + + assert issubclass( + Dist, RegressionDistn + ), f"{Dist.__name__} is not useable for regression." + if not hasattr(Dist, "censored_scores"): + raise ValueError( + f"The {Dist.__name__} distribution does not have any censored scores implemented." + ) + + class SurvivalDistn( + Dist + ): # Creates a new dist class from a given dist. The new class has its implemented scores + scores = ( + Dist.censored_scores + ) # set to the censored versions of the scores implemented for dist + + def fit(Y): # and expects a {time, event} array as Y. return Dist.fit(Y["Time"]) # assert issubclass(Dist, RegressionDistn), f'{Dist.__name__} is not useable for survival.' - super().__init__(SurvivalDistn, Score, Base, natural_gradient, n_estimators, learning_rate, - minibatch_frac, col_sample, verbose, verbose_eval, tol, random_state) + super().__init__( + SurvivalDistn, + Score, + Base, + natural_gradient, + n_estimators, + learning_rate, + minibatch_frac, + col_sample, + verbose, + verbose_eval, + tol, + random_state, + ) - def fit(self, X, T, E, - X_val = None, T_val = None, E_val = None, - **kwargs): - ''' + def fit(self, X, T, E, X_val=None, T_val=None, E_val=None, **kwargs): + """ Fits an NGBoost survival model to the data. For additional parameters see ngboost.NGboost.fit Parameters: @@ -188,7 +251,11 @@ def fit(self, X, T, E, E : numpy array of event indicators (n). E[i] = 1 <=> T[i] is the time of an event, else censoring time T_val : validation-set times, if any E_val : validation-set event idicators, if any - ''' - return super().fit(X, Y_from_censored(T, E), - X_val = X_val, Y_val = Y_from_censored(T_val, E_val), - **kwargs) + """ + return super().fit( + X, + Y_from_censored(T, E), + X_val=X_val, + Y_val=Y_from_censored(T_val, E_val), + **kwargs, + ) diff --git a/ngboost/distns/categorical.py b/ngboost/distns/categorical.py index c3cc2fea..edc2fba6 100644 --- a/ngboost/distns/categorical.py +++ b/ngboost/distns/categorical.py @@ -4,18 +4,22 @@ import scipy as sp import scipy.special + class CategoricalLogScore(LogScore): def score(self, Y): return -np.log(self.probs[Y, range(len(Y))]) def d_score(self, Y): - return (self.probs.T - np.eye(self.K_)[Y])[:,1:self.K_] + return (self.probs.T - np.eye(self.K_)[Y])[:, 1 : self.K_] def metric(self): - FI = -np.einsum('ji,ki->ijk', self.probs[1:self.K_,:], self.probs[1:self.K_,:]) - d = np.einsum('jii->ij', FI) - d[:] += self.probs[1:self.K_,:] + FI = -np.einsum( + "ji,ki->ijk", self.probs[1 : self.K_, :], self.probs[1 : self.K_, :] + ) + d = np.einsum("jii->ij", FI) + d[:] += self.probs[1 : self.K_, :] return FI + # a test: # if k==j: # a= FI[i,j,k] == self.probs[k,i] - self.probs[k,i]*self.probs[j,i] @@ -23,9 +27,10 @@ def metric(self): # a= FI[i,j,k] == -self.probs[k,i]*self.probs[j,i] # a + class CategoricalCRPScore(CRPScore): def score(self, Y): - return np.sum((self.probs - np.eye(self.K_)[Y])**2, axis=1) + return np.sum((self.probs - np.eye(self.K_)[Y]) ** 2, axis=1) def d_score(self, Y): return None @@ -33,51 +38,54 @@ def d_score(self, Y): def metric(self): return None + def k_categorical(K): - ''' + """ Factory function that generates classes for K-class categorical distributions for NGBoost The generated distribution has two parameters, loc and scale, which are the mean and standard deviation, respectively. This distribution has both LogScore and CRPScore implemented for it. - ''' + """ class Categorical(ClassificationDistn): scores = [CategoricalLogScore] problem_type = "classification" - n_params = K-1 + n_params = K - 1 K_ = K def __init__(self, params): super().__init__(params) _, N = params.shape self.logits = np.zeros((K, N)) - self.logits[1:K,:] = params # default the 0th class logits to 0 + self.logits[1:K, :] = params # default the 0th class logits to 0 self.probs = sp.special.softmax(self.logits, axis=0) # self.dist = dist(n=1, p=self.probs) # scipy doesn't allow vectorized multinomial (!?!?) why allow vectorized versions of the others? # this makes me want to refactor all the other code to use lists of distributions, would be more readable imo def fit(Y): _, n = np.unique(Y, return_counts=True) - p = n/len(Y) + p = n / len(Y) return np.log(p[1:K]) - np.log(p[0]) # https://math.stackexchange.com/questions/2786600/invert-the-softmax-function - def sample1(self): # this is just a helper for sample() + def sample1(self): # this is just a helper for sample() cum_p = np.cumsum(self.probs, axis=0)[0:-1] - interval = cum_p < np.random.random((1,len(self))) + interval = cum_p < np.random.random((1, len(self))) return np.sum(interval, axis=0) + def sample(self, m): return np.array([self.sample1() for i in range(m)]) - - def class_probs(self): # required for any ClassificationDistn + + def class_probs(self): # required for any ClassificationDistn return self.probs.T - + @property def params(self): - names = [f'p{j}' for j in range(self.n_params+1)] - return {name:p for name, p in zip(names, self.probs)} + names = [f"p{j}" for j in range(self.n_params + 1)] + return {name: p for name, p in zip(names, self.probs)} return Categorical + Bernoulli = k_categorical(2) diff --git a/ngboost/distns/distn.py b/ngboost/distns/distn.py index 7cc41fd0..7e8df00f 100644 --- a/ngboost/distns/distn.py +++ b/ngboost/distns/distn.py @@ -1,8 +1,9 @@ import numpy as np from warnings import warn + class Distn(object): - """ + """ User should define: - __init__(params) to hold self.params_ = params - X_scoring(self, Y) @@ -12,36 +13,42 @@ class Distn(object): - predict(self) mean, mode, whatever (method to call for point prediction """ - def __init__(self, params): - self._params = params + def __init__(self, params): + self._params = params - def __getitem__(self, key): - return self.__class__(self._params[:,key]) + def __getitem__(self, key): + return self.__class__(self._params[:, key]) - def __len__(self): - return self._params.shape[1] + def __len__(self): + return self._params.shape[1] - @classmethod - def implementation(cls, Score, scores=None): - """ + @classmethod + def implementation(cls, Score, scores=None): + """ Finds the distribution-appropriate implementation of Score (using the provided scores if cls.scores is empty) """ - if scores is None: - scores = cls.scores - if Score in scores: - warn(f'Using Dist={Score.__name__} is unnecessary. NGBoost automatically selects the correct implementation when LogScore or CRPScore is used') - return Score - else: - try: - return {S.__bases__[-1]:S for S in scores}[Score] - except KeyError as err: - raise ValueError(f'The scoring rule {Score.__name__} is not implemented for the {cls.__name__} distribution.') from err + if scores is None: + scores = cls.scores + if Score in scores: + warn( + f"Using Dist={Score.__name__} is unnecessary. NGBoost automatically selects the correct implementation when LogScore or CRPScore is used" + ) + return Score + else: + try: + return {S.__bases__[-1]: S for S in scores}[Score] + except KeyError as err: + raise ValueError( + f"The scoring rule {Score.__name__} is not implemented for the {cls.__name__} distribution." + ) from err + class RegressionDistn(Distn): - def predict(self): # predictions for regression are typically conditional means - return self.mean() + def predict(self): # predictions for regression are typically conditional means + return self.mean() + class ClassificationDistn(Distn): - def predict(self): # returns class assignments - return np.argmax(self.class_probs(), 1) + def predict(self): # returns class assignments + return np.argmax(self.class_probs(), 1) diff --git a/ngboost/distns/exponential.py b/ngboost/distns/exponential.py index 2d3352ed..0d4926ae 100644 --- a/ngboost/distns/exponential.py +++ b/ngboost/distns/exponential.py @@ -8,16 +8,15 @@ class ExponentialLogScore(LogScore): - def score(self, Y): E, T = Y["Event"], Y["Time"] - cens = (1-E) * np.log(1 - self.dist.cdf(T) + eps) + cens = (1 - E) * np.log(1 - self.dist.cdf(T) + eps) uncens = E * self.dist.logpdf(T) return -(cens + uncens) - + def d_score(self, Y): E, T = Y["Event"], Y["Time"] - cens = (1-E) * T.squeeze() / self.scale + cens = (1 - E) * T.squeeze() / self.scale uncens = E * (-1 + T.squeeze() / self.scale) return -(cens + uncens).reshape((-1, 1)) @@ -25,32 +24,36 @@ def metric(self): FI = np.ones_like(self.scale) return FI[:, np.newaxis, np.newaxis] + class ExponentialCRPScore(CRPScore): - def score(self, Y): E, T = Y["Event"], Y["Time"] score = T + self.scale * (2 * np.exp(-T / self.scale) - 1.5) - score[E == 1] -= 0.5 * self.scale[E == 1] * np.exp(-2 * T[E == 1] / self.scale[E == 1]) + score[E == 1] -= ( + 0.5 * self.scale[E == 1] * np.exp(-2 * T[E == 1] / self.scale[E == 1]) + ) return score def d_score(self, Y): E, T = Y["Event"], Y["Time"] deriv = 2 * np.exp(-T / self.scale) * (self.scale + T) - 1.5 * self.scale - deriv[E == 1] -= np.exp(-2 * T[E == 1] / self.scale[E == 1]) * \ - (0.5 * self.scale[E == 1] - T[E == 1]) + deriv[E == 1] -= np.exp(-2 * T[E == 1] / self.scale[E == 1]) * ( + 0.5 * self.scale[E == 1] - T[E == 1] + ) return deriv.reshape((-1, 1)) def metric(self): M = 0.5 * self.scale[:, np.newaxis, np.newaxis] return M + class Exponential(RegressionDistn): - ''' + """ Implements the exponential distribution for NGBoost. The exponential distribution has one parameters, scale. See scipy.stats.expon for details. This distribution has both LogScore and CRPScore implemented for it and both work with right-censored data - ''' + """ n_params = 1 censored_scores = [ExponentialLogScore, ExponentialCRPScore] @@ -59,19 +62,18 @@ def __init__(self, params): self._params = params self.scale = np.exp(params[0]) self.dist = dist(scale=self.scale) - - def __getattr__(self, name): + + def __getattr__(self, name): if name in dir(self.dist): return getattr(self.dist, name) return None - + # should implement a `sample()` method @property def params(self): - return {'scale':self.scale} + return {"scale": self.scale} def fit(Y): m, s = sp.stats.expon.fit(Y) return np.array([np.log(m + s)]) - diff --git a/ngboost/distns/lognormal.py b/ngboost/distns/lognormal.py index 4e6ae10a..780bba0b 100644 --- a/ngboost/distns/lognormal.py +++ b/ngboost/distns/lognormal.py @@ -4,18 +4,18 @@ from ngboost.distns import RegressionDistn from ngboost.scores import LogScore, CRPScore -class LogNormalLogScoreCensored(LogScore): +class LogNormalLogScoreCensored(LogScore): def score(self, Y): - E = Y['Event'] - T = Y['Time'] - cens = (1-E) * np.log(1 - self.dist.cdf(T) + self.eps) + E = Y["Event"] + T = Y["Time"] + cens = (1 - E) * np.log(1 - self.dist.cdf(T) + self.eps) uncens = E * self.dist.logpdf(T) return -(cens + uncens) def d_score(self, Y): - E = Y['Event'][:,np.newaxis] - T = Y['Time'] + E = Y["Event"][:, np.newaxis] + T = Y["Time"] lT = np.log(T) Z = (lT - self.loc) / self.scale @@ -24,33 +24,42 @@ def d_score(self, Y): D_uncens[:, 1] = 1 - ((self.loc - lT) ** 2) / (self.scale ** 2) D_cens = np.zeros((self.loc.shape[0], 2)) - D_cens[:, 0] = -sp.stats.norm.pdf(lT, loc=self.loc, scale=self.scale) / \ - (1 - self.dist.cdf(T) + self.eps) - D_cens[:, 1] = -Z * sp.stats.norm.pdf(lT, loc=self.loc, scale=self.scale) / \ - (1 - self.dist.cdf(T) + self.eps) + D_cens[:, 0] = -sp.stats.norm.pdf(lT, loc=self.loc, scale=self.scale) / ( + 1 - self.dist.cdf(T) + self.eps + ) + D_cens[:, 1] = ( + -Z + * sp.stats.norm.pdf(lT, loc=self.loc, scale=self.scale) + / (1 - self.dist.cdf(T) + self.eps) + ) - return (1-E) * D_cens + E * D_uncens + return (1 - E) * D_cens + E * D_uncens def metric(self): FI = np.zeros((self.loc.shape[0], 2, 2)) - FI[:, 0, 0] = 1/(self.scale ** 2) + self.eps + FI[:, 0, 0] = 1 / (self.scale ** 2) + self.eps FI[:, 1, 1] = 2 return FI -class LogNormalCRPScoreCensored(CRPScore): +class LogNormalCRPScoreCensored(CRPScore): def score(self, Y): E = Y["Event"] T = Y["Time"] lT = np.log(T) Z = (lT - self.loc) / self.scale - crps_uncens = (self.scale * (Z * (2 * sp.stats.norm.cdf(Z) - 1) + \ - 2 * sp.stats.norm.pdf(Z) - 1 / np.sqrt(np.pi))) - crps_cens = self.scale * (Z * sp.stats.norm.cdf(Z) ** 2 + \ - 2 * sp.stats.norm.cdf(Z) * sp.stats.norm.pdf(Z) - \ - sp.stats.norm.cdf(np.sqrt(2) * Z) / np.sqrt(np.pi)) - return (1-E) * crps_cens + E * crps_uncens + crps_uncens = self.scale * ( + Z * (2 * sp.stats.norm.cdf(Z) - 1) + + 2 * sp.stats.norm.pdf(Z) + - 1 / np.sqrt(np.pi) + ) + crps_cens = self.scale * ( + Z * sp.stats.norm.cdf(Z) ** 2 + + 2 * sp.stats.norm.cdf(Z) * sp.stats.norm.pdf(Z) + - sp.stats.norm.cdf(np.sqrt(2) * Z) / np.sqrt(np.pi) + ) + return (1 - E) * crps_cens + E * crps_uncens def d_score(self, Y): E = Y["Event"] @@ -59,12 +68,13 @@ def d_score(self, Y): Z = (lT - self.loc) / self.scale D = np.zeros((self.loc.shape[0], 2)) - D[:, 0] = E * -(2 * sp.stats.norm.cdf(Z) - 1) + \ - (1-E) * -(sp.stats.norm.cdf(Z) ** 2 + \ - 2 * Z * sp.stats.norm.cdf(Z) * sp.stats.norm.pdf(Z) + \ - 2 * sp.stats.norm.pdf(Z) ** 2 - \ - 2 * sp.stats.norm.cdf(Z) * sp.stats.norm.pdf(Z) ** 2 - \ - np.sqrt(2/np.pi) * sp.stats.norm.pdf(np.sqrt(2) * Z)) + D[:, 0] = E * -(2 * sp.stats.norm.cdf(Z) - 1) + (1 - E) * -( + sp.stats.norm.cdf(Z) ** 2 + + 2 * Z * sp.stats.norm.cdf(Z) * sp.stats.norm.pdf(Z) + + 2 * sp.stats.norm.pdf(Z) ** 2 + - 2 * sp.stats.norm.cdf(Z) * sp.stats.norm.pdf(Z) ** 2 + - np.sqrt(2 / np.pi) * sp.stats.norm.pdf(np.sqrt(2) * Z) + ) D[:, 1] = self.score(Y) + (lT - self.loc) * D[:, 0] return D @@ -72,17 +82,18 @@ def metric(self): I = np.zeros((self.loc.shape[0], 2, 2)) I[:, 0, 0] = 2 I[:, 1, 1] = self.scale ** 2 - I /= (2 * np.sqrt(np.pi)) + I /= 2 * np.sqrt(np.pi) return I + class LogNormal(RegressionDistn): - ''' + """ Implements the log-normal distribution for NGBoost. The normal distribution has two parameters, s and scale (see scipy.stats.lognorm) This distribution has both LogScore and CRPScore implemented for it and both work for right-censored data. - ''' + """ n_params = 2 censored_scores = [LogNormalLogScoreCensored, LogNormalCRPScoreCensored] @@ -93,17 +104,17 @@ def __init__(self, params): self.scale = np.exp(params[1]) self.dist = dist(s=self.scale, scale=np.exp(self.loc)) self.eps = 1e-5 - - def __getattr__(self, name): + + def __getattr__(self, name): if name in dir(self.dist): return getattr(self.dist, name) return None # should implmenent a `sample()` method - + @property def params(self): - return {'s':self.scale, 'scale':np.exp(self.loc)} + return {"s": self.scale, "scale": np.exp(self.loc)} def fit(Y): m, s = sp.stats.norm.fit(np.log(Y)) diff --git a/ngboost/distns/multivariate_normal.py b/ngboost/distns/multivariate_normal.py index 72c3435e..b90a1be0 100644 --- a/ngboost/distns/multivariate_normal.py +++ b/ngboost/distns/multivariate_normal.py @@ -6,186 +6,248 @@ eps = 1e-6 + class MultivariateNormal(object): # TODO: make n_params general n_params = 5 - def __init__(self, params, temp_scale = 1.0): + def __init__(self, params, temp_scale=1.0): self.n_params, self.N = params.shape - self.p = int(0.5 * (np.sqrt(8 * self.n_params + 9)- 3)) + self.p = int(0.5 * (np.sqrt(8 * self.n_params + 9) - 3)) - self.loc = params[:self.p, :].T + self.loc = params[: self.p, :].T self.L = np.zeros((self.p, self.p, self.N)) - self.L[np.tril_indices(self.p)] = params[self.p:, :] + self.L[np.tril_indices(self.p)] = params[self.p :, :] self.L = np.transpose(self.L, (2, 0, 1)) self.cov = self.L @ np.transpose(self.L, (0, 2, 1)) self.cov_inv = np.linalg.inv(self.cov) self.dCovdL = self.D_cov_D_L() def mean(self): - return np.exp(self.loc[:,0]) + return np.exp(self.loc[:, 0]) def D_cov_D_L(self): # create commutation matrix - commutation = np.zeros((self.p**2, self.p**2)) - ind = np.arange(self.p**2).reshape(self.p, self.p).T.flatten() - commutation[np.arange(self.p**2), ind] = 1. + commutation = np.zeros((self.p ** 2, self.p ** 2)) + ind = np.arange(self.p ** 2).reshape(self.p, self.p).T.flatten() + commutation[np.arange(self.p ** 2), ind] = 1.0 # compute Jacobian - dCovdL = (np.identity(self.p**2) + commutation) @\ - np.kron(self.L, np.identity(self.p)) - dCovdL = dCovdL.reshape(-1,2,2,2,2).swapaxes(-2,-1) + dCovdL = (np.identity(self.p ** 2) + commutation) @ np.kron( + self.L, np.identity(self.p) + ) + dCovdL = dCovdL.reshape(-1, 2, 2, 2, 2).swapaxes(-2, -1) return dCovdL def nll(self, Y): try: - E = Y['Event'] - T = np.log(Y['Time'] + eps) - - mu0_given_1, mu1_given_0, var0_given_1, var1_given_0 = self.conditional_dist(T) - - cens = (1-E) * (dist.logpdf(T, loc=self.loc[:,1], scale=self.cov[:,1,1]**0.5) + \ - np.log(eps + 1 - dist.cdf(T, loc=mu0_given_1, scale=var0_given_1**0.5))) - uncens = E * (dist.logpdf(T, loc=self.loc[:,0], scale=self.cov[:,0,0]**0.5) + \ - np.log(eps + 1 - dist.cdf(T, loc=mu1_given_0, scale=var1_given_0**0.5))) + E = Y["Event"] + T = np.log(Y["Time"] + eps) + + ( + mu0_given_1, + mu1_given_0, + var0_given_1, + var1_given_0, + ) = self.conditional_dist(T) + + cens = (1 - E) * ( + dist.logpdf(T, loc=self.loc[:, 1], scale=self.cov[:, 1, 1] ** 0.5) + + np.log( + eps + 1 - dist.cdf(T, loc=mu0_given_1, scale=var0_given_1 ** 0.5) + ) + ) + uncens = E * ( + dist.logpdf(T, loc=self.loc[:, 0], scale=self.cov[:, 0, 0] ** 0.5) + + np.log( + eps + 1 - dist.cdf(T, loc=mu1_given_0, scale=var1_given_0 ** 0.5) + ) + ) return -(cens + uncens) except: diff = Y - self.loc - M = diff[:,None,:] @ self.cov_inv @ diff[:,:,None] + M = diff[:, None, :] @ self.cov_inv @ diff[:, :, None] half_log_det = np.log(eps + np.diagonal(self.L, axis1=1, axis2=2)).sum(-1) - const = self.p / 2 * np.log(eps + 2*np.pi) - logpdf = - const - half_log_det - 0.5 * M.flatten() + const = self.p / 2 * np.log(eps + 2 * np.pi) + logpdf = -const - half_log_det - 0.5 * M.flatten() return -logpdf def D_nll(self, Y_): try: - E = Y_['Event'] - T = np.log(Y_['Time'] + eps) - - mu0_given_1, mu1_given_0, var0_given_1, var1_given_0 = self.conditional_dist(T) - mu0 = self.loc[:,0] - mu1 = self.loc[:,1] - var0 = self.cov[:,0,0] - var1 = self.cov[:,1,1] - cov = self.cov[:,0,1] - + E = Y_["Event"] + T = np.log(Y_["Time"] + eps) + + ( + mu0_given_1, + mu1_given_0, + var0_given_1, + var1_given_0, + ) = self.conditional_dist(T) + mu0 = self.loc[:, 0] + mu1 = self.loc[:, 1] + var0 = self.cov[:, 0, 0] + var1 = self.cov[:, 1, 1] + cov = self.cov[:, 0, 1] + # reshape Jacobian tril_indices = np.tril_indices(self.p) - J = self.dCovdL[:,:,:,tril_indices[0],tril_indices[1]] - J = np.transpose(J, (0,3,1,2)).reshape(self.N, -1, self.p**2) - J = J.swapaxes(-2,-1) + J = self.dCovdL[:, :, :, tril_indices[0], tril_indices[1]] + J = np.transpose(J, (0, 3, 1, 2)).reshape(self.N, -1, self.p ** 2) + J = J.swapaxes(-2, -1) # compute grad mu D = np.zeros((self.N, self.n_params)) diff0 = T - mu0 diff1 = T - mu1 - Z0 = diff0 / (var0**0.5 + eps) - Z1 = diff1 / (var1**0.5 + eps) - Z0_1 = (T - mu0_given_1) / (var0_given_1**0.5 + eps) - Z1_0 = (T - mu1_given_0) / (var1_given_0**0.5 + eps) - pdf0 = dist.pdf(T, loc=mu0_given_1, scale=var0_given_1**0.5) - cdf0 = dist.cdf(T, loc=mu0_given_1, scale=var0_given_1**0.5) - pdf1 = dist.pdf(T, loc=mu1_given_0, scale=var1_given_0**0.5) - cdf1 = dist.cdf(T, loc=mu1_given_0, scale=var1_given_0**0.5) - cens_mu0 = (1-E) * (pdf0 / (eps + 1-cdf0)) - uncens_mu0 = E * (diff0 / (eps + var0) - pdf1 / (eps + 1-cdf1) * (cov/(eps + var0))) - uncens_mu1 = E * (pdf1 / (eps + 1-cdf1)) - cens_mu1 = (1-E) * (diff1 / (eps + var1) - pdf0 / (eps + 1-cdf0) * (cov/(eps + var1))) - D[:,0] = -(cens_mu0 + uncens_mu0) - D[:,1] = -(cens_mu1 + uncens_mu1) - - # compute grad sigma - D_sigma = np.zeros((self.N, self.p**2)) - - cens_var0 = (1-E) * (pdf0 / (eps + 1-cdf0) * Z0_1 / (eps + 2*var0_given_1**0.5)) - uncens_var0 = E * (0.5*((Z0**2 - 1)/(eps + var0)) + \ - pdf1 / (eps + 1-cdf1) * (-Z0 * (cov/(eps + var0**1.5)) + \ - 0.5 * Z1_0 / (eps + var1_given_0**0.5) * (cov/(eps + var0))**2)) - D_sigma[:,0] = -(cens_var0 + uncens_var0) + Z0 = diff0 / (var0 ** 0.5 + eps) + Z1 = diff1 / (var1 ** 0.5 + eps) + Z0_1 = (T - mu0_given_1) / (var0_given_1 ** 0.5 + eps) + Z1_0 = (T - mu1_given_0) / (var1_given_0 ** 0.5 + eps) + pdf0 = dist.pdf(T, loc=mu0_given_1, scale=var0_given_1 ** 0.5) + cdf0 = dist.cdf(T, loc=mu0_given_1, scale=var0_given_1 ** 0.5) + pdf1 = dist.pdf(T, loc=mu1_given_0, scale=var1_given_0 ** 0.5) + cdf1 = dist.cdf(T, loc=mu1_given_0, scale=var1_given_0 ** 0.5) + cens_mu0 = (1 - E) * (pdf0 / (eps + 1 - cdf0)) + uncens_mu0 = E * ( + diff0 / (eps + var0) - pdf1 / (eps + 1 - cdf1) * (cov / (eps + var0)) + ) + uncens_mu1 = E * (pdf1 / (eps + 1 - cdf1)) + cens_mu1 = (1 - E) * ( + diff1 / (eps + var1) - pdf0 / (eps + 1 - cdf0) * (cov / (eps + var1)) + ) + D[:, 0] = -(cens_mu0 + uncens_mu0) + D[:, 1] = -(cens_mu1 + uncens_mu1) - uncens_var1 = E * (pdf1 / (eps + 1-cdf1) * Z1_0 / (eps + 2*var1_given_0**0.5)) - cens_var1 = (1-E) * (0.5*((Z1**2 - 1)/(eps + var1)) + \ - pdf0 / (eps + 1-cdf0) * (-Z1 * (cov/(eps + var1**1.5)) + \ - 0.5 * Z0_1 / (eps + var0_given_1**0.5) * (cov/(eps + var1))**2)) - D_sigma[:,3] = -(cens_var1 + uncens_var1) - - uncens_cov = E * (pdf1 / (eps + 1-cdf1) * (Z0 / (eps + var0**0.5) - Z1_0 / (eps + var1_given_0**0.5) * (cov/(eps + var0)))) - cens_cov = (1-E) * (pdf0 / (eps + 1-cdf0) * (Z1 / (eps + var1**0.5) - Z0_1 / (eps + var0_given_1**0.5) * (cov/(eps + var1)))) - D_sigma[:,1] = -(cens_cov + uncens_cov) * 0.5 - D_sigma[:,2] = -(cens_cov + uncens_cov) * 0.5 - - D_L = J.swapaxes(-2,-1) @ D_sigma[:,:,None] - D[:, self.p:] = D_L[..., 0] + # compute grad sigma + D_sigma = np.zeros((self.N, self.p ** 2)) + + cens_var0 = (1 - E) * ( + pdf0 / (eps + 1 - cdf0) * Z0_1 / (eps + 2 * var0_given_1 ** 0.5) + ) + uncens_var0 = E * ( + 0.5 * ((Z0 ** 2 - 1) / (eps + var0)) + + pdf1 + / (eps + 1 - cdf1) + * ( + -Z0 * (cov / (eps + var0 ** 1.5)) + + 0.5 + * Z1_0 + / (eps + var1_given_0 ** 0.5) + * (cov / (eps + var0)) ** 2 + ) + ) + D_sigma[:, 0] = -(cens_var0 + uncens_var0) + + uncens_var1 = E * ( + pdf1 / (eps + 1 - cdf1) * Z1_0 / (eps + 2 * var1_given_0 ** 0.5) + ) + cens_var1 = (1 - E) * ( + 0.5 * ((Z1 ** 2 - 1) / (eps + var1)) + + pdf0 + / (eps + 1 - cdf0) + * ( + -Z1 * (cov / (eps + var1 ** 1.5)) + + 0.5 + * Z0_1 + / (eps + var0_given_1 ** 0.5) + * (cov / (eps + var1)) ** 2 + ) + ) + D_sigma[:, 3] = -(cens_var1 + uncens_var1) + + uncens_cov = E * ( + pdf1 + / (eps + 1 - cdf1) + * ( + Z0 / (eps + var0 ** 0.5) + - Z1_0 / (eps + var1_given_0 ** 0.5) * (cov / (eps + var0)) + ) + ) + cens_cov = (1 - E) * ( + pdf0 + / (eps + 1 - cdf0) + * ( + Z1 / (eps + var1 ** 0.5) + - Z0_1 / (eps + var0_given_1 ** 0.5) * (cov / (eps + var1)) + ) + ) + D_sigma[:, 1] = -(cens_cov + uncens_cov) * 0.5 + D_sigma[:, 2] = -(cens_cov + uncens_cov) * 0.5 + + D_L = J.swapaxes(-2, -1) @ D_sigma[:, :, None] + D[:, self.p :] = D_L[..., 0] return D except: # reshape Jacobian tril_indices = np.tril_indices(self.p) - J = self.dCovdL[:,:,:,tril_indices[0],tril_indices[1]] - J = np.transpose(J, (0,3,1,2)).reshape(self.N, -1, self.p**2) - J = J.swapaxes(-2,-1) + J = self.dCovdL[:, :, :, tril_indices[0], tril_indices[1]] + J = np.transpose(J, (0, 3, 1, 2)).reshape(self.N, -1, self.p ** 2) + J = J.swapaxes(-2, -1) # compute grad mu D = np.zeros((self.N, J.shape[-1] + self.p)) sigma_inv = np.linalg.inv(self.cov) diff = self.loc - Y_ - D[:, :self.p] = (sigma_inv @ diff[:,:,None])[...,0] + D[:, : self.p] = (sigma_inv @ diff[:, :, None])[..., 0] # compute grad sigma - D_sigma = 0.5*(sigma_inv - sigma_inv @ (diff[:,:,None]*diff[:,None,:]) @ sigma_inv) + D_sigma = 0.5 * ( + sigma_inv + - sigma_inv @ (diff[:, :, None] * diff[:, None, :]) @ sigma_inv + ) D_sigma = D_sigma.reshape(self.N, -1) - D_L = J.swapaxes(-2,-1) @ D_sigma[:,:,None] - D[:, self.p:] = D_L[..., 0] + D_L = J.swapaxes(-2, -1) @ D_sigma[:, :, None] + D[:, self.p :] = D_L[..., 0] return D def fisher_info(self): # reshape Jacobian tril_indices = np.tril_indices(self.p) - J = self.dCovdL[:,:,:,tril_indices[0],tril_indices[1]] + J = self.dCovdL[:, :, :, tril_indices[0], tril_indices[1]] - FI = np.zeros((self.N,self.n_params,self.n_params)) + FI = np.zeros((self.N, self.n_params, self.n_params)) # compute FI mu - FI[:,:self.p,:self.p] = self.cov_inv + FI[:, : self.p, : self.p] = self.cov_inv # compute FI sigma - M = np.einsum('nij,njkl->nikl', self.cov_inv, J) - M = np.einsum('nijx,njky->nikxy', M, M) - FI[:,self.p:,self.p:] = 0.5 * np.trace(M, axis1=1, axis2=2) + M = np.einsum("nij,njkl->nikl", self.cov_inv, J) + M = np.einsum("nijx,njky->nikxy", M, M) + FI[:, self.p :, self.p :] = 0.5 * np.trace(M, axis1=1, axis2=2) return FI def conditional_dist(self, Y): - mu0 = self.loc[:,0] - mu1 = self.loc[:,1] - var0 = self.cov[:,0,0] - var1 = self.cov[:,1,1] - cov = self.cov[:,0,1] + mu0 = self.loc[:, 0] + mu1 = self.loc[:, 1] + var0 = self.cov[:, 0, 0] + var1 = self.cov[:, 1, 1] + cov = self.cov[:, 0, 1] - mu0_given_1 = mu0 + cov * (1/(eps + var1)) * (Y - mu1) - mu1_given_0 = mu1 + cov * (1/(eps + var0)) * (Y - mu0) - var0_given_1 = var0 - cov * (1/(eps + var1)) * cov - var1_given_0 = var1 - cov * (1/(eps + var0)) * cov + mu0_given_1 = mu0 + cov * (1 / (eps + var1)) * (Y - mu1) + mu1_given_0 = mu1 + cov * (1 / (eps + var0)) * (Y - mu0) + var0_given_1 = var0 - cov * (1 / (eps + var1)) * cov + var1_given_0 = var1 - cov * (1 / (eps + var0)) * cov return mu0_given_1, mu1_given_0, var0_given_1, var1_given_0 - def fit(Y): + def fit(Y): try: - E = Y['Event'] - T = np.log(Y['Time'] + eps) + E = Y["Event"] + T = np.log(Y["Time"] + eps) # place holder - m = np.array([8., 8.]) - sigma = np.array([[2., 1.], - [1., 2.]]) + m = np.array([8.0, 8.0]) + sigma = np.array([[2.0, 1.0], [1.0, 2.0]]) L = sp.linalg.cholesky(sigma, lower=True) return np.concatenate([m, L[np.tril_indices(2)]]) except: N, p = Y.shape m = Y.mean(axis=0) diff = Y - m - sigma = 1 / N * (diff[:,:,None] @ diff[:,None,:]).sum(0) + sigma = 1 / N * (diff[:, :, None] @ diff[:, None, :]).sum(0) L = sp.linalg.cholesky(sigma, lower=True) return np.concatenate([m, L[np.tril_indices(p)]]) diff --git a/ngboost/distns/normal.py b/ngboost/distns/normal.py index 5004ec43..a4711ca0 100644 --- a/ngboost/distns/normal.py +++ b/ngboost/distns/normal.py @@ -4,6 +4,7 @@ import numpy as np from scipy.stats import norm as dist + class NormalLogScore(LogScore): def score(self, Y): return -self.dist.logpdf(Y) @@ -20,11 +21,15 @@ def metric(self): FI[:, 1, 1] = 2 return FI + class NormalCRPScore(CRPScore): def score(self, Y): Z = (Y - self.loc) / self.scale - return (self.scale * (Z * (2 * sp.stats.norm.cdf(Z) - 1) + \ - 2 * sp.stats.norm.pdf(Z) - 1 / np.sqrt(np.pi))) + return self.scale * ( + Z * (2 * sp.stats.norm.cdf(Z) - 1) + + 2 * sp.stats.norm.pdf(Z) + - 1 / np.sqrt(np.pi) + ) def d_score(self, Y): Z = (Y - self.loc) / self.scale @@ -34,19 +39,24 @@ def d_score(self, Y): return D def metric(self): - I = np.c_[2 * np.ones_like(self.var), np.zeros_like(self.var), - np.zeros_like(self.var), self.var] + I = np.c_[ + 2 * np.ones_like(self.var), + np.zeros_like(self.var), + np.zeros_like(self.var), + self.var, + ] I = I.reshape((self.var.shape[0], 2, 2)) I = 1 / (2 * np.sqrt(np.pi)) * I return I + class Normal(RegressionDistn): - ''' + """ Implements the normal distribution for NGBoost. The normal distribution has two parameters, loc and scale, which are the mean and standard deviation, respectively. This distribution has both LogScore and CRPScore implemented for it. - ''' + """ n_params = 2 scores = [NormalLogScore, NormalCRPScore] @@ -64,15 +74,18 @@ def fit(Y): def sample(self, m): return np.array([self.rvs() for i in range(m)]) - - def __getattr__(self, name): # gives us Normal.mean() required for RegressionDist.predict() + + def __getattr__( + self, name + ): # gives us Normal.mean() required for RegressionDist.predict() if name in dir(self.dist): return getattr(self.dist, name) return None - + @property def params(self): - return {'loc':self.loc, 'scale':self.scale} + return {"loc": self.loc, "scale": self.scale} + ### Fixed Variance Normal ### class NormalFixedVarLogScore(NormalLogScore): @@ -86,6 +99,7 @@ def metric(self): FI[:, 0, 0] = 1 / self.var + 1e-5 return FI + class NormalFixedVarCRPScore(NormalCRPScore): def d_score(self, Y): Z = (Y - self.loc) / self.scale @@ -93,19 +107,20 @@ def d_score(self, Y): D[:, 0] = -(2 * sp.stats.norm.cdf(Z) - 1) return D - def metric(self): + def metric(self): I = np.c_[2 * np.ones_like(self.var)] I = I.reshape((self.var.shape[0], 1, 1)) I = 1 / (2 * np.sqrt(np.pi)) * I return I + class NormalFixedVar(Normal): - ''' + """ Implements the normal distribution with variance=1 for NGBoost. The fixed-variance normal distribution has one parameters, loc which is the mean. This distribution has both LogScore and CRPScore implemented for it. - ''' + """ n_params = 1 scores = [NormalFixedVarLogScore, NormalFixedVarCRPScore] diff --git a/ngboost/evaluation.py b/ngboost/evaluation.py index 15107d54..474965c7 100644 --- a/ngboost/evaluation.py +++ b/ngboost/evaluation.py @@ -9,10 +9,10 @@ def calibration_regression(Forecast, Y, bins=11, eps=1e-3): """ Calculate calibration in the regression setting. """ - pctles = np.linspace(eps, 1-eps, bins) + pctles = np.linspace(eps, 1 - eps, bins) observed = np.zeros_like(pctles) for i, pctle in enumerate(pctles): - icdfs = Forecast.ppf(pctle)[:,np.newaxis] + icdfs = Forecast.ppf(pctle)[:, np.newaxis] observed[i] = np.mean(Y < icdfs) slope, intercept = np.polyfit(pctles, observed, deg=1) return pctles, observed, slope, intercept @@ -37,13 +37,19 @@ def calculate_calib_error(predicted, observed): def plot_pit_histogram(predicted, observed, **kwargs): - plt.bar(x = predicted[1:], height = np.diff(observed), - width = -np.diff(predicted), align = "edge", - fill = False, edgecolor = "black", **kwargs) + plt.bar( + x=predicted[1:], + height=np.diff(observed), + width=-np.diff(predicted), + align="edge", + fill=False, + edgecolor="black", + **kwargs + ) plt.xlim((0, 1)) plt.xlabel("Probability Integral Transform") plt.ylabel("Density") - plt.axhline(1.0 / (len(predicted) - 1), linestyle = "--", color = "grey") + plt.axhline(1.0 / (len(predicted) - 1), linestyle="--", color="grey") plt.title("PIT Histogram") @@ -53,11 +59,15 @@ def plot_calibration_curve(predicted, observed): """ slope, intercept = np.polyfit(predicted, observed, deg=1) plt.plot(predicted, observed, "o", color="black") - plt.plot(np.linspace(0, 1), np.linspace(0, 1) * slope + intercept, "--", - label="Slope: %.2f, Intercept: %.2f" % (slope, intercept), - alpha=0.5, color="black") - plt.plot(np.linspace(0, 1), np.linspace(0, 1), "--", color="grey", - alpha=0.5) + plt.plot( + np.linspace(0, 1), + np.linspace(0, 1) * slope + intercept, + "--", + label="Slope: %.2f, Intercept: %.2f" % (slope, intercept), + alpha=0.5, + color="black", + ) + plt.plot(np.linspace(0, 1), np.linspace(0, 1), "--", color="grey", alpha=0.5) plt.xlabel("Predicted CDF") plt.ylabel("Observed CDF") plt.title("Calibration Plot") @@ -70,9 +80,9 @@ def calculate_concordance_dead_only(preds, Y, E): """ Calculate C-statistic for only cases where outcome is uncensored. """ - return calculate_concordance_naive(np.array(preds[E == 1]), - np.array(Y[E == 1]), - np.array(E[E == 1])) + return calculate_concordance_naive( + np.array(preds[E == 1]), np.array(Y[E == 1]), np.array(E[E == 1]) + ) def calculate_concordance_naive(preds, Y, E): @@ -90,13 +100,16 @@ def calculate_concordance_naive(preds, Y, E): counter = 0 for i in tqdm(range(N)): for j in range(i + 1, N): - if (E[i] and E[j]) or \ - (E[i] and not E[j] and Y[i] < Y[j]) or (not E[i] and E[j] and Y[i] > Y[j]): - if (preds[i] < preds[j] and trues[i] < trues[j]) or \ - (preds[i] > preds[j] and trues[i] > trues[j]): - concordance += 1 + if ( + (E[i] and E[j]) + or (E[i] and not E[j] and Y[i] < Y[j]) + or (not E[i] and E[j] and Y[i] > Y[j]) + ): + if (preds[i] < preds[j] and trues[i] < trues[j]) or ( + preds[i] > preds[j] and trues[i] > trues[j] + ): + concordance += 1 elif preds[i] == preds[j]: concordance += 0.5 counter += 1 return concordance / counter - diff --git a/ngboost/helpers.py b/ngboost/helpers.py index d5fea77b..ef7f3b07 100644 --- a/ngboost/helpers.py +++ b/ngboost/helpers.py @@ -1,14 +1,17 @@ import numpy as np -def Y_from_censored(T,E=None): + +def Y_from_censored(T, E=None): if T is None: return None - if T.dtype == [('Event', '?'), ('Time', ' 0 and itr % int(self.verbose_eval) == 0: + if ( + self.verbose + and int(self.verbose_eval) > 0 + and itr % int(self.verbose_eval) == 0 + ): grad_norm = np.linalg.norm(grads, axis=1).mean() * scale - print(f"[iter {itr}] loss={loss:.4f} val_loss={val_loss:.4f} scale={scale:.4f} " - f"norm={grad_norm:.4f}") + print( + f"[iter {itr}] loss={loss:.4f} val_loss={val_loss:.4f} scale={scale:.4f} " + f"norm={grad_norm:.4f}" + ) if np.linalg.norm(proj_grad, axis=1).mean() < self.tol: if self.verbose: print(f"== Quitting at iteration / GRAD {itr}") break - self.evals_result = {} metric = self.Score.__name__.upper() - self.evals_result['train'] = {metric: loss_list} + self.evals_result["train"] = {metric: loss_list} if X_val is not None and Y_val is not None: - self.evals_result['val'] = {metric: val_loss_list} + self.evals_result["val"] = {metric: val_loss_list} return self @@ -238,7 +296,7 @@ def score(self, X, Y): return self.Manifold(self.pred_dist(X)._params).total_score(Y) def pred_dist(self, X, max_iter=None): - ''' + """ Predict the conditional distribution of Y at the points X=x Parameters: @@ -247,10 +305,14 @@ def pred_dist(self, X, max_iter=None): Output: A NGBoost distribution object - ''' - if max_iter is not None: # get prediction at a particular iteration if asked for + """ + if ( + max_iter is not None + ): # get prediction at a particular iteration if asked for dist = self.staged_pred_dist(X, max_iter=max_iter)[-1] - elif self.best_val_loss_itr is not None: # this will exist if there's a validation set + elif ( + self.best_val_loss_itr is not None + ): # this will exist if there's a validation set dist = self.staged_pred_dist(X, max_iter=self.best_val_loss_itr)[-1] else: params = np.asarray(self.pred_param(X, max_iter)) @@ -258,7 +320,7 @@ def pred_dist(self, X, max_iter=None): return dist def staged_pred_dist(self, X, max_iter=None): - ''' + """ Predict the conditional distribution of Y at the points X=x at multiple boosting iterations Parameters: @@ -267,21 +329,25 @@ def staged_pred_dist(self, X, max_iter=None): Output: A list of NGBoost distribution objects, one per boosting stage up to max_iter - ''' + """ predictions = [] m, n = X.shape params = np.ones((m, self.Dist.n_params)) * self.init_params - for i, (models, s, col_idx) in enumerate(zip(self.base_models, self.scalings, self.col_idxs)): - resids = np.array([model.predict(X[:,col_idx]) for model in models]).T + for i, (models, s, col_idx) in enumerate( + zip(self.base_models, self.scalings, self.col_idxs) + ): + resids = np.array([model.predict(X[:, col_idx]) for model in models]).T params -= self.learning_rate * resids * s - dists = self.Dist(np.copy(params.T)) # if the params aren't copied, param changes with stages carry over to dists + dists = self.Dist( + np.copy(params.T) + ) # if the params aren't copied, param changes with stages carry over to dists predictions.append(dists) if max_iter and i == max_iter: break return predictions def predict(self, X, max_iter=None): - ''' + """ Point prediction of Y at the points X=x Parameters: @@ -290,11 +356,11 @@ def predict(self, X, max_iter=None): Output: Numpy array of the estimates of Y - ''' + """ return self.pred_dist(X, max_iter=max_iter).predict() def staged_predict(self, X, max_iter=None): - ''' + """ Point prediction of Y at the points X=x at multiple boosting iterations Parameters: @@ -303,7 +369,7 @@ def staged_predict(self, X, max_iter=None): Output: A list of numpy arrays of the estimates of Y, one per boosting stage up to max_iter - ''' + """ return [dist.predict() for dist in self.staged_pred_dist(X, max_iter=max_iter)] @property @@ -328,13 +394,25 @@ def feature_importances_(self): # Reshape the base_models params_trees = zip(*self.base_models) # Get the feature_importances_ for all the params and all the trees - all_params_importances = [[getattr(tree, 'feature_importances_') - for tree in trees if tree.tree_.node_count > 1] - for trees in params_trees] + all_params_importances = [ + [ + getattr(tree, "feature_importances_") + for tree in trees + if tree.tree_.node_count > 1 + ] + for trees in params_trees + ] if not all_params_importances: - return np.zeros(len(self.base_models[0]),self.base_models[0][0].n_features_, dtype=np.float64) + return np.zeros( + len(self.base_models[0]), + self.base_models[0][0].n_features_, + dtype=np.float64, + ) # Weighted average of importance by tree scaling factors - all_params_importances = np.average(all_params_importances, - axis=1, weights=self.scalings) - return all_params_importances / np.sum(all_params_importances,axis=1,keepdims=True) + all_params_importances = np.average( + all_params_importances, axis=1, weights=self.scalings + ) + return all_params_importances / np.sum( + all_params_importances, axis=1, keepdims=True + ) diff --git a/ngboost/scores.py b/ngboost/scores.py index 4498f993..fb4f1d44 100644 --- a/ngboost/scores.py +++ b/ngboost/scores.py @@ -1,7 +1,8 @@ import numpy as np from ngboost.helpers import Y_from_censored -class Score(): + +class Score: def total_score(self, Y, sample_weight=None): return np.average(self.score(Y), weights=sample_weight) @@ -12,22 +13,30 @@ def grad(self, Y, natural=True): grad = np.linalg.solve(metric, grad) return grad + class LogScore(Score): - ''' + """ Generic class for the log scoring rule. The log scoring rule is the same as negative log-likelihood: -log(P̂(y)), also known as the maximum likelihood estimator. This scoring rule has a default method for calculating the Riemannian metric. - ''' + """ def metric(self, n_mc_samples=100): grads = np.stack([self.d_score(Y) for Y in self.sample(n_mc_samples)]) - return np.mean(np.einsum('sik,sij->sijk', grads, grads), axis=0) + return np.mean(np.einsum("sik,sij->sijk", grads, grads), axis=0) + # autofit method from d_score? + + MLE = LogScore + class CRPScore(Score): - ''' + """ Generic class for the continuous ranked probability scoring rule. - ''' + """ + pass -CRPS = CRPScore \ No newline at end of file + + +CRPS = CRPScore diff --git a/ngboost/tests/test_basic.py b/ngboost/tests/test_basic.py index d02738c1..06c969fe 100644 --- a/ngboost/tests/test_basic.py +++ b/ngboost/tests/test_basic.py @@ -8,13 +8,15 @@ np.random.seed(1) + def test_classification(): from sklearn.datasets import load_breast_cancer from sklearn.metrics import roc_auc_score, log_loss + data, target = load_breast_cancer(True) - x_train, x_test, y_train, y_test = train_test_split(data, target, - test_size=0.2, - random_state=42) + x_train, x_test, y_train, y_test = train_test_split( + data, target, test_size=0.2, random_state=42 + ) ngb = NGBClassifier(Dist=Bernoulli, verbose=False) ngb.fit(x_train, y_train) preds = ngb.predict(x_test) @@ -31,16 +33,18 @@ def test_classification(): dist = ngb.pred_dist(x_test) assert isinstance(dist, Bernoulli) - score = roc_auc_score(y_test, preds[:,1]) + score = roc_auc_score(y_test, preds[:, 1]) assert score >= 0.95 + def test_regression(): from sklearn.datasets import load_boston from sklearn.metrics import mean_squared_error + data, target = load_boston(True) - x_train, x_test, y_train, y_test = train_test_split(data, target, - test_size=0.2, - random_state=42) + x_train, x_test, y_train, y_test = train_test_split( + data, target, test_size=0.2, random_state=42 + ) ngb = NGBRegressor(verbose=False) ngb.fit(x_train, y_train) preds = ngb.predict(x_test) diff --git a/ngboost/tests/test_distns.py b/ngboost/tests/test_distns.py index 7cc6a8b9..57b3e1cc 100644 --- a/ngboost/tests/test_distns.py +++ b/ngboost/tests/test_distns.py @@ -14,107 +14,117 @@ # test all the dist methods and score implementation methods, i.e. they all return proper shapes and sizes and types # check metric lines up with defaults for lognormal where applicable + @pytest.fixture(scope="module") def learners(): - # add some learners that aren't trees - return [ - DecisionTreeRegressor(criterion='friedman_mse', max_depth=5), - DecisionTreeRegressor(criterion='friedman_mse', max_depth=3) - ] - -class TestRegDistns(): - - @pytest.fixture(scope="class") - def reg_dists(self): - return { - Normal: [LogScore, CRPScore], - LogNormal: [LogScore, CRPScore], - Exponential: [LogScore, CRPScore] - } - - @pytest.fixture(scope="class") - def reg_data(self): - X, Y = load_boston(True) - return train_test_split(X, Y, test_size=0.2) - - def test_dists(self, learners, reg_dists, reg_data): - X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = reg_data - for Dist, Scores in reg_dists.items(): - for Score in Scores: - for Learner in learners: - # test early stopping features - ngb = NGBRegressor(Dist=Dist, Score=Score, Base=Learner, verbose=False) - ngb.fit(X_reg_train, Y_reg_train) - y_pred = ngb.predict(X_reg_test) - y_dist = ngb.pred_dist(X_reg_test) - # test properties of output - - # test what happens when a dist that's not regression is passed in - -class TestSurvDistns(): - - @pytest.fixture(scope="class") - def surv_dists(self): - return { - LogNormal: [LogScore, CRPScore], - Exponential: [LogScore, CRPScore] - } - - @pytest.fixture(scope="class") - def surv_data(self): - X, Y = load_boston(True) - X_surv_train, X_surv_test, Y_surv_train, Y_surv_test = train_test_split(X, Y, test_size=0.2) - - # introduce administrative censoring to simulate survival data - T_surv_train = np.minimum(Y_surv_train, 30) # time of an event or censoring - E_surv_train = Y_surv_train > 30 # 1 if T[i] is the time of an event, 0 if it's a time of censoring - return X_surv_train, X_surv_test, T_surv_train, E_surv_train, Y_surv_test - - def test_dists(self, learners, surv_dists, surv_data): - X_surv_train, X_surv_test, T_surv_train, E_surv_train, Y_surv_test = surv_data - for Dist, Scores in surv_dists.items(): - for Score in Scores: - for Learner in learners: - # test early stopping features - ngb = NGBSurvival(Dist=Dist, Score=Score, Base=Learner, verbose=False) - ngb.fit(X_surv_train, T_surv_train, E_surv_train) - y_pred = ngb.predict(X_surv_test) - y_dist = ngb.pred_dist(X_surv_test) - # test properties of output - -class TestClsDistns(): - - @pytest.fixture(scope="class") - def cls_data(self): - X, Y = load_breast_cancer(True) - return train_test_split(X, Y, test_size=0.2) - - def test_bernoulli(self, learners, cls_data): - X_cls_train, X_cls_test, Y_cls_train, Y_cls_test = cls_data - for Learner in learners: - # test early stopping features - # test other args, n_trees, LR, minibatching- args as fixture - ngb = NGBClassifier(Dist=Bernoulli, Score=LogScore, Base=Learner, verbose=False) - ngb.fit(X_cls_train, Y_cls_train) - y_pred = ngb.predict(X_cls_test) - y_prob = ngb.predict_proba(X_cls_test) - y_dist = ngb.pred_dist(X_cls_test) - # test properties of output - - def test_categorical(self, learners, cls_data): - X_cls_train, X_cls_test, Y_cls_train, Y_cls_test = cls_data - for K in [2,4,7]: - Dist = k_categorical(K) - Y_cls_train = np.random.randint(0,K,(len(Y_cls_train))) - - for Learner in learners: - # test early stopping features - ngb = NGBClassifier(Dist=Dist, Score=LogScore, Base=Learner, verbose=False) - ngb.fit(X_cls_train, Y_cls_train) - y_pred = ngb.predict(X_cls_test) - y_prob = ngb.predict_proba(X_cls_test) - y_dist = ngb.pred_dist(X_cls_test) - # test properties of output - - -# test slicing and ._params \ No newline at end of file + # add some learners that aren't trees + return [ + DecisionTreeRegressor(criterion="friedman_mse", max_depth=5), + DecisionTreeRegressor(criterion="friedman_mse", max_depth=3), + ] + + +class TestRegDistns: + @pytest.fixture(scope="class") + def reg_dists(self): + return { + Normal: [LogScore, CRPScore], + LogNormal: [LogScore, CRPScore], + Exponential: [LogScore, CRPScore], + } + + @pytest.fixture(scope="class") + def reg_data(self): + X, Y = load_boston(True) + return train_test_split(X, Y, test_size=0.2) + + def test_dists(self, learners, reg_dists, reg_data): + X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = reg_data + for Dist, Scores in reg_dists.items(): + for Score in Scores: + for Learner in learners: + # test early stopping features + ngb = NGBRegressor( + Dist=Dist, Score=Score, Base=Learner, verbose=False + ) + ngb.fit(X_reg_train, Y_reg_train) + y_pred = ngb.predict(X_reg_test) + y_dist = ngb.pred_dist(X_reg_test) + # test properties of output + + # test what happens when a dist that's not regression is passed in + + +class TestSurvDistns: + @pytest.fixture(scope="class") + def surv_dists(self): + return {LogNormal: [LogScore, CRPScore], Exponential: [LogScore, CRPScore]} + + @pytest.fixture(scope="class") + def surv_data(self): + X, Y = load_boston(True) + X_surv_train, X_surv_test, Y_surv_train, Y_surv_test = train_test_split( + X, Y, test_size=0.2 + ) + + # introduce administrative censoring to simulate survival data + T_surv_train = np.minimum(Y_surv_train, 30) # time of an event or censoring + E_surv_train = ( + Y_surv_train > 30 + ) # 1 if T[i] is the time of an event, 0 if it's a time of censoring + return X_surv_train, X_surv_test, T_surv_train, E_surv_train, Y_surv_test + + def test_dists(self, learners, surv_dists, surv_data): + X_surv_train, X_surv_test, T_surv_train, E_surv_train, Y_surv_test = surv_data + for Dist, Scores in surv_dists.items(): + for Score in Scores: + for Learner in learners: + # test early stopping features + ngb = NGBSurvival( + Dist=Dist, Score=Score, Base=Learner, verbose=False + ) + ngb.fit(X_surv_train, T_surv_train, E_surv_train) + y_pred = ngb.predict(X_surv_test) + y_dist = ngb.pred_dist(X_surv_test) + # test properties of output + + +class TestClsDistns: + @pytest.fixture(scope="class") + def cls_data(self): + X, Y = load_breast_cancer(True) + return train_test_split(X, Y, test_size=0.2) + + def test_bernoulli(self, learners, cls_data): + X_cls_train, X_cls_test, Y_cls_train, Y_cls_test = cls_data + for Learner in learners: + # test early stopping features + # test other args, n_trees, LR, minibatching- args as fixture + ngb = NGBClassifier( + Dist=Bernoulli, Score=LogScore, Base=Learner, verbose=False + ) + ngb.fit(X_cls_train, Y_cls_train) + y_pred = ngb.predict(X_cls_test) + y_prob = ngb.predict_proba(X_cls_test) + y_dist = ngb.pred_dist(X_cls_test) + # test properties of output + + def test_categorical(self, learners, cls_data): + X_cls_train, X_cls_test, Y_cls_train, Y_cls_test = cls_data + for K in [2, 4, 7]: + Dist = k_categorical(K) + Y_cls_train = np.random.randint(0, K, (len(Y_cls_train))) + + for Learner in learners: + # test early stopping features + ngb = NGBClassifier( + Dist=Dist, Score=LogScore, Base=Learner, verbose=False + ) + ngb.fit(X_cls_train, Y_cls_train) + y_pred = ngb.predict(X_cls_test) + y_prob = ngb.predict_proba(X_cls_test) + y_dist = ngb.pred_dist(X_cls_test) + # test properties of output + + +# test slicing and ._params diff --git a/setup.py b/setup.py index 32255140..aa8c884c 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ long_description="Please see Github for full description.", long_description_content_type="text/markdown", url="https://github.com/stanfordmlgroup/ngboost", - license='Apache License 2.0', + license="Apache License 2.0", packages=setuptools.find_packages(), classifiers=[ "Programming Language :: Python :: 3", @@ -22,7 +22,5 @@ "tqdm>=4.36.1", "lifelines>=0.22.8", ], - tests_require=[ - "pytest" - ] + tests_require=["pytest"], ) From baa1a692318e81474e1e7252ba1ae2d7fe4e8752 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:34:43 +0900 Subject: [PATCH 014/245] apply black --- examples/experiments/regression_exp.py | 130 +++++++++++++++++-------- examples/experiments/survival_exp.py | 108 +++++++++++++------- examples/multiclass_classification.py | 10 +- examples/regression.py | 4 +- examples/simulations/regression_sim.py | 24 ++--- examples/simulations/survival_sim.py | 35 ++++--- examples/sklearn_cv.py | 21 ++-- examples/survival.py | 6 +- 8 files changed, 214 insertions(+), 124 deletions(-) diff --git a/examples/experiments/regression_exp.py b/examples/experiments/regression_exp.py index 2d12a0fb..7b6c6545 100644 --- a/examples/experiments/regression_exp.py +++ b/examples/experiments/regression_exp.py @@ -15,15 +15,34 @@ np.random.seed(1) dataset_name_to_loader = { - "housing": lambda: pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data', header=None, delim_whitespace=True), - "concrete": lambda: pd.read_excel("https://archive.ics.uci.edu/ml/machine-learning-databases/concrete/compressive/Concrete_Data.xls"), - "wine": lambda: pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', delimiter=";"), + "housing": lambda: pd.read_csv( + "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data", + header=None, + delim_whitespace=True, + ), + "concrete": lambda: pd.read_excel( + "https://archive.ics.uci.edu/ml/machine-learning-databases/concrete/compressive/Concrete_Data.xls" + ), + "wine": lambda: pd.read_csv( + "https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv", + delimiter=";", + ), "kin8nm": lambda: pd.read_csv("data/uci/kin8nm.csv"), - "naval": lambda: pd.read_csv("data/uci/naval-propulsion.txt", delim_whitespace=True, header=None).iloc[:,:-1], + "naval": lambda: pd.read_csv( + "data/uci/naval-propulsion.txt", delim_whitespace=True, header=None + ).iloc[:, :-1], "power": lambda: pd.read_excel("data/uci/power-plant.xlsx"), - "energy": lambda: pd.read_excel("https://archive.ics.uci.edu/ml/machine-learning-databases/00242/ENB2012_data.xlsx").iloc[:,:-1], - "protein": lambda: pd.read_csv("data/uci/protein.csv")[['F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'RMSD']], - "yacht": lambda: pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/00243/yacht_hydrodynamics.data", header=None, delim_whitespace=True), + "energy": lambda: pd.read_excel( + "https://archive.ics.uci.edu/ml/machine-learning-databases/00242/ENB2012_data.xlsx" + ).iloc[:, :-1], + "protein": lambda: pd.read_csv("data/uci/protein.csv")[ + ["F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "RMSD"] + ], + "yacht": lambda: pd.read_csv( + "http://archive.ics.uci.edu/ml/machine-learning-databases/00243/yacht_hydrodynamics.data", + header=None, + delim_whitespace=True, + ), "msd": lambda: pd.read_csv("data/uci/YearPredictionMSD.txt").iloc[:, ::-1], } @@ -51,12 +70,15 @@ # load dataset -- use last column as label data = dataset_name_to_loader[args.dataset]() - X, y = data.iloc[:,:-1].values, data.iloc[:,-1].values + X, y = data.iloc[:, :-1].values, data.iloc[:, -1].values if not args.minibatch_frac: args.minibatch_frac = 1.0 - print('== Dataset=%s X.shape=%s %s/%s' % (args.dataset, str(X.shape), args.score, args.distn)) + print( + "== Dataset=%s X.shape=%s %s/%s" + % (args.dataset, str(X.shape), args.score, args.distn) + ) y_true, ngb_rmse, ngb_nll = [], [], [] @@ -72,31 +94,35 @@ np.random.seed(1) folds = [] for i in range(args.n_splits): - permutation = np.random.choice(range(n), n, replace = False) + permutation = np.random.choice(range(n), n, replace=False) end_train = round(n * 9.0 / 10) end_test = n - train_index = permutation[ 0 : end_train ] - test_index = permutation[ end_train : n ] - folds.append( (train_index, test_index) ) + train_index = permutation[0:end_train] + test_index = permutation[end_train:n] + folds.append((train_index, test_index)) for itr, (train_index, test_index) in enumerate(folds): X_trainall, X_test = X[train_index], X[test_index] y_trainall, y_test = y[train_index], y[test_index] - X_train, X_val, y_train, y_val = train_test_split(X_trainall, y_trainall, test_size=0.2) + X_train, X_val, y_train, y_val = train_test_split( + X_trainall, y_trainall, test_size=0.2 + ) y_true += list(y_test.flatten()) - ngb = NGBRegressor(Base=base_name_to_learner[args.base], - Dist=eval(args.distn), - Score=eval(args.score), - n_estimators=args.n_est, - learning_rate=args.lr, - natural_gradient=args.natural, - minibatch_frac=args.minibatch_frac, - verbose=args.verbose) + ngb = NGBRegressor( + Base=base_name_to_learner[args.base], + Dist=eval(args.distn), + Score=eval(args.score), + n_estimators=args.n_est, + learning_rate=args.lr, + natural_gradient=args.natural, + minibatch_frac=args.minibatch_frac, + verbose=args.verbose, + ) ngb.fit(X_train, y_train) @@ -105,18 +131,22 @@ y_forecasts = ngb.staged_pred_dist(X_val) val_rmse = [mean_squared_error(y_pred, y_val) for y_pred in y_preds] - val_nll = [-y_forecast.logpdf(y_val.flatten()).mean() for y_forecast in y_forecasts] + val_nll = [ + -y_forecast.logpdf(y_val.flatten()).mean() for y_forecast in y_forecasts + ] best_itr = np.argmin(val_rmse) + 1 # re-train using all the data after tuning number of iterations - ngb = NGBRegressor(Base=base_name_to_learner[args.base], - Dist=eval(args.distn), - Score=eval(args.score), - n_estimators=args.n_est, - learning_rate=args.lr, - natural_gradient=args.natural, - minibatch_frac=args.minibatch_frac, - verbose=args.verbose) + ngb = NGBRegressor( + Base=base_name_to_learner[args.base], + Dist=eval(args.distn), + Score=eval(args.score), + n_estimators=args.n_est, + learning_rate=args.lr, + natural_gradient=args.natural, + minibatch_frac=args.minibatch_frac, + verbose=args.verbose, + ) ngb.fit(X_trainall, y_trainall) # the final prediction for this fold @@ -125,20 +155,34 @@ # set the appropriate scale if using a homoskedastic Normal if args.distn == "NormalFixedVar": - scale = forecast.var * ((forecast_val.loc - y_val.flatten()) ** 2).mean() ** 0.5 + scale = ( + forecast.var * ((forecast_val.loc - y_val.flatten()) ** 2).mean() ** 0.5 + ) forecast = norm_dist(loc=forecast.loc, scale=scale) ngb_rmse += [np.sqrt(mean_squared_error(forecast.mean(), y_test))] ngb_nll += [-forecast.logpdf(y_test.flatten()).mean()] - print("[%d/%d] BestIter=%d RMSE: Val=%.4f Test=%.4f NLL: Test=%.4f" % (itr+1, args.n_splits, - best_itr, np.sqrt(val_rmse[best_itr-1]), - np.sqrt(mean_squared_error(forecast.mean(), y_test)), - ngb_nll[-1])) - - print('== RMSE GBM=%.4f +/- %.4f, NGB=%.4f +/- %.4f, NLL NGB=%.4f +/ %.4f' % (0.0, 0.0, - np.mean(ngb_rmse), np.std(ngb_rmse), - np.mean(ngb_nll), np.std(ngb_nll))) - - - + print( + "[%d/%d] BestIter=%d RMSE: Val=%.4f Test=%.4f NLL: Test=%.4f" + % ( + itr + 1, + args.n_splits, + best_itr, + np.sqrt(val_rmse[best_itr - 1]), + np.sqrt(mean_squared_error(forecast.mean(), y_test)), + ngb_nll[-1], + ) + ) + + print( + "== RMSE GBM=%.4f +/- %.4f, NGB=%.4f +/- %.4f, NLL NGB=%.4f +/ %.4f" + % ( + 0.0, + 0.0, + np.mean(ngb_rmse), + np.std(ngb_rmse), + np.mean(ngb_nll), + np.std(ngb_nll), + ) + ) diff --git a/examples/experiments/survival_exp.py b/examples/experiments/survival_exp.py index 9e1b3392..bad9b63b 100644 --- a/examples/experiments/survival_exp.py +++ b/examples/experiments/survival_exp.py @@ -21,15 +21,16 @@ "linear": default_linear_learner, } + def Y_join(T, E): - col_event = 'Event' - col_time = 'Time' - y = np.empty(dtype=[(col_event, np.bool), (col_time, np.float64)], - shape=T.shape[0]) + col_event = "Event" + col_time = "Time" + y = np.empty(dtype=[(col_event, np.bool), (col_time, np.float64)], shape=T.shape[0]) y[col_event] = E.values y[col_time] = T.values return y + if __name__ == "__main__": argparser = ArgumentParser() @@ -37,7 +38,7 @@ def Y_join(T, E): argparser.add_argument("--distn", type=str, default="LogNormal") argparser.add_argument("--n-est", type=int, default=200) argparser.add_argument("--reps", type=int, default=1) - argparser.add_argument("--lr", type=float, default=.01) + argparser.add_argument("--lr", type=float, default=0.01) argparser.add_argument("--score", type=str, default="MLE") argparser.add_argument("--natural", action="store_true") argparser.add_argument("--base", type=str, default="tree") @@ -53,12 +54,15 @@ def Y_join(T, E): df = pd.read_csv("./data/surv/flchain.csv") E = df["death"] Y = df["futime"] - X = df >> drop(X.death, X.futime, X.chapter) \ - >> mutate(mgus=X.mgus.astype(float), age=X.age.astype(float)) + X = ( + df + >> drop(X.death, X.futime, X.chapter) + >> mutate(mgus=X.mgus.astype(float), age=X.age.astype(float)) + ) X = X[Y > 0] E = E[Y > 0] Y = Y[Y > 0] - #Y = np.c_[np.log(T) - np.mean(np.log(T)), C] + # Y = np.c_[np.log(T) - np.mean(np.log(T)), C] X_num = X.select_dtypes(include=["float"]) X_cat = X.select_dtypes(exclude=["float"]) imputer = SimpleImputer(strategy="median") @@ -74,9 +78,21 @@ def Y_join(T, E): df = df.rename(columns={"d.time": "dtime"}) Y = df["dtime"] E = df["death"] - #Y = np.c_[np.log(Y) - np.mean(np.log(Y)), C] - df >>= drop(X.dtime, X.death, X.hospdead, X.prg2m, X.prg6m, X.dnr, - X.dnrday, X.aps, X.sps, X.surv2m, X.surv6m, X.totmcst) + # Y = np.c_[np.log(Y) - np.mean(np.log(Y)), C] + df >>= drop( + X.dtime, + X.death, + X.hospdead, + X.prg2m, + X.prg6m, + X.dnr, + X.dnrday, + X.aps, + X.sps, + X.surv2m, + X.surv6m, + X.totmcst, + ) X_num = df.select_dtypes(include=["float", "int"]) X_cat = df.select_dtypes(exclude=["float", "int"]) imputer = SimpleImputer(strategy="median") @@ -91,41 +107,63 @@ def Y_join(T, E): df = pd.read_csv("data/surv/sprint-cut.csv") E = df["cvd"] Y = df["t_cvds"] / 365.25 - #Y = np.c_[np.log(Y) - np.mean(np.log(Y)), C] + # Y = np.c_[np.log(Y) - np.mean(np.log(Y)), C] X = (df >> drop("cvd", "t_cvds", "INTENSIVE")).values - print('== Dataset=%s X.shape=%s Censorship=%.4f' % (args.dataset, str(X.shape), np.mean(1-E))) + print( + "== Dataset=%s X.shape=%s Censorship=%.4f" + % (args.dataset, str(X.shape), np.mean(1 - E)) + ) for itr in range(args.reps): - X_train, X_test, Y_train, Y_test, E_train, E_test = train_test_split(X, Y, E, test_size = 0.2) - X_train, X_val, Y_train, Y_val, E_train, E_val = train_test_split(X_train, Y_train, E_train, test_size=0.2) - - ngb = NGBSurvival(Dist=eval(args.distn), - n_estimators=args.n_est, - learning_rate=args.lr, - natural_gradient=args.natural, - verbose=args.verbose, - minibatch_frac=1.0, - Base=base_name_to_learner[args.base], - Score=eval(args.score)) + X_train, X_test, Y_train, Y_test, E_train, E_test = train_test_split( + X, Y, E, test_size=0.2 + ) + X_train, X_val, Y_train, Y_val, E_train, E_val = train_test_split( + X_train, Y_train, E_train, test_size=0.2 + ) + + ngb = NGBSurvival( + Dist=eval(args.distn), + n_estimators=args.n_est, + learning_rate=args.lr, + natural_gradient=args.natural, + verbose=args.verbose, + minibatch_frac=1.0, + Base=base_name_to_learner[args.base], + Score=eval(args.score), + ) train_losses = ngb.fit(X_train, Y_train, E_train) forecast = ngb.pred_dist(X_test) train_forecast = ngb.pred_dist(X_train) - print('NGB score: %.4f (val), %.4f (train)' % (concordance_index_censored(E_test.astype(bool), Y_test, -forecast.mean())[0], - concordance_index_censored(E_train.astype(bool), Y_train, -train_forecast.mean())[0] - )) + print( + "NGB score: %.4f (val), %.4f (train)" + % ( + concordance_index_censored( + E_test.astype(bool), Y_test, -forecast.mean() + )[0], + concordance_index_censored( + E_train.astype(bool), Y_train, -train_forecast.mean() + )[0], + ) + ) ## ## sksurv ## - gbsa = GBSA(n_estimators=args.n_est, - learning_rate=args.lr, - subsample=args.minibatch_frac, - verbose=args.verbose) + gbsa = GBSA( + n_estimators=args.n_est, + learning_rate=args.lr, + subsample=args.minibatch_frac, + verbose=args.verbose, + ) gbsa.fit(X_train, Y_join(Y_train, E_train)) - print('GBSA score: %.4f (val), %.4f (train)' % (gbsa.score(X_test, Y_join(Y_test, E_test)), - gbsa.score(X_train, Y_join(Y_train, E_train)))) - - + print( + "GBSA score: %.4f (val), %.4f (train)" + % ( + gbsa.score(X_test, Y_join(Y_test, E_test)), + gbsa.score(X_train, Y_join(Y_train, E_train)), + ) + ) diff --git a/examples/multiclass_classification.py b/examples/multiclass_classification.py index b1087c31..9ad69b04 100644 --- a/examples/multiclass_classification.py +++ b/examples/multiclass_classification.py @@ -8,11 +8,13 @@ if __name__ == "__main__": X, y = load_breast_cancer(True) - y[0:15] = 2 # artificially make this a 3-class problem instead of a 2-class problem - X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2) + y[0:15] = 2 # artificially make this a 3-class problem instead of a 2-class problem + X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.2) - ngb = NGBClassifier(Dist=k_categorical(3)) # tell ngboost that there are 3 possible outcomes - ngb.fit(X_train, Y_train) # Y should have only 3 values: {0,1,2} + ngb = NGBClassifier( + Dist=k_categorical(3) + ) # tell ngboost that there are 3 possible outcomes + ngb.fit(X_train, Y_train) # Y should have only 3 values: {0,1,2} # predicted probabilities of class 0, 1, and 2 (columns) for each observation (row) preds = ngb.predict_proba(X_test) diff --git a/examples/regression.py b/examples/regression.py index bf35f437..aa56ac3b 100644 --- a/examples/regression.py +++ b/examples/regression.py @@ -16,8 +16,8 @@ # test Mean Squared Error test_MSE = mean_squared_error(Y_preds, Y_test) - print('Test MSE', test_MSE) + print("Test MSE", test_MSE) # test Negative Log Likelihood test_NLL = -Y_dists.logpdf(Y_test.flatten()).mean() - print('Test NLL', test_NLL) + print("Test NLL", test_NLL) diff --git a/examples/simulations/regression_sim.py b/examples/simulations/regression_sim.py index 8653bb17..9dc9c263 100644 --- a/examples/simulations/regression_sim.py +++ b/examples/simulations/regression_sim.py @@ -11,7 +11,7 @@ from argparse import ArgumentParser -if __name__ == '__main__': +if __name__ == "__main__": argparser = ArgumentParser() argparser.add_argument("--lr", type=float, default=0.1) @@ -31,19 +31,21 @@ Y = (X @ beta1 + args.noise_lvl * noise).squeeze() print(X.shape, Y.shape) - X_train, X_test = X[:1000,:], X[1000:,] + X_train, X_test = X[:1000, :], X[1000:,] Y_train, Y_test = Y[:1000], Y[1000:] - ngb = NGBoost(n_estimators=400, learning_rate=args.lr, - Dist=Normal, - Base=default_linear_learner, - natural_gradient=args.natural, - minibatch_frac=1.0, - Score=eval(args.score)(), - verbose=True, - verbose_eval=100) + ngb = NGBoost( + n_estimators=400, + learning_rate=args.lr, + Dist=Normal, + Base=default_linear_learner, + natural_gradient=args.natural, + minibatch_frac=1.0, + Score=eval(args.score)(), + verbose=True, + verbose_eval=100, + ) losses = ngb.fit(X_train, Y_train) forecast = ngb.pred_dist(X_test) print("R2:", r2_score(Y_test, forecast.loc)) - diff --git a/examples/simulations/survival_sim.py b/examples/simulations/survival_sim.py index ce16907c..4e4d6396 100644 --- a/examples/simulations/survival_sim.py +++ b/examples/simulations/survival_sim.py @@ -3,14 +3,18 @@ from ngboost.api import NGBSurvival from ngboost.scores import MLE, CRPS from ngboost.learners import default_tree_learner, default_linear_learner -from ngboost.evaluation import calibration_time_to_event, plot_calibration_curve, calibration_regression +from ngboost.evaluation import ( + calibration_time_to_event, + plot_calibration_curve, + calibration_regression, +) from sklearn.model_selection import train_test_split from sklearn.metrics import r2_score from matplotlib import pyplot as plt from argparse import ArgumentParser -if __name__ == '__main__': +if __name__ == "__main__": argparser = ArgumentParser() argparser.add_argument("--n-estimators", type=int, default=100) @@ -28,16 +32,19 @@ print(f"Event rate: {np.mean(E):.2f}") X_tr, X_te, Y_tr, Y_te, T_tr, T_te, E_tr, E_te = train_test_split( - X, Y, T, E, test_size=0.2) - - ngb = NGBSurvival(Dist=Exponential, - n_estimators=args.n_estimators, - learning_rate=args.lr, - natural_gradient=True, - Base=default_linear_learner, - Score=MLE, - verbose=True, - verbose_eval=True) + X, Y, T, E, test_size=0.2 + ) + + ngb = NGBSurvival( + Dist=Exponential, + n_estimators=args.n_estimators, + learning_rate=args.lr, + natural_gradient=True, + Base=default_linear_learner, + Score=MLE, + verbose=True, + verbose_eval=True, + ) train_losses = ngb.fit(X_tr, np.exp(np.minimum(Y_tr, T_tr)), E_tr) preds = ngb.pred_dist(X_te) @@ -55,6 +62,8 @@ plt.show() # calibration for partial observations - pctles, observed, slope, intercept = calibration_time_to_event(preds, np.minimum(Y_te, T_te).squeeze(), E_te.squeeze()) + pctles, observed, slope, intercept = calibration_time_to_event( + preds, np.minimum(Y_te, T_te).squeeze(), E_te.squeeze() + ) plot_calibration_curve(pctles, observed) plt.show() diff --git a/examples/sklearn_cv.py b/examples/sklearn_cv.py index 661fee86..b00d9ffc 100644 --- a/examples/sklearn_cv.py +++ b/examples/sklearn_cv.py @@ -7,28 +7,23 @@ if __name__ == "__main__": -# An example where the base learner is also searched over (this is how you would vary tree depth): - + # An example where the base learner is also searched over (this is how you would vary tree depth): X, Y = load_breast_cancer(True) X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2) - b1 = DecisionTreeRegressor(criterion='friedman_mse', max_depth=2) - b2 = DecisionTreeRegressor(criterion='friedman_mse', max_depth=4) + b1 = DecisionTreeRegressor(criterion="friedman_mse", max_depth=2) + b2 = DecisionTreeRegressor(criterion="friedman_mse", max_depth=4) b3 = Ridge(alpha=0.0) param_grid = { - 'n_estimators': [20, 50], - 'minibatch_frac': [1.0, 0.5], - 'Base': [b1, b2] + "n_estimators": [20, 50], + "minibatch_frac": [1.0, 0.5], + "Base": [b1, b2], } - ngb = NGBClassifier( - natural_gradient=True, - verbose=False, - Dist=k_categorical(2) - ) + ngb = NGBClassifier(natural_gradient=True, verbose=False, Dist=k_categorical(2)) grid_search = GridSearchCV(ngb, param_grid=param_grid, cv=5) grid_search.fit(X_train, Y_train) - print(grid_search.best_params_) \ No newline at end of file + print(grid_search.best_params_) diff --git a/examples/survival.py b/examples/survival.py index 27c78eee..f8419d36 100644 --- a/examples/survival.py +++ b/examples/survival.py @@ -10,7 +10,7 @@ X, Y = load_boston(True) X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2) - # introduce administrative censoring + # introduce administrative censoring T_train = np.minimum(Y_train, 30) E_train = Y_train > 30 @@ -20,8 +20,8 @@ # test Mean Squared Error test_MSE = mean_squared_error(Y_preds, Y_test) - print('Test MSE', test_MSE) + print("Test MSE", test_MSE) # test Negative Log Likelihood test_NLL = -Y_dists.logpdf(Y_test.flatten()).mean() - print('Test NLL', test_NLL) + print("Test NLL", test_NLL) From 51b59781cef395b07542b855edffdbeb7797f527 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:34:58 +0900 Subject: [PATCH 015/245] apply black --- figures/toy.py | 52 ++++++++++++++++++++++++++++++------------- figures/toy_single.py | 51 ++++++++++++++++++++++++++++++------------ figures/vis_crps.py | 30 +++++++++++++++++++------ figures/vis_mle.py | 30 +++++++++++++++++++------ 4 files changed, 119 insertions(+), 44 deletions(-) diff --git a/figures/toy.py b/figures/toy.py index bca4b557..3bd1acc4 100644 --- a/figures/toy.py +++ b/figures/toy.py @@ -11,7 +11,8 @@ np.random.seed(1) -default_knr_learner=lambda : KNR() +default_knr_learner = lambda: KNR() + def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): x = np.linspace(-bound, bound, n)[:, np.newaxis] @@ -20,6 +21,7 @@ def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): y = 50 * (x ** deg) + h * beta + noise * e + intcpt return x, y.squeeze(), np.c_[h, np.ones_like(h)] + BLK = 2 if __name__ == "__main__": @@ -35,14 +37,16 @@ def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): poly_transform = PolynomialFeatures(1) x_tr = poly_transform.fit_transform(x_tr) - ngb = NGBoost(Base=default_tree_learner, - Dist=Normal, - Score=MLE(), - n_estimators=args.n_estimators, - learning_rate=args.lr, - natural_gradient=args.natural, - minibatch_frac=args.minibatch_frac, - verbose=True) + ngb = NGBoost( + Base=default_tree_learner, + Dist=Normal, + Score=MLE(), + n_estimators=args.n_estimators, + learning_rate=args.lr, + natural_gradient=args.natural, + minibatch_frac=args.minibatch_frac, + verbose=True, + ) blk = int(args.n_estimators / 100) ngb.fit(x_tr, y_tr) @@ -58,14 +62,29 @@ def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): for i, preds in enumerate(all_preds): if i % blk != 0: continue - plt.figure(figsize = (6, 3)) - plt.scatter(x_tr[:,1], y_tr, color = "black", marker = ".", alpha=0.5) - plt.plot(x_te[:,1], preds.loc, color = "black", linestyle = "-", linewidth=1) - plt.plot(x_te[:,1], preds.loc - 1.96 * preds.scale, color = "black", linestyle = "--", linewidth=0.3) - plt.plot(x_te[:,1], preds.loc + 1.96 * preds.scale, color = "black", linestyle = "--", linewidth=0.3) + plt.figure(figsize=(6, 3)) + plt.scatter(x_tr[:, 1], y_tr, color="black", marker=".", alpha=0.5) + plt.plot(x_te[:, 1], preds.loc, color="black", linestyle="-", linewidth=1) + plt.plot( + x_te[:, 1], + preds.loc - 1.96 * preds.scale, + color="black", + linestyle="--", + linewidth=0.3, + ) + plt.plot( + x_te[:, 1], + preds.loc + 1.96 * preds.scale, + color="black", + linestyle="--", + linewidth=0.3, + ) plt.ylim([-75, 75]) plt.axis("off") - plt.title("%s Gradient: %02d%% fit" % ("Natural" if args.natural else "Ordinary", i/blk)) + plt.title( + "%s Gradient: %02d%% fit" + % ("Natural" if args.natural else "Ordinary", i / blk) + ) plt.tight_layout() filenames.append("./figures/anim/toy%d.png" % i) @@ -75,9 +94,10 @@ def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): plt.savefig("./figures/anim/toy%d.pdf" % i) import imageio + images = [] for filename in filenames: images.append(imageio.imread(filename)) for _ in range(10): images.append(imageio.imread(filename)) - imageio.mimsave('./figures/toy.gif', images, fps=5) + imageio.mimsave("./figures/toy.gif", images, fps=5) diff --git a/figures/toy_single.py b/figures/toy_single.py index 7b3eca85..c2e424c1 100644 --- a/figures/toy_single.py +++ b/figures/toy_single.py @@ -11,7 +11,8 @@ np.random.seed(1) -default_knr_learner=lambda : KNR() +default_knr_learner = lambda: KNR() + def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): x = np.linspace(-bound, bound, n)[:, np.newaxis] @@ -35,14 +36,16 @@ def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): poly_transform = PolynomialFeatures(1) x_tr = poly_transform.fit_transform(x_tr) - ngb = NGBoost(Base=default_tree_learner, - Dist=Normal, - Score=MLE, - n_estimators=args.n_estimators, - learning_rate=args.lr, - natural_gradient=args.natural, - minibatch_frac=args.minibatch_frac, - verbose=True) + ngb = NGBoost( + Base=default_tree_learner, + Dist=Normal, + Score=MLE, + n_estimators=args.n_estimators, + learning_rate=args.lr, + natural_gradient=args.natural, + minibatch_frac=args.minibatch_frac, + verbose=True, + ) ngb.fit(x_tr, y_tr) @@ -54,11 +57,31 @@ def gen_data(n=50, bound=1, deg=3, beta=1, noise=0.9, intcpt=-1): all_preds = ngb.staged_pred_dist(x_te) preds = all_preds[-1] - plt.figure(figsize = (6, 3)) - plt.scatter(x_tr[:,1], y_tr, color = "black", marker = ".", alpha=0.5) - plt.plot(x_te[:,1], preds.loc, color = "black", linestyle = "-", linewidth=1, label="Predicted mean") - plt.plot(x_te[:,1], preds.loc - 1.96 * preds.scale, color = "black", linestyle = "--", linewidth=0.3, label="95\% prediction interval") - plt.plot(x_te[:,1], preds.loc + 1.96 * preds.scale, color = "black", linestyle = "--", linewidth=0.3) + plt.figure(figsize=(6, 3)) + plt.scatter(x_tr[:, 1], y_tr, color="black", marker=".", alpha=0.5) + plt.plot( + x_te[:, 1], + preds.loc, + color="black", + linestyle="-", + linewidth=1, + label="Predicted mean", + ) + plt.plot( + x_te[:, 1], + preds.loc - 1.96 * preds.scale, + color="black", + linestyle="--", + linewidth=0.3, + label="95\% prediction interval", + ) + plt.plot( + x_te[:, 1], + preds.loc + 1.96 * preds.scale, + color="black", + linestyle="--", + linewidth=0.3, + ) plt.ylim([-75, 75]) plt.xlabel("$x$") plt.ylabel("$y$") diff --git a/figures/vis_crps.py b/figures/vis_crps.py index a8e54592..11f18a0b 100644 --- a/figures/vis_crps.py +++ b/figures/vis_crps.py @@ -37,18 +37,34 @@ grads_y[i, j] = -g[1] crps[i, j] = crps_fn([loc[i, j], scale[i, j]]) - plt.figure(figsize = (8, 3)) + plt.figure(figsize=(8, 3)) plt.subplot(1, 2, 1) - plt.contourf(loc, scale, crps, cmap = mpl.cm.viridis, levels = 100) - plt.quiver(loc, scale, 0.07 * grads_x, 0.07 * grads_y, - color = "white", angles='xy', scale_units='xy', scale=1) + plt.contourf(loc, scale, crps, cmap=mpl.cm.viridis, levels=100) + plt.quiver( + loc, + scale, + 0.07 * grads_x, + 0.07 * grads_y, + color="white", + angles="xy", + scale_units="xy", + scale=1, + ) plt.xlabel("$\mu$") plt.ylabel("$\log\sigma$") plt.title("CRPS: gradients") plt.subplot(1, 2, 2) - plt.contourf(loc, scale, crps, cmap = mpl.cm.viridis, levels = 100) - plt.quiver(loc, scale, 0.07 * grads_metric_x, 0.07 * grads_metric_y, - color = "white", angles='xy', scale_units='xy', scale=1) + plt.contourf(loc, scale, crps, cmap=mpl.cm.viridis, levels=100) + plt.quiver( + loc, + scale, + 0.07 * grads_metric_x, + 0.07 * grads_metric_y, + color="white", + angles="xy", + scale_units="xy", + scale=1, + ) plt.title("CRPS: natural gradients") plt.xlabel("$\mu$") plt.ylabel("$\log\sigma$") diff --git a/figures/vis_mle.py b/figures/vis_mle.py index b8444d9c..46e60414 100644 --- a/figures/vis_mle.py +++ b/figures/vis_mle.py @@ -36,18 +36,34 @@ grads_y[i, j] = -g[1] nlls[i, j] = nll_fn([loc[i, j], scale[i, j]]) - plt.figure(figsize = (8, 3)) + plt.figure(figsize=(8, 3)) plt.subplot(1, 2, 1) - plt.contourf(loc, scale, nlls, cmap = mpl.cm.viridis, levels = 100) - plt.quiver(loc, scale, 0.07 * grads_x, 0.07 * grads_y, - color = "white", angles='xy', scale_units='xy', scale=1) + plt.contourf(loc, scale, nlls, cmap=mpl.cm.viridis, levels=100) + plt.quiver( + loc, + scale, + 0.07 * grads_x, + 0.07 * grads_y, + color="white", + angles="xy", + scale_units="xy", + scale=1, + ) plt.xlabel("$\mu$") plt.ylabel("$\log\sigma$") plt.title("MLE: gradients") plt.subplot(1, 2, 2) - plt.contourf(loc, scale, nlls, cmap = mpl.cm.viridis, levels = 100) - plt.quiver(loc, scale, 0.07 * grads_fisher_x, 0.07 * grads_fisher_y, - color = "white", angles='xy', scale_units='xy', scale=1) + plt.contourf(loc, scale, nlls, cmap=mpl.cm.viridis, levels=100) + plt.quiver( + loc, + scale, + 0.07 * grads_fisher_x, + 0.07 * grads_fisher_y, + color="white", + angles="xy", + scale_units="xy", + scale=1, + ) plt.title("MLE: natural gradients") plt.xlabel("$\mu$") plt.ylabel("$\log\sigma$") From 6c7adb184f607e5c4e7c3b085f124372a9356349 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:49:27 +0900 Subject: [PATCH 016/245] add pre-commit --- .github/workflows/pythonpackage.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 219f71fa..daa5de57 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -19,8 +19,11 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip + python -m pip install --upgrade pre-commit pip install -r requirements.txt pip install -e . + - name: Lint + run: pre-commit run --all-files - name: Lint with flake8 run: | pip install flake8 From 924e1a72192b8b2baba28c5778bc7a01c5732fee Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:51:33 +0900 Subject: [PATCH 017/245] init --- setup.cfg | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 setup.cfg diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..e69de29b From e5d59f868b170a44d572264552c5b49d26e3ee09 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:56:30 +0900 Subject: [PATCH 018/245] black default setting --- setup.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.cfg b/setup.cfg index e69de29b..2bcd70e3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -0,0 +1,2 @@ +[flake8] +max-line-length = 88 From 18448e9ce4f31b149c44cba675a6b42375993803 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 13:58:02 +0900 Subject: [PATCH 019/245] black and flake8 are incompatible --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 2bcd70e3..c2611f98 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,2 +1,3 @@ [flake8] max-line-length = 88 +ignore = E203, E501, W503 \ No newline at end of file From abc61790fee25249cb76f1e480648c0d736ade28 Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Tue, 18 Feb 2020 14:02:01 +0900 Subject: [PATCH 020/245] add dev tools --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index aa8c884c..c8b5ce77 100644 --- a/setup.py +++ b/setup.py @@ -22,5 +22,5 @@ "tqdm>=4.36.1", "lifelines>=0.22.8", ], - tests_require=["pytest"], + tests_require=["pytest", "pre-commit", "black"], ) From 0c51f1444c5c8bfa12e94cb96177caa730ad26df Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Wed, 19 Feb 2020 23:29:16 -0800 Subject: [PATCH 021/245] pickling for categorical dist ngboosts --- examples/vignette.ipynb | 131 ++++++++++++++++++++-------------------- ngboost/ngboost.py | 29 ++------- 2 files changed, 70 insertions(+), 90 deletions(-) diff --git a/examples/vignette.ipynb b/examples/vignette.ipynb index 4f8b9514..6227ba09 100644 --- a/examples/vignette.ipynb +++ b/examples/vignette.ipynb @@ -38,13 +38,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6374 val_loss=0.0000 scale=0.5000 norm=3.3851\n", - "[iter 100] loss=3.0993 val_loss=0.0000 scale=1.0000 norm=3.9331\n", - "[iter 200] loss=2.4672 val_loss=0.0000 scale=2.0000 norm=4.0413\n", - "[iter 300] loss=2.0335 val_loss=0.0000 scale=2.0000 norm=3.1635\n", - "[iter 400] loss=1.8247 val_loss=0.0000 scale=2.0000 norm=2.8134\n", - "Test MSE 17.10585841129959\n", - "Test NLL 4.800276135509374\n" + "[iter 0] loss=3.6231 val_loss=0.0000 scale=0.5000 norm=3.3059\n", + "[iter 100] loss=3.0349 val_loss=0.0000 scale=2.0000 norm=7.1655\n", + "[iter 200] loss=2.3596 val_loss=0.0000 scale=2.0000 norm=3.7977\n", + "[iter 300] loss=1.9685 val_loss=0.0000 scale=2.0000 norm=3.0467\n", + "[iter 400] loss=1.7957 val_loss=0.0000 scale=1.0000 norm=1.3911\n", + "Test MSE 11.751316258028782\n", + "Test NLL 3.7006980539890253\n" ] } ], @@ -86,8 +86,8 @@ { "data": { "text/plain": [ - "{'loc': array([14.63728515, 23.05560566, 24.81390559, 31.52559914, 30.86089205]),\n", - " 'scale': array([1.52221161, 1.2605293 , 1.48545931, 1.07927704, 1.76727756])}" + "{'loc': array([23.46378107, 16.37767307, 23.47872484, 33.74513435, 24.77121111]),\n", + " 'scale': array([1.28837356, 1.25869559, 1.03021179, 1.01968677, 1.01327948])}" ] }, "execution_count": 3, @@ -163,7 +163,7 @@ { "data": { "text/plain": [ - "array([16.68522196, 13.55225153, 18.4168269 , 15.01845474, 16.11015684])" + "array([32.03465906, 19.15818411, 19.30217489, 20.94209258, 18.99318666])" ] }, "execution_count": 5, @@ -183,7 +183,7 @@ { "data": { "text/plain": [ - "array([16.48812056, 13.35423192, 18.80807519, 14.29219904, 16.00448798])" + "array([22.28380823, 20.10027072, 17.55630199, 21.18983355, 18.11223638])" ] }, "execution_count": 6, @@ -203,7 +203,7 @@ { "data": { "text/plain": [ - "{'scale': array([16.48812056, 13.35423192, 18.80807519, 14.29219904, 16.00448798])}" + "{'scale': array([22.28380823, 20.10027072, 17.55630199, 21.18983355, 18.11223638])}" ] }, "execution_count": 7, @@ -238,11 +238,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=1.2751 val_loss=0.0000 scale=4.0000 norm=2.3854\n", - "[iter 100] loss=0.5998 val_loss=0.0000 scale=2.0000 norm=0.7419\n", - "[iter 200] loss=0.3415 val_loss=0.0000 scale=4.0000 norm=0.8437\n", - "[iter 300] loss=0.2072 val_loss=0.0000 scale=4.0000 norm=0.4554\n", - "[iter 400] loss=0.1142 val_loss=0.0000 scale=4.0000 norm=0.3329\n" + "[iter 0] loss=1.2578 val_loss=0.0000 scale=4.0000 norm=2.3885\n", + "[iter 100] loss=0.5902 val_loss=0.0000 scale=2.0000 norm=0.7520\n", + "[iter 200] loss=0.3591 val_loss=0.0000 scale=4.0000 norm=0.9354\n", + "[iter 300] loss=0.2541 val_loss=0.0000 scale=2.0000 norm=0.3104\n", + "[iter 400] loss=0.1479 val_loss=0.0000 scale=4.0000 norm=0.3567\n" ] } ], @@ -332,7 +332,7 @@ { "data": { "text/plain": [ - "array([1, 0, 1, 1, 1])" + "array([1, 1, 1, 1, 1])" ] }, "execution_count": 10, @@ -352,11 +352,11 @@ { "data": { "text/plain": [ - "array([[2.39367936e-01, 7.43731719e-01, 1.69003456e-02],\n", - " [9.84744138e-01, 1.47430731e-02, 5.12788852e-04],\n", - " [3.17987605e-03, 9.96593133e-01, 2.26990696e-04],\n", - " [3.17987605e-03, 9.96593133e-01, 2.26990696e-04],\n", - " [3.17987605e-03, 9.96593133e-01, 2.26990696e-04]])" + "array([[7.28228735e-04, 9.99260196e-01, 1.15752705e-05],\n", + " [7.28206439e-04, 9.99229602e-01, 4.21917010e-05],\n", + " [7.28207212e-04, 9.99230662e-01, 4.11305541e-05],\n", + " [7.28206439e-04, 9.99229602e-01, 4.21917010e-05],\n", + " [7.28206439e-04, 9.99229602e-01, 4.21917010e-05]])" ] }, "execution_count": 11, @@ -376,9 +376,10 @@ { "data": { "text/plain": [ - "{'p0': array([0.23936794, 0.98474414, 0.00317988, 0.00317988, 0.00317988]),\n", - " 'p1': array([0.74373172, 0.01474307, 0.99659313, 0.99659313, 0.99659313]),\n", - " 'p2': array([0.01690035, 0.00051279, 0.00022699, 0.00022699, 0.00022699])}" + "{'p0': array([0.00072823, 0.00072821, 0.00072821, 0.00072821, 0.00072821]),\n", + " 'p1': array([0.9992602 , 0.9992296 , 0.99923066, 0.9992296 , 0.9992296 ]),\n", + " 'p2': array([1.15752705e-05, 4.21917010e-05, 4.11305541e-05, 4.21917010e-05,\n", + " 4.21917010e-05])}" ] }, "execution_count": 12, @@ -425,7 +426,7 @@ " Score=, col_sample=1.0,\n", " learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,\n", " natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x10DB46D10, tol=0.0001,\n", + " random_state=RandomState(MT19937) at 0x119C48D10, tol=0.0001,\n", " verbose=False, verbose_eval=100)" ] }, @@ -475,7 +476,7 @@ " Score=, col_sample=1.0,\n", " learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,\n", " natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x10DB46D10, tol=0.0001,\n", + " random_state=RandomState(MT19937) at 0x119C48D10, tol=0.0001,\n", " verbose=False, verbose_eval=100)" ] }, @@ -515,7 +516,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6494 val_loss=0.0000 scale=0.5000 norm=3.3553\n" + "[iter 0] loss=3.5985 val_loss=0.0000 scale=0.5000 norm=3.2693\n" ] }, { @@ -533,7 +534,7 @@ " Score=, col_sample=0.5,\n", " learning_rate=0.01, minibatch_frac=0.5, n_estimators=100,\n", " natural_gradient=True,\n", - " random_state=RandomState(MT19937) at 0x10DB46D10, tol=0.0001,\n", + " random_state=RandomState(MT19937) at 0x119C48D10, tol=0.0001,\n", " verbose=True, verbose_eval=100)" ] }, @@ -600,7 +601,7 @@ { "data": { "text/plain": [ - "array([1, 0, 1, 1, 1])" + "array([1, 1, 1, 1, 1])" ] }, "execution_count": 17, @@ -621,9 +622,10 @@ { "data": { "text/plain": [ - "{'p0': array([0.24958925, 0.98504163, 0.00312272, 0.00312272, 0.00312272]),\n", - " 'p1': array([0.73118816, 0.01445569, 0.99665482, 0.99665482, 0.99665482]),\n", - " 'p2': array([0.01922259, 0.00050268, 0.00022247, 0.00022247, 0.00022247])}" + "{'p0': array([0.00085752, 0.00085748, 0.00085749, 0.00085748, 0.00085748]),\n", + " 'p1': array([0.99912896, 0.99909253, 0.99909379, 0.99909253, 0.99909253]),\n", + " 'p2': array([1.35206426e-05, 4.99850836e-05, 4.87279379e-05, 4.99850836e-05,\n", + " 4.99850836e-05])}" ] }, "execution_count": 18, @@ -652,12 +654,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6437 val_loss=3.6016 scale=0.5000 norm=3.3634\n", - "[iter 100] loss=3.0772 val_loss=3.1190 scale=1.0000 norm=3.7436\n", - "[iter 200] loss=2.4212 val_loss=2.6632 scale=2.0000 norm=3.9115\n", - "[iter 300] loss=1.9987 val_loss=2.7854 scale=2.0000 norm=3.0907\n", - "[iter 400] loss=1.8054 val_loss=3.1318 scale=1.0000 norm=1.3951\n", - "230\n" + "[iter 0] loss=3.6376 val_loss=3.6252 scale=0.5000 norm=3.3248\n", + "[iter 100] loss=3.0485 val_loss=3.1318 scale=1.0000 norm=3.5818\n", + "[iter 200] loss=2.3835 val_loss=2.6960 scale=2.0000 norm=3.8084\n", + "[iter 300] loss=1.9652 val_loss=3.0194 scale=2.0000 norm=2.9885\n", + "[iter 400] loss=1.7796 val_loss=3.6830 scale=2.0000 norm=2.6950\n", + "214\n" ] } ], @@ -691,11 +693,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6437 val_loss=3.6016 scale=0.5000 norm=3.3634\n", - "[iter 100] loss=3.0772 val_loss=3.1192 scale=1.0000 norm=3.7436\n", - "[iter 200] loss=2.4212 val_loss=2.6636 scale=2.0000 norm=3.9115\n", + "[iter 0] loss=3.6376 val_loss=3.6252 scale=0.5000 norm=3.3248\n", + "[iter 100] loss=3.0485 val_loss=3.1318 scale=1.0000 norm=3.5818\n", + "[iter 200] loss=2.3835 val_loss=2.6970 scale=2.0000 norm=3.8084\n", "== Early stopping achieved.\n", - "== Best iteration / VAL 219 (val_loss=2.6407)\n" + "== Best iteration / VAL 210 (val_loss=2.6914)\n" ] } ], @@ -798,7 +800,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -807,21 +809,9 @@ "Text(0.5, 1.0, 'scale param')" ] }, - "execution_count": 30, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" } ], "source": [ @@ -851,7 +841,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -894,7 +884,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -945,11 +935,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "[iter 0] loss=3.6437 val_loss=0.0000 scale=0.5000 norm=3.3634\n", - "[iter 100] loss=3.0772 val_loss=0.0000 scale=1.0000 norm=3.7436\n", - "[iter 200] loss=2.4212 val_loss=0.0000 scale=2.0000 norm=3.9115\n", - "[iter 300] loss=1.9987 val_loss=0.0000 scale=2.0000 norm=3.0907\n", - "[iter 400] loss=1.8054 val_loss=0.0000 scale=1.0000 norm=1.3951\n" + "[iter 0] loss=3.6376 val_loss=0.0000 scale=0.5000 norm=3.3248\n", + "[iter 100] loss=3.0486 val_loss=0.0000 scale=1.0000 norm=3.5818\n", + "[iter 200] loss=2.3836 val_loss=0.0000 scale=2.0000 norm=3.8084\n", + "[iter 300] loss=1.9656 val_loss=0.0000 scale=2.0000 norm=2.9886\n", + "[iter 400] loss=1.7766 val_loss=0.0000 scale=1.0000 norm=1.3468\n" ] } ], @@ -987,8 +977,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Test MSE 4.390683115249617\n", - "Test NLL 2.067375393986923\n" + "Test MSE 4.535248105889316\n", + "Test NLL 2.40033727032015\n" ] } ], @@ -1004,6 +994,13 @@ "test_NLL = -Y_dists.logpdf(Y_test).mean()\n", "print('Test NLL', test_NLL)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/ngboost/ngboost.py b/ngboost/ngboost.py index ebb16b5c..6d12313e 100644 --- a/ngboost/ngboost.py +++ b/ngboost/ngboost.py @@ -2,7 +2,7 @@ import scipy as sp from ngboost.scores import LogScore -from ngboost.distns import Normal +from ngboost.distns import Normal, k_categorical from ngboost.manifold import manifold from ngboost.learners import default_tree_learner, default_linear_learner @@ -12,7 +12,6 @@ # import pdb - class NGBoost(object): """ Constructor for all NGBoost models. @@ -73,33 +72,17 @@ def __getstate__(self): state = self.__dict__.copy() # Remove the unpicklable entries. del state["Manifold"] + if self.Dist.__name__ == "Categorical": + del state["Dist"] + state["K"] = self.Dist.n_params + 1 return state def __setstate__(self, state_dict): + if "K" in state_dict.keys(): + state_dict["Dist"] = k_categorical(state_dict["K"]) state_dict["Manifold"] = manifold(state_dict["Score"], state_dict["Dist"]) self.__dict__ = state_dict - def __getnewargs_ex__(self): - # The method must return a pair (args, kwargs) where args is a tuple of positional arguments and - # kwargs a dictionary of named arguments for constructing the object. - return ( - tuple(), - { - "Dist": self.Dist, - "Score": self.Score, - "Base": self.Base, - "natural_gradient": self.natural_gradient, - "n_estimators": self.n_estimators, - "learning_rate": self.learning_rate, - "minibatch_frac": self.minibatch_frac, - "col_sample": self.col_sample, - "verbose": self.verbose, - "verbose_eval": self.verbose_eval, - "tol": self.tol, - "random_state": self.random_state, - }, - ) - def fit_init_params_to_marginal(self, Y, sample_weight=None, iters=1000): self.init_params = self.Manifold.fit( Y From 0fa916d948e12141cbd87474507b0211919bad5f Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Wed, 19 Feb 2020 23:33:21 -0800 Subject: [PATCH 022/245] Update pythonpackage.yml --- .github/workflows/pythonpackage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index daa5de57..0085309c 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -23,7 +23,7 @@ jobs: pip install -r requirements.txt pip install -e . - name: Lint - run: pre-commit run --all-files + run: pre-commit run --all-files - name: Lint with flake8 run: | pip install flake8 From 4252c46a1f7e51fb49cd33d0d6324d70fdf59707 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Wed, 19 Feb 2020 23:44:02 -0800 Subject: [PATCH 023/245] force push From 46e3f3f3221871e4f632f4d3791af46fc5815ede Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Wed, 19 Feb 2020 23:52:11 -0800 Subject: [PATCH 024/245] force push From 13e247e525ca2f1b7e29577c6a363d755f221c3d Mon Sep 17 00:00:00 2001 From: daiki katsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Thu, 20 Feb 2020 18:39:35 +0900 Subject: [PATCH 025/245] Update test_basic.py --- ngboost/tests/test_basic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/ngboost/tests/test_basic.py b/ngboost/tests/test_basic.py index d02738c1..1389ab5e 100644 --- a/ngboost/tests/test_basic.py +++ b/ngboost/tests/test_basic.py @@ -6,8 +6,6 @@ from ngboost import NGBClassifier, NGBRegressor from ngboost.distns import Bernoulli, Normal -np.random.seed(1) - def test_classification(): from sklearn.datasets import load_breast_cancer from sklearn.metrics import roc_auc_score, log_loss From 6efadb10101a1a2af81a21f1bee73cf6b42705ed Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 20 Feb 2020 09:27:02 -0800 Subject: [PATCH 026/245] force push --- ngboost/ngboost.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ngboost/ngboost.py b/ngboost/ngboost.py index 6d12313e..98f764d5 100644 --- a/ngboost/ngboost.py +++ b/ngboost/ngboost.py @@ -12,6 +12,7 @@ # import pdb + class NGBoost(object): """ Constructor for all NGBoost models. @@ -73,7 +74,7 @@ def __getstate__(self): # Remove the unpicklable entries. del state["Manifold"] if self.Dist.__name__ == "Categorical": - del state["Dist"] + del state["Dist"] state["K"] = self.Dist.n_params + 1 return state From 7ac7e149978676b4e0747720623bc8396de61cdc Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 20 Feb 2020 09:27:39 -0800 Subject: [PATCH 027/245] force push From e525aca0e5c18a94c69ebcbaecd278e22abce5e5 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Thu, 20 Feb 2020 09:29:29 -0800 Subject: [PATCH 028/245] force push --- ngboost/tests/test_basic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ngboost/tests/test_basic.py b/ngboost/tests/test_basic.py index fa1c9d4c..1a465069 100644 --- a/ngboost/tests/test_basic.py +++ b/ngboost/tests/test_basic.py @@ -6,6 +6,7 @@ from ngboost import NGBClassifier, NGBRegressor from ngboost.distns import Bernoulli, Normal + def test_classification(): from sklearn.datasets import load_breast_cancer from sklearn.metrics import roc_auc_score, log_loss From f3ca78d670472a8c4cef7d7c13c00e985dd9c0ea Mon Sep 17 00:00:00 2001 From: "kot.yuhara" Date: Fri, 21 Feb 2020 14:53:29 +0900 Subject: [PATCH 029/245] remove pre-commit run --- .github/workflows/pythonpackage.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 0085309c..c27e9f56 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -22,8 +22,6 @@ jobs: python -m pip install --upgrade pre-commit pip install -r requirements.txt pip install -e . - - name: Lint - run: pre-commit run --all-files - name: Lint with flake8 run: | pip install flake8 From 73529a9714cee02afae0fed5decd917c45bb4816 Mon Sep 17 00:00:00 2001 From: daiki katsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Fri, 21 Feb 2020 20:20:18 +0900 Subject: [PATCH 030/245] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a3a6f97..c1e30700 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ ![Python package](https://github.com/stanfordmlgroup/ngboost/workflows/Python%20package/badge.svg) [![Github License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) # NGBoost: Natural Gradient Boosting for Probabilistic Prediction @@ -47,4 +48,4 @@ Apache License 2.0 (see [LICENSE](https://github.com/stanfordmlgroup/ngboost/blo ## Reference Tony Duan, Anand Avati, Daisy Yi Ding, Khanh K. Thai, Sanjay Basu, Andrew Y. Ng, Alejandro Schuler. 2019. NGBoost: Natural Gradient Boosting for Probabilistic Prediction. -[arXiv](https://arxiv.org/abs/1910.03225) \ No newline at end of file +[arXiv](https://arxiv.org/abs/1910.03225) From b887b4d34fe5e6679f7fa48955c16de12e78487f Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Fri, 21 Feb 2020 11:55:28 -0800 Subject: [PATCH 031/245] added isort --- .pre-commit-config.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 99ca2dde..aed9b7e9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,3 +5,7 @@ repos: rev: stable hooks: - id: black + - repo: https://github.com/pre-commit/mirrors-isort + rev: '' # Use the revision sha / tag you want to point at + hooks: + - id: isort From 9e57b7d79d4c9944a11a0198188dcd6ae3f4cf81 Mon Sep 17 00:00:00 2001 From: daikikatsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Sat, 22 Feb 2020 18:37:29 +0900 Subject: [PATCH 032/245] Add Pipfile --- Pipfile | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Pipfile diff --git a/Pipfile b/Pipfile new file mode 100644 index 00000000..43d60fd3 --- /dev/null +++ b/Pipfile @@ -0,0 +1,32 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] +flake8 = "*" +pytest = "*" + +[packages] +absl-py = "==0.8.1" +autograd = "==1.3" +autograd-gamma = "==0.4.1" +fastcache = "==1.1.0" +future = "==0.17.1" +joblib = "==0.14.0" +kiwisolver = "==1.1.0" +lifelines = "==0.23.4" +matplotlib = "==3.1.1" +numpy = "==1.17.2" +opt-einsum = "==3.1.0" +pandas = "==0.25.1" +protobuf = "==3.10.0" +pyparsing = "==2.4.2" +python-dateutil = "==2.8.0" +pytz = "==2019.3" +scikit-learn = "==0.21.3" +scipy = "==1.3.1" +six = "==1.12.0" +sklearn = "==0.0" +tqdm = "==4.36.1" +Cycler = "==0.10.0" From 306968451b4512b968fb19d895ff0c7cfedb094c Mon Sep 17 00:00:00 2001 From: daikikatsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Sat, 22 Feb 2020 18:38:00 +0900 Subject: [PATCH 033/245] Add Pipfile.lock --- Pipfile.lock | 420 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100644 Pipfile.lock diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..5c4930b7 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,420 @@ +{ + "_meta": { + "hash": { + "sha256": "b6dcda2036c787b60ff4f8e19987bc57f55125174b440a540c11538501ebf08d" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "absl-py": { + "hashes": [ + "sha256:d9129186431e150d7fe455f1cb1ecbb92bb5dba9da9bc3ef7b012d98c4db2526" + ], + "index": "pypi", + "version": "==0.8.1" + }, + "autograd": { + "hashes": [ + "sha256:a15d147577e10de037de3740ca93bfa3b5a7cdfbc34cfb9105429c3580a33ec4" + ], + "index": "pypi", + "version": "==1.3" + }, + "autograd-gamma": { + "hashes": [ + "sha256:3b4349cb415bd6e28dd2fac5055e34de1b6c87fe711757a0e42a84bd650fba35", + "sha256:99864819e3fe8423b8cb17da64a161854949b9a126ce409538d6b0f8007b1c3c", + "sha256:e15682e607c8ae856cac5cd95919f483861a864e2d3fbe0125d2446ee1cea92b" + ], + "index": "pypi", + "version": "==0.4.1" + }, + "cycler": { + "hashes": [ + "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d", + "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8" + ], + "index": "pypi", + "version": "==0.10.0" + }, + "fastcache": { + "hashes": [ + "sha256:6de1b16e70335b7bde266707eb401a3aaec220fb66c5d13b02abf0eab8be782b" + ], + "index": "pypi", + "version": "==1.1.0" + }, + "future": { + "hashes": [ + "sha256:67045236dcfd6816dc439556d009594abf643e5eb48992e36beac09c2ca659b8" + ], + "index": "pypi", + "version": "==0.17.1" + }, + "joblib": { + "hashes": [ + "sha256:006108c7576b3eb6c5b27761ddbf188eb6e6347696325ab2027ea1ee9a4b922d", + "sha256:6fcc57aacb4e89451fd449e9412687c51817c3f48662c3d8f38ba3f8a0a193ff" + ], + "index": "pypi", + "version": "==0.14.0" + }, + "kiwisolver": { + "hashes": [ + "sha256:05b5b061e09f60f56244adc885c4a7867da25ca387376b02c1efc29cc16bcd0f", + "sha256:210d8c39d01758d76c2b9a693567e1657ec661229bc32eac30761fa79b2474b0", + "sha256:26f4fbd6f5e1dabff70a9ba0d2c4bd30761086454aa30dddc5b52764ee4852b7", + "sha256:3b15d56a9cd40c52d7ab763ff0bc700edbb4e1a298dc43715ecccd605002cf11", + "sha256:3b2378ad387f49cbb328205bda569b9f87288d6bc1bf4cd683c34523a2341efe", + "sha256:400599c0fe58d21522cae0e8b22318e09d9729451b17ee61ba8e1e7c0346565c", + "sha256:47b8cb81a7d18dbaf4fed6a61c3cecdb5adec7b4ac292bddb0d016d57e8507d5", + "sha256:53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75", + "sha256:58e626e1f7dfbb620d08d457325a4cdac65d1809680009f46bf41eaf74ad0187", + "sha256:5a52e1b006bfa5be04fe4debbcdd2688432a9af4b207a3f429c74ad625022641", + "sha256:5c7ca4e449ac9f99b3b9d4693debb1d6d237d1542dd6a56b3305fe8a9620f883", + "sha256:682e54f0ce8f45981878756d7203fd01e188cc6c8b2c5e2cf03675390b4534d5", + "sha256:76275ee077772c8dde04fb6c5bc24b91af1bb3e7f4816fd1852f1495a64dad93", + "sha256:79bfb2f0bd7cbf9ea256612c9523367e5ec51d7cd616ae20ca2c90f575d839a2", + "sha256:7f4dd50874177d2bb060d74769210f3bce1af87a8c7cf5b37d032ebf94f0aca3", + "sha256:8944a16020c07b682df861207b7e0efcd2f46c7488619cb55f65882279119389", + "sha256:8aa7009437640beb2768bfd06da049bad0df85f47ff18426261acecd1cf00897", + "sha256:9105ce82dcc32c73eb53a04c869b6a4bc756b43e4385f76ea7943e827f529e4d", + "sha256:933df612c453928f1c6faa9236161a1d999a26cd40abf1dc5d7ebbc6dbfb8fca", + "sha256:939f36f21a8c571686eb491acfffa9c7f1ac345087281b412d63ea39ca14ec4a", + "sha256:9491578147849b93e70d7c1d23cb1229458f71fc79c51d52dce0809b2ca44eea", + "sha256:9733b7f64bd9f807832d673355f79703f81f0b3e52bfce420fc00d8cb28c6a6c", + "sha256:a02f6c3e229d0b7220bd74600e9351e18bc0c361b05f29adae0d10599ae0e326", + "sha256:a0c0a9f06872330d0dd31b45607197caab3c22777600e88031bfe66799e70bb0", + "sha256:aa716b9122307c50686356cfb47bfbc66541868078d0c801341df31dca1232a9", + "sha256:acc4df99308111585121db217681f1ce0eecb48d3a828a2f9bbf9773f4937e9e", + "sha256:b64916959e4ae0ac78af7c3e8cef4becee0c0e9694ad477b4c6b3a536de6a544", + "sha256:d22702cadb86b6fcba0e6b907d9f84a312db9cd6934ee728144ce3018e715ee1", + "sha256:d3fcf0819dc3fea58be1fd1ca390851bdb719a549850e708ed858503ff25d995", + "sha256:d52e3b1868a4e8fd18b5cb15055c76820df514e26aa84cc02f593d99fef6707f", + "sha256:db1a5d3cc4ae943d674718d6c47d2d82488ddd94b93b9e12d24aabdbfe48caee", + "sha256:e3a21a720791712ed721c7b95d433e036134de6f18c77dbe96119eaf7aa08004", + "sha256:e8bf074363ce2babeb4764d94f8e65efd22e6a7c74860a4f05a6947afc020ff2", + "sha256:f16814a4a96dc04bf1da7d53ee8d5b1d6decfc1a92a63349bb15d37b6a263dd9", + "sha256:f2b22153870ca5cf2ab9c940d7bc38e8e9089fa0f7e5856ea195e1cf4ff43d5a", + "sha256:f790f8b3dff3d53453de6a7b7ddd173d2e020fb160baff578d578065b108a05f", + "sha256:fe51b79da0062f8e9d49ed0182a626a7dc7a0cbca0328f612c6ee5e4711c81e4" + ], + "index": "pypi", + "version": "==1.1.0" + }, + "lifelines": { + "hashes": [ + "sha256:44f7c35152c546e5744fc778a3aa2763f33575e3c1cc3214642681e69c4fd997", + "sha256:9881c669d6c60387dceaf66bc49c09d02a7088f82a4b93d453e0f1260537d173", + "sha256:d92f0a3ae5e9d2d232cc09160e4262648136c12a42437cbf5c8f678076694cd8" + ], + "index": "pypi", + "version": "==0.23.4" + }, + "matplotlib": { + "hashes": [ + "sha256:1febd22afe1489b13c6749ea059d392c03261b2950d1d45c17e3aed812080c93", + "sha256:31a30d03f39528c79f3a592857be62a08595dec4ac034978ecd0f814fa0eec2d", + "sha256:4442ce720907f67a79d45de9ada47be81ce17e6c2f448b3c64765af93f6829c9", + "sha256:796edbd1182cbffa7e1e7a97f1e141f875a8501ba8dd834269ae3cd45a8c976f", + "sha256:934e6243df7165aad097572abf5b6003c77c9b6c480c3c4de6f2ef1b5fdd4ec0", + "sha256:bab9d848dbf1517bc58d1f486772e99919b19efef5dd8596d4b26f9f5ee08b6b", + "sha256:c1fe1e6cdaa53f11f088b7470c2056c0df7d80ee4858dadf6cbe433fcba4323b", + "sha256:e5b8aeca9276a3a988caebe9f08366ed519fff98f77c6df5b64d7603d0e42e36", + "sha256:ec6bd0a6a58df3628ff269978f4a4b924a0d371ad8ce1f8e2b635b99e482877a" + ], + "index": "pypi", + "version": "==3.1.1" + }, + "numpy": { + "hashes": [ + "sha256:05dbfe72684cc14b92568de1bc1f41e5f62b00f714afc9adee42f6311738091f", + "sha256:0d82cb7271a577529d07bbb05cb58675f2deb09772175fab96dc8de025d8ac05", + "sha256:10132aa1fef99adc85a905d82e8497a580f83739837d7cbd234649f2e9b9dc58", + "sha256:12322df2e21f033a60c80319c25011194cd2a21294cc66fee0908aeae2c27832", + "sha256:16f19b3aa775dddc9814e02a46b8e6ae6a54ed8cf143962b4e53f0471dbd7b16", + "sha256:3d0b0989dd2d066db006158de7220802899a1e5c8cf622abe2d0bd158fd01c2c", + "sha256:438a3f0e7b681642898fd7993d38e2bf140a2d1eafaf3e89bb626db7f50db355", + "sha256:5fd214f482ab53f2cea57414c5fb3e58895b17df6e6f5bca5be6a0bb6aea23bb", + "sha256:73615d3edc84dd7c4aeb212fa3748fb83217e00d201875a47327f55363cef2df", + "sha256:7bd355ad7496f4ce1d235e9814ec81ee3d28308d591c067ce92e49f745ba2c2f", + "sha256:7d077f2976b8f3de08a0dcf5d72083f4af5411e8fddacd662aae27baa2601196", + "sha256:a4092682778dc48093e8bda8d26ee8360153e2047826f95a3f5eae09f0ae3abf", + "sha256:b458de8624c9f6034af492372eb2fee41a8e605f03f4732f43fc099e227858b2", + "sha256:e70fc8ff03a961f13363c2c95ef8285e0cf6a720f8271836f852cc0fa64e97c8", + "sha256:ee8e9d7cad5fe6dde50ede0d2e978d81eafeaa6233fb0b8719f60214cf226578", + "sha256:f4a4f6aba148858a5a5d546a99280f71f5ee6ec8182a7d195af1a914195b21a2" + ], + "index": "pypi", + "version": "==1.17.2" + }, + "opt-einsum": { + "hashes": [ + "sha256:edfada4b1d0b3b782ace8bc14e80618ff629abf53143e1e6bbf9bd00b11ece77" + ], + "index": "pypi", + "version": "==3.1.0" + }, + "pandas": { + "hashes": [ + "sha256:18d91a9199d1dfaa01ad645f7540370ba630bdcef09daaf9edf45b4b1bca0232", + "sha256:3f26e5da310a0c0b83ea50da1fd397de2640b02b424aa69be7e0784228f656c9", + "sha256:4182e32f4456d2c64619e97c58571fa5ca0993d1e8c2d9ca44916185e1726e15", + "sha256:426e590e2eb0e60f765271d668a30cf38b582eaae5ec9b31229c8c3c10c5bc21", + "sha256:5eb934a8f0dc358f0e0cdf314072286bbac74e4c124b64371395e94644d5d919", + "sha256:717928808043d3ea55b9bcde636d4a52d2236c246f6df464163a66ff59980ad8", + "sha256:8145f97c5ed71827a6ec98ceaef35afed1377e2d19c4078f324d209ff253ecb5", + "sha256:8744c84c914dcc59cbbb2943b32b7664df1039d99e834e1034a3372acb89ea4d", + "sha256:c1ac1d9590d0c9314ebf01591bd40d4c03d710bfc84a3889e5263c97d7891dee", + "sha256:cb2e197b7b0687becb026b84d3c242482f20cbb29a9981e43604eb67576da9f6", + "sha256:d4001b71ad2c9b84ff18b182cea22b7b6cbf624216da3ea06fb7af28d1f93165", + "sha256:d8930772adccb2882989ab1493fa74bd87d47c8ac7417f5dd3dd834ba8c24dc9", + "sha256:dfbb0173ee2399bc4ed3caf2d236e5c0092f948aafd0a15fbe4a0e77ee61a958", + "sha256:eebfbba048f4fa8ac711b22c78516e16ff8117d05a580e7eeef6b0c2be554c18", + "sha256:f1b21bc5cf3dbea53d33615d1ead892dfdae9d7052fa8898083bec88be20dcd2" + ], + "index": "pypi", + "version": "==0.25.1" + }, + "protobuf": { + "hashes": [ + "sha256:125713564d8cfed7610e52444c9769b8dcb0b55e25cc7841f2290ee7bc86636f", + "sha256:1accdb7a47e51503be64d9a57543964ba674edac103215576399d2d0e34eac77", + "sha256:27003d12d4f68e3cbea9eb67427cab3bfddd47ff90670cb367fcd7a3a89b9657", + "sha256:3264f3c431a631b0b31e9db2ae8c927b79fc1a7b1b06b31e8e5bcf2af91fe896", + "sha256:3c5ab0f5c71ca5af27143e60613729e3488bb45f6d3f143dc918a20af8bab0bf", + "sha256:45dcf8758873e3f69feab075e5f3177270739f146255225474ee0b90429adef6", + "sha256:56a77d61a91186cc5676d8e11b36a5feb513873e4ae88d2ee5cf530d52bbcd3b", + "sha256:5984e4947bbcef5bd849d6244aec507d31786f2dd3344139adc1489fb403b300", + "sha256:6b0441da73796dd00821763bb4119674eaf252776beb50ae3883bed179a60b2a", + "sha256:6f6677c5ade94d4fe75a912926d6796d5c71a2a90c2aeefe0d6f211d75c74789", + "sha256:84a825a9418d7196e2acc48f8746cf1ee75877ed2f30433ab92a133f3eaf8fbe", + "sha256:b842c34fe043ccf78b4a6cf1019d7b80113707d68c88842d061fa2b8fb6ddedc", + "sha256:ca33d2f09dae149a1dcf942d2d825ebb06343b77b437198c9e2ef115cf5d5bc1", + "sha256:db83b5c12c0cd30150bb568e6feb2435c49ce4e68fe2d7b903113f0e221e58fe", + "sha256:f50f3b1c5c1c1334ca7ce9cad5992f098f460ffd6388a3cabad10b66c2006b09", + "sha256:f99f127909731cafb841c52f9216e447d3e4afb99b17bebfad327a75aee206de" + ], + "index": "pypi", + "version": "==3.10.0" + }, + "pyparsing": { + "hashes": [ + "sha256:6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80", + "sha256:d9338df12903bbf5d65a0e4e87c2161968b10d2e489652bb47001d82a9b028b4" + ], + "index": "pypi", + "version": "==2.4.2" + }, + "python-dateutil": { + "hashes": [ + "sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", + "sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e" + ], + "index": "pypi", + "version": "==2.8.0" + }, + "pytz": { + "hashes": [ + "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", + "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be" + ], + "index": "pypi", + "version": "==2019.3" + }, + "scikit-learn": { + "hashes": [ + "sha256:1ac81293d261747c25ea5a0ee8cd2bb1f3b5ba9ec05421a7f9f0feb4eb7c4116", + "sha256:289361cf003d90b007f5066b27fcddc2d71324c82f1c88e316fedacb0dfdd516", + "sha256:3a14d0abd4281fc3fd2149c486c3ec7cedad848b8d5f7b6f61522029d65a29f8", + "sha256:5083a5e50d9d54548e4ada829598ae63a05651dd2bb319f821ffd9e8388384a6", + "sha256:777cdd5c077b7ca9cb381396c81990cf41d2fa8350760d3cad3b4c460a7db644", + "sha256:8bf2ff63da820d09b96b18e88f9625228457bff8df4618f6b087e12442ef9e15", + "sha256:8d319b71c449627d178f21c57614e21747e54bb3fc9602b6f42906c3931aa320", + "sha256:928050b65781fea9542dfe9bfe02d8c4f5530baa8472ec60782ea77347d2c836", + "sha256:92c903613ff50e22aa95d589f9fff5deb6f34e79f7f21f609680087f137bb524", + "sha256:ae322235def5ce8fae645b439e332e6f25d34bb90d6a6c8e261f17eb476457b7", + "sha256:c1cd6b29eb1fd1cc672ac5e4a8be5f6ea936d094a3dc659ada0746d6fac750b1", + "sha256:c41a6e2685d06bcdb0d26533af2540f54884d40db7e48baed6a5bcbf1a7cc642", + "sha256:d07fcb0c0acbc043faa0e7cf4d2037f71193de3fb04fb8ed5c259b089af1cf5c", + "sha256:d146d5443cda0a41f74276e42faf8c7f283fef49e8a853b832885239ef544e05", + "sha256:eb2b7bed0a26ba5ce3700e15938b28a4f4513578d3e54a2156c29df19ac5fd01", + "sha256:eb9b8ebf59eddd8b96366428238ab27d05a19e89c5516ce294abc35cea75d003" + ], + "index": "pypi", + "version": "==0.21.3" + }, + "scipy": { + "hashes": [ + "sha256:0baa64bf42592032f6f6445a07144e355ca876b177f47ad8d0612901c9375bef", + "sha256:243b04730d7223d2b844bda9500310eecc9eda0cba9ceaf0cde1839f8287dfa8", + "sha256:2643cfb46d97b7797d1dbdb6f3c23fe3402904e3c90e6facfe6a9b98d808c1b5", + "sha256:396eb4cdad421f846a1498299474f0a3752921229388f91f60dc3eda55a00488", + "sha256:3ae3692616975d3c10aca6d574d6b4ff95568768d4525f76222fb60f142075b9", + "sha256:435d19f80b4dcf67dc090cc04fde2c5c8a70b3372e64f6a9c58c5b806abfa5a8", + "sha256:46a5e55850cfe02332998b3aef481d33f1efee1960fe6cfee0202c7dd6fc21ab", + "sha256:75b513c462e58eeca82b22fc00f0d1875a37b12913eee9d979233349fce5c8b2", + "sha256:7ccfa44a08226825126c4ef0027aa46a38c928a10f0a8a8483c80dd9f9a0ad44", + "sha256:89dd6a6d329e3f693d1204d5562dd63af0fd7a17854ced17f9cbc37d5b853c8d", + "sha256:a81da2fe32f4eab8b60d56ad43e44d93d392da228a77e229e59b51508a00299c", + "sha256:a9d606d11eb2eec7ef893eb825017fbb6eef1e1d0b98a5b7fc11446ebeb2b9b1", + "sha256:ac37eb652248e2d7cbbfd89619dce5ecfd27d657e714ed049d82f19b162e8d45", + "sha256:cbc0611699e420774e945f6a4e2830f7ca2b3ee3483fca1aa659100049487dd5", + "sha256:d02d813ec9958ed63b390ded463163685af6025cb2e9a226ec2c477df90c6957", + "sha256:dd3b52e00f93fd1c86f2d78243dfb0d02743c94dd1d34ffea10055438e63b99d" + ], + "index": "pypi", + "version": "==1.3.1" + }, + "six": { + "hashes": [ + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" + ], + "index": "pypi", + "version": "==1.12.0" + }, + "sklearn": { + "hashes": [ + "sha256:e23001573aa194b834122d2b9562459bf5ae494a2d59ca6b8aa22c85a44c0e31" + ], + "index": "pypi", + "version": "==0.0" + }, + "tqdm": { + "hashes": [ + "sha256:abc25d0ce2397d070ef07d8c7e706aede7920da163c64997585d42d3537ece3d", + "sha256:dd3fcca8488bb1d416aa7469d2f277902f26260c45aa86b667b074cd44b3b115" + ], + "index": "pypi", + "version": "==4.36.1" + } + }, + "develop": { + "attrs": { + "hashes": [ + "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", + "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" + ], + "version": "==19.3.0" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "flake8": { + "hashes": [ + "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", + "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + ], + "index": "pypi", + "version": "==3.7.9" + }, + "importlib-metadata": { + "hashes": [ + "sha256:06f5b3a99029c7134207dd882428a66992a9de2bef7c2b699b5641f9886c3302", + "sha256:b97607a1a18a5100839aec1dc26a1ea17ee0d93b20b0f008d80a5a050afb200b" + ], + "markers": "python_version < '3.8'", + "version": "==1.5.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "more-itertools": { + "hashes": [ + "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", + "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + ], + "version": "==8.2.0" + }, + "packaging": { + "hashes": [ + "sha256:170748228214b70b672c581a3dd610ee51f733018650740e98c7df862a583f73", + "sha256:e665345f9eef0c621aa0bf2f8d78cf6d21904eef16a93f020240b704a57f1334" + ], + "version": "==20.1" + }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], + "version": "==0.13.1" + }, + "py": { + "hashes": [ + "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", + "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + ], + "version": "==1.8.1" + }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pyparsing": { + "hashes": [ + "sha256:6f98a7b9397e206d78cc01df10131398f1c8b8510a2f4d97d9abd82e1aacdd80", + "sha256:d9338df12903bbf5d65a0e4e87c2161968b10d2e489652bb47001d82a9b028b4" + ], + "index": "pypi", + "version": "==2.4.2" + }, + "pytest": { + "hashes": [ + "sha256:0d5fe9189a148acc3c3eb2ac8e1ac0742cb7618c084f3d228baaec0c254b318d", + "sha256:ff615c761e25eb25df19edddc0b970302d2a9091fbce0e7213298d85fb61fef6" + ], + "index": "pypi", + "version": "==5.3.5" + }, + "six": { + "hashes": [ + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" + ], + "index": "pypi", + "version": "==1.12.0" + }, + "wcwidth": { + "hashes": [ + "sha256:8fd29383f539be45b20bd4df0dc29c20ba48654a41e661925e612311e9f3c603", + "sha256:f28b3e8a6483e5d49e7f8949ac1a78314e740333ae305b4ba5defd3e74fb37a8" + ], + "version": "==0.1.8" + }, + "zipp": { + "hashes": [ + "sha256:12248a63bbdf7548f89cb4c7cda4681e537031eda29c02ea29674bc6854460c2", + "sha256:7c0f8e91abc0dc07a5068f315c52cb30c66bfbc581e5b50704c8a2f6ebae794a" + ], + "version": "==3.0.0" + } + } +} From 8be309ec87885dbd0cd41210f77a5817a5307017 Mon Sep 17 00:00:00 2001 From: daiki katsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Sat, 22 Feb 2020 18:39:08 +0900 Subject: [PATCH 034/245] Update pythonpackage.yml --- .github/workflows/pythonpackage.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index c27e9f56..5bfa1ca2 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -19,17 +19,18 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install --upgrade pre-commit - pip install -r requirements.txt - pip install -e . + pip install pipenv + #pipenv sync + pipenv sync --dev + pipenv install -e . + #pipenv graph - name: Lint with flake8 run: | - pip install flake8 + #pipenv sync --dev # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + pipenv run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + pipenv run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | - pip install pytest - pytest + pipenv run pytest From 11e45c788e285945cfafea856e1045bd3d3c9d70 Mon Sep 17 00:00:00 2001 From: daiki katsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Sat, 22 Feb 2020 18:54:23 +0900 Subject: [PATCH 035/245] Update pythonpackage.yml --- .github/workflows/pythonpackage.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 5bfa1ca2..071e88f3 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -19,14 +19,12 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install pipenv - #pipenv sync + python -m pip install --upgrade pre-commit + pipenv sync pipenv sync --dev pipenv install -e . - #pipenv graph - name: Lint with flake8 run: | - #pipenv sync --dev # stop the build if there are Python syntax errors or undefined names pipenv run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide From d5ac0ca6ce9a749de8c01e5d33a47dcf2725aba4 Mon Sep 17 00:00:00 2001 From: daiki katsuragawa <50144563+daikikatsuragawa@users.noreply.github.com> Date: Sat, 22 Feb 2020 19:01:26 +0900 Subject: [PATCH 036/245] Update pythonpackage.yml --- .github/workflows/pythonpackage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 071e88f3..57ad1167 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -20,6 +20,7 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install --upgrade pre-commit + pip install pipenv pipenv sync pipenv sync --dev pipenv install -e . From 409930a2055e3fc8e776a69ab1af041de1f9e243 Mon Sep 17 00:00:00 2001 From: Alejandro Schuler Date: Sat, 22 Feb 2020 11:59:50 -0800 Subject: [PATCH 037/245] jupyterbook vignette --- README.md | 2 +- .../_generic.box-sizing.scssc | Bin 0 -> 3520 bytes .../_generic.normalize.scssc | Bin 0 -> 55694 bytes .../_generic.reset.scssc | Bin 0 -> 7699 bytes .../_generic.shared.scssc | Bin 0 -> 5458 bytes .../_components.hidecells.scssc | Bin 0 -> 16930 bytes .../_components.page.scssc | Bin 0 -> 57562 bytes .../_components.sidebar-right.scssc | Bin 0 -> 23451 bytes .../_objects.layout.scssc | Bin 0 -> 36328 bytes .../_objects.wrapper.scssc | Bin 0 -> 3523 bytes .../_base.scssc | Bin 0 -> 18092 bytes .../hamburgers.scssc | Bin 0 -> 12582 bytes .../_objects.thebelab-in-cell-button.scssc | Bin 0 -> 6314 bytes .../_components.book__layout.scssc | Bin 0 -> 28701 bytes .../_components.book__topbar.scssc | Bin 0 -> 13131 bytes .../_components.interact-button.scssc | Bin 0 -> 11268 bytes .../_components.page__footer.scssc | Bin 0 -> 2580 bytes .../_components.page__nav.scssc | Bin 0 -> 5055 bytes .../_components.page__onthispage.scssc | Bin 0 -> 19148 bytes .../_components.search.scssc | Bin 0 -> 19252 bytes .../_components.thebelab.scssc | Bin 0 -> 7722 bytes .../_objects.copy-button.scssc | Bin 0 -> 5153 bytes .../_objects.tooltip.scssc | Bin 0 -> 14060 bytes .../_settings.core.scssc | Bin 0 -> 20685 bytes .../_arrowalt.scssc | Bin 0 -> 14612 bytes .../main.scssc | Bin 0 -> 10821 bytes .../_elements.headings.scssc | Bin 0 -> 7247 bytes .../_elements.images.scssc | Bin 0 -> 6977 bytes .../_elements.page.scssc | Bin 0 -> 4511 bytes .../_elements.tables.scssc | Bin 0 -> 2295 bytes .../_tools.clearfix.scssc | Bin 0 -> 3256 bytes .../_tools.font-size.scssc | Bin 0 -> 22307 bytes .../_tools.hidden.scssc | Bin 0 -> 5529 bytes .../_tools.mq.scssc | Bin 0 -> 73117 bytes .../settings.global.scssc | Bin 0 -> 5306 bytes .../_utilities.clearfix.scssc | Bin 0 -> 2017 bytes .../_utilities.hide.scssc | Bin 0 -> 3097 bytes .../_utilities.spacings.scssc | Bin 0 -> 9593 bytes .../_generic.phone-scrolling.scssc | Bin 0 -> 1767 bytes .../main.scssc | Bin 0 -> 5150 bytes .../_elements.links.scssc | Bin 0 -> 3262 bytes .../_elements.syntax-highlighting.scssc | Bin 0 -> 46019 bytes .../_elements.tables.scssc | Bin 0 -> 6038 bytes .../_elements.typography.scssc | Bin 0 -> 9808 bytes .../_elements.variables.scssc | Bin 0 -> 7213 bytes examples/ngboost-vignette/Gemfile | 21 + examples/ngboost-vignette/Gemfile.lock | 307 ++++ examples/ngboost-vignette/Guardfile | 8 + examples/ngboost-vignette/Makefile | 34 + .../_bibliography/references.bib | 56 + .../ngboost-vignette/_build/0-install.html | 39 + .../ngboost-vignette/_build/1-useage.html | 861 +++++++++ .../ngboost-vignette/_build/2-tuning.html | 359 ++++ .../_build/3-interpretation.html | 249 +++ .../ngboost-vignette/_build/4-saving.html | 178 ++ examples/ngboost-vignette/_build/5-dev.html | 437 +++++ .../ngboost-vignette/_build/features/cool.jpg | Bin 0 -> 9269 bytes .../_build/images/3-interpretation_4_1.png | Bin 0 -> 18667 bytes .../_build/images/3-interpretation_6_2.png | Bin 0 -> 35241 bytes .../_build/images/C-3PO_droid.png | Bin 0 -> 104014 bytes .../_build/images/logo/download.svg | 90 + .../_build/images/logo/favicon.ico | Bin 0 -> 17050 bytes .../_build/images/logo/jupyter.png | Bin 0 -> 10316 bytes .../_build/images/logo/logo.png | Bin 0 -> 17050 bytes .../_build/images/logo/logo.psd | Bin 0 -> 385516 bytes examples/ngboost-vignette/_build/intro.html | 35 + examples/ngboost-vignette/_config.yml | 162 ++ examples/ngboost-vignette/_data/toc.yml | 57 + .../ngboost-vignette/_includes/buttons.html | 9 + .../_includes/buttons/binder.html | 14 + .../_includes/buttons/download.html | 13 + .../_includes/buttons/jupyterhub.html | 13 + .../_includes/buttons/nbinteract.html | 3 + .../_includes/buttons/thebelab.html | 3 + .../ngboost-vignette/_includes/css_entry.scss | 18 + .../ngboost-vignette/_includes/fb_tags.html | 7 + .../ngboost-vignette/_includes/footer.html | 3 + .../_includes/google_analytics.html | 11 + examples/ngboost-vignette/_includes/head.html | 89 + .../_includes/js/interact-update.html | 142 ++ .../_includes/js/nbinteract.html | 33 + .../ngboost-vignette/_includes/js/print.html | 32 + .../_includes/js/thebelab-cell-button.html | 27 + .../_includes/js/thebelab-page-config.html | 32 + .../_includes/js/thebelab.html | 95 + .../ngboost-vignette/_includes/mathjax.html | 29 + .../ngboost-vignette/_includes/metadata.json | 29 + .../ngboost-vignette/_includes/page-nav.html | 37 + .../_includes/search/lunr/lunr-en.js | 84 + .../_includes/search/lunr/lunr-store.js | 28 + .../ngboost-vignette/_includes/sidebar.html | 157 ++ .../ngboost-vignette/_includes/topbar.html | 23 + .../ngboost-vignette/_layouts/default.html | 27 + .../components/_components.book__layout.scss | 151 ++ .../components/_components.book__topbar.scss | 67 + .../_components.interact-button.scss | 60 + .../components/_components.page__footer.scss | 7 + .../components/_components.page__nav.scss | 19 + .../_components.page__onthispage.scss | 100 + .../_sass/components/_components.search.scss | 97 + .../components/_components.thebelab.scss | 33 + .../_sass/hamburgers/_base.scss | 69 + .../_sass/hamburgers/hamburgers.scss | 118 ++ .../_sass/hamburgers/types/_arrowalt.scss | 36 + examples/ngboost-vignette/_sass/main.scss | 29 + .../_objects.thebelab-in-cell-button.scss | 25 + .../components/_components.hidecells.scss | 75 + .../page/components/_components.page.scss | 307 ++++ .../components/_components.sidebar-right.scss | 123 ++ .../_sass/page/elements/_elements.links.scss | 29 + .../_elements.syntax-highlighting.scss | 83 + .../_sass/page/elements/_elements.tables.scss | 28 + .../page/elements/_elements.typography.scss | 63 + .../page/elements/_elements.variables.scss | 26 + .../generic/_generic.phone-scrolling.scss | 7 + .../inuitcss/elements/_elements.headings.scss | 45 + .../inuitcss/elements/_elements.images.scss | 39 + .../inuitcss/elements/_elements.page.scss | 19 + .../inuitcss/elements/_elements.tables.scss | 11 + .../inuitcss/generic/_generic.box-sizing.scss | 22 + .../inuitcss/generic/_generic.normalize.scss | 447 +++++ .../page/inuitcss/generic/_generic.reset.scss | 56 + .../inuitcss/generic/_generic.shared.scss | 33 + .../page/inuitcss/objects/_objects.block.scss | 61 + .../page/inuitcss/objects/_objects.box.scss | 48 + .../page/inuitcss/objects/_objects.crop.scss | 165 ++ .../page/inuitcss/objects/_objects.flag.scss | 231 +++ .../inuitcss/objects/_objects.layout.scss | 308 ++++ .../inuitcss/objects/_objects.list-bare.scss | 20 + .../objects/_objects.list-inline.scss | 16 + .../page/inuitcss/objects/_objects.media.scss | 144 ++ .../page/inuitcss/objects/_objects.pack.scss | 96 + .../page/inuitcss/objects/_objects.ratio.scss | 117 ++ .../page/inuitcss/objects/_objects.table.scss | 76 + .../inuitcss/objects/_objects.wrapper.scss | 13 + .../settings/_example.settings.config.scss | 24 + .../settings/_example.settings.global.scss | 13 + .../inuitcss/settings/_settings.core.scss | 92 + .../page/inuitcss/tools/_tools.clearfix.scss | 20 + .../page/inuitcss/tools/_tools.font-size.scss | 72 + .../page/inuitcss/tools/_tools.hidden.scss | 18 + .../_sass/page/inuitcss/tools/_tools.mq.scss | 351 ++++ .../utilities/_utilities.clearfix.scss | 11 + .../utilities/_utilities.headings.scss | 36 + .../inuitcss/utilities/_utilities.hide.scss | 21 + .../inuitcss/utilities/_utilities.print.scss | 88 + .../_utilities.responsive-spacings.scss | 124 ++ .../utilities/_utilities.spacings.scss | 60 + .../inuitcss/utilities/_utilities.widths.scss | 184 ++ .../ngboost-vignette/_sass/page/main.scss | 102 ++ .../page/objects/_objects.copy-button.scss | 20 + .../_sass/page/objects/_objects.tooltip.scss | 54 + .../_sass/page/settings/settings.global.scss | 25 + .../ngboost-vignette/_site/0-install.html | 782 ++++++++ examples/ngboost-vignette/_site/1-useage.html | 1604 +++++++++++++++++ examples/ngboost-vignette/_site/2-tuning.html | 1102 +++++++++++ .../_site/3-interpretation.html | 992 ++++++++++ examples/ngboost-vignette/_site/4-saving.html | 921 ++++++++++ examples/ngboost-vignette/_site/5-dev.html | 1180 ++++++++++++ examples/ngboost-vignette/_site/Guardfile | 8 + examples/ngboost-vignette/_site/Makefile | 34 + .../_site/assets/css/styles.css | 7 + .../_site/assets/custom/custom.css | 5 + .../_site/assets/custom/custom.js | 1 + .../_site/assets/images/download-solid.svg | 13 + .../_site/assets/images/edit-button.svg | 13 + .../_site/assets/images/list-solid.svg | 14 + .../_site/assets/images/logo_binder.svg | 19 + .../_site/assets/images/logo_jupyterhub.svg | 1 + .../_site/assets/images/search-solid.svg | 12 + .../_site/assets/js/page/anchors.js | 12 + .../_site/assets/js/page/copy-button.js | 61 + .../_site/assets/js/page/documentSelectors.js | 35 + .../_site/assets/js/page/dom-update.js | 17 + .../_site/assets/js/page/hide-cell.js | 86 + .../_site/assets/js/page/tocbot.js | 38 + .../_site/assets/js/scripts.js | 257 +++ .../_site/content/0-install.ipynb | 36 + .../_site/content/1-useage.ipynb | 580 ++++++ .../_site/content/2-tuning.ipynb | 264 +++ .../_site/content/3-interpretation.ipynb} | 898 +-------- .../_site/content/4-saving.ipynb | 144 ++ .../_site/content/5-dev.ipynb} | 27 +- .../ngboost-vignette/_site/content/LICENSE.md | 5 + .../_site/content/features/cool.jpg | Bin 0 -> 9269 bytes .../_site/content/features/features.md | 17 + .../_site/content/features/markdown.md | 44 + .../_site/content/features/notebooks.ipynb | 351 ++++ .../_site/content/images/C-3PO_droid.png | Bin 0 -> 104014 bytes .../_site/content/images/logo/download.svg | 90 + .../_site/content/images/logo/favicon.ico | Bin 0 -> 17050 bytes .../_site/content/images/logo/jupyter.png | Bin 0 -> 10316 bytes .../_site/content/images/logo/logo.png | Bin 0 -> 17050 bytes .../_site/content/images/logo/logo.psd | Bin 0 -> 385516 bytes .../ngboost-vignette/_site/content/intro.md | 3 + .../ngboost-vignette/_site/features/cool.jpg | Bin 0 -> 9269 bytes .../_site/images/3-interpretation_4_1.png | Bin 0 -> 18667 bytes .../_site/images/3-interpretation_6_2.png | Bin 0 -> 35241 bytes .../_site/images/C-3PO_droid.png | Bin 0 -> 104014 bytes .../_site/images/logo/download.svg | 90 + .../_site/images/logo/favicon.ico | Bin 0 -> 17050 bytes .../_site/images/logo/jupyter.png | Bin 0 -> 10316 bytes .../_site/images/logo/logo.png | Bin 0 -> 17050 bytes .../_site/images/logo/logo.psd | Bin 0 -> 385516 bytes examples/ngboost-vignette/_site/index.html | 18 + examples/ngboost-vignette/_site/intro.html | 772 ++++++++ .../ngboost-vignette/_site/redirects.json | 1 + .../ngboost-vignette/_site/requirements.txt | 10 + examples/ngboost-vignette/_site/runtime.txt | 1 + examples/ngboost-vignette/_site/search.html | 795 ++++++++ .../ngboost-vignette/assets/css/styles.scss | 4 + .../ngboost-vignette/assets/custom/custom.css | 5 + .../ngboost-vignette/assets/custom/custom.js | 1 + .../ngboost-vignette/assets/html/index.html | 27 + .../assets/html/search_form.html | 15 + .../assets/images/download-solid.svg | 13 + .../assets/images/edit-button.svg | 13 + .../assets/images/list-solid.svg | 14 + .../assets/images/logo_binder.svg | 19 + .../assets/images/logo_jupyterhub.svg | 1 + .../assets/images/search-solid.svg | 12 + .../assets/js/page/anchors.js | 12 + .../assets/js/page/copy-button.js | 61 + .../assets/js/page/documentSelectors.js | 35 + .../assets/js/page/dom-update.js | 17 + .../assets/js/page/hide-cell.js | 86 + .../ngboost-vignette/assets/js/page/tocbot.js | 38 + .../ngboost-vignette/assets/js/scripts.js | 257 +++ .../ngboost-vignette/content/0-install.ipynb | 36 + .../ngboost-vignette/content/1-useage.ipynb | 580 ++++++ .../ngboost-vignette/content/2-tuning.ipynb | 264 +++ .../content/3-interpretation.ipynb | 219 +++ .../ngboost-vignette/content/4-saving.ipynb | 144 ++ examples/ngboost-vignette/content/5-dev.ipynb | 356 ++++ examples/ngboost-vignette/content/LICENSE.md | 5 + .../content/features/cool.jpg | Bin 0 -> 9269 bytes .../content/features/features.md | 17 + .../content/features/markdown.md | 44 + .../content/features/notebooks.ipynb | 351 ++++ .../content/images/C-3PO_droid.png | Bin 0 -> 104014 bytes .../content/images/logo/download.svg | 90 + .../content/images/logo/favicon.ico | Bin 0 -> 17050 bytes .../content/images/logo/jupyter.png | Bin 0 -> 10316 bytes .../content/images/logo/logo.png | Bin 0 -> 17050 bytes .../content/images/logo/logo.psd | Bin 0 -> 385516 bytes examples/ngboost-vignette/content/intro.md | 3 + examples/ngboost-vignette/requirements.txt | 10 + examples/ngboost-vignette/runtime.txt | 1 + examples/ngboost-vignette/scripts/clean.py | 12 + 249 files changed, 21940 insertions(+), 869 deletions(-) create mode 100644 examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.box-sizing.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.normalize.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.reset.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.shared.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.hidecells.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.page.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.sidebar-right.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/395c18cc1634cc3a383eb65adf308d8427f39108/_objects.layout.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/395c18cc1634cc3a383eb65adf308d8427f39108/_objects.wrapper.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/790b0728c2f4b3b5db2f553d8f8409e61fc91086/_base.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/790b0728c2f4b3b5db2f553d8f8409e61fc91086/hamburgers.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/7e7a255e9f7cd7764c8b87529bc559c81858b6d0/_objects.thebelab-in-cell-button.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.book__layout.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.book__topbar.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.interact-button.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__footer.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__nav.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__onthispage.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.search.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.thebelab.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/890fbd6268d23fb58cef8058625a29d0ecb67783/_objects.copy-button.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/890fbd6268d23fb58cef8058625a29d0ecb67783/_objects.tooltip.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/8eaec9ccb9112d5ae46a675a6abdbee7f2abeffc/_settings.core.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/934de9c43828e6913fbce5112e031368821e5650/_arrowalt.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9af25a41181c5ca7c5de417e0616656429ac8851/main.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.headings.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.images.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.page.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.tables.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.clearfix.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.font-size.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.hidden.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.mq.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/b2ccb6dce9c6b77613eaf1f38e55896ab601a8b6/settings.global.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.clearfix.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.hide.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.spacings.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/e20638218b3a2510d4dbda969c4f3257e4ce6338/_generic.phone-scrolling.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/e543d1eb217f57bb21bdd749450abafd7ddc5797/main.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.links.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.syntax-highlighting.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.tables.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.typography.scssc create mode 100644 examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.variables.scssc create mode 100644 examples/ngboost-vignette/Gemfile create mode 100644 examples/ngboost-vignette/Gemfile.lock create mode 100644 examples/ngboost-vignette/Guardfile create mode 100644 examples/ngboost-vignette/Makefile create mode 100644 examples/ngboost-vignette/_bibliography/references.bib create mode 100644 examples/ngboost-vignette/_build/0-install.html create mode 100644 examples/ngboost-vignette/_build/1-useage.html create mode 100644 examples/ngboost-vignette/_build/2-tuning.html create mode 100644 examples/ngboost-vignette/_build/3-interpretation.html create mode 100644 examples/ngboost-vignette/_build/4-saving.html create mode 100644 examples/ngboost-vignette/_build/5-dev.html create mode 100644 examples/ngboost-vignette/_build/features/cool.jpg create mode 100644 examples/ngboost-vignette/_build/images/3-interpretation_4_1.png create mode 100644 examples/ngboost-vignette/_build/images/3-interpretation_6_2.png create mode 100644 examples/ngboost-vignette/_build/images/C-3PO_droid.png create mode 100644 examples/ngboost-vignette/_build/images/logo/download.svg create mode 100644 examples/ngboost-vignette/_build/images/logo/favicon.ico create mode 100644 examples/ngboost-vignette/_build/images/logo/jupyter.png create mode 100644 examples/ngboost-vignette/_build/images/logo/logo.png create mode 100644 examples/ngboost-vignette/_build/images/logo/logo.psd create mode 100644 examples/ngboost-vignette/_build/intro.html create mode 100644 examples/ngboost-vignette/_config.yml create mode 100644 examples/ngboost-vignette/_data/toc.yml create mode 100644 examples/ngboost-vignette/_includes/buttons.html create mode 100644 examples/ngboost-vignette/_includes/buttons/binder.html create mode 100644 examples/ngboost-vignette/_includes/buttons/download.html create mode 100644 examples/ngboost-vignette/_includes/buttons/jupyterhub.html create mode 100644 examples/ngboost-vignette/_includes/buttons/nbinteract.html create mode 100644 examples/ngboost-vignette/_includes/buttons/thebelab.html create mode 100644 examples/ngboost-vignette/_includes/css_entry.scss create mode 100644 examples/ngboost-vignette/_includes/fb_tags.html create mode 100644 examples/ngboost-vignette/_includes/footer.html create mode 100755 examples/ngboost-vignette/_includes/google_analytics.html create mode 100644 examples/ngboost-vignette/_includes/head.html create mode 100644 examples/ngboost-vignette/_includes/js/interact-update.html create mode 100644 examples/ngboost-vignette/_includes/js/nbinteract.html create mode 100644 examples/ngboost-vignette/_includes/js/print.html create mode 100755 examples/ngboost-vignette/_includes/js/thebelab-cell-button.html create mode 100644 examples/ngboost-vignette/_includes/js/thebelab-page-config.html create mode 100644 examples/ngboost-vignette/_includes/js/thebelab.html create mode 100644 examples/ngboost-vignette/_includes/mathjax.html create mode 100644 examples/ngboost-vignette/_includes/metadata.json create mode 100644 examples/ngboost-vignette/_includes/page-nav.html create mode 100644 examples/ngboost-vignette/_includes/search/lunr/lunr-en.js create mode 100644 examples/ngboost-vignette/_includes/search/lunr/lunr-store.js create mode 100644 examples/ngboost-vignette/_includes/sidebar.html create mode 100644 examples/ngboost-vignette/_includes/topbar.html create mode 100644 examples/ngboost-vignette/_layouts/default.html create mode 100644 examples/ngboost-vignette/_sass/components/_components.book__layout.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.book__topbar.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.interact-button.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.page__footer.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.page__nav.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.page__onthispage.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.search.scss create mode 100644 examples/ngboost-vignette/_sass/components/_components.thebelab.scss create mode 100644 examples/ngboost-vignette/_sass/hamburgers/_base.scss create mode 100644 examples/ngboost-vignette/_sass/hamburgers/hamburgers.scss create mode 100644 examples/ngboost-vignette/_sass/hamburgers/types/_arrowalt.scss create mode 100644 examples/ngboost-vignette/_sass/main.scss create mode 100755 examples/ngboost-vignette/_sass/objects/_objects.thebelab-in-cell-button.scss create mode 100644 examples/ngboost-vignette/_sass/page/components/_components.hidecells.scss create mode 100644 examples/ngboost-vignette/_sass/page/components/_components.page.scss create mode 100644 examples/ngboost-vignette/_sass/page/components/_components.sidebar-right.scss create mode 100644 examples/ngboost-vignette/_sass/page/elements/_elements.links.scss create mode 100644 examples/ngboost-vignette/_sass/page/elements/_elements.syntax-highlighting.scss create mode 100644 examples/ngboost-vignette/_sass/page/elements/_elements.tables.scss create mode 100644 examples/ngboost-vignette/_sass/page/elements/_elements.typography.scss create mode 100644 examples/ngboost-vignette/_sass/page/elements/_elements.variables.scss create mode 100644 examples/ngboost-vignette/_sass/page/generic/_generic.phone-scrolling.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/elements/_elements.headings.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/elements/_elements.images.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/elements/_elements.page.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/elements/_elements.tables.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/generic/_generic.box-sizing.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/generic/_generic.normalize.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/generic/_generic.reset.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/generic/_generic.shared.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.block.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.box.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.crop.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.flag.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.layout.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.list-bare.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.list-inline.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.media.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.pack.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.ratio.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.table.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/objects/_objects.wrapper.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/settings/_example.settings.config.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/settings/_example.settings.global.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/settings/_settings.core.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/tools/_tools.clearfix.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/tools/_tools.font-size.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/tools/_tools.hidden.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/tools/_tools.mq.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.clearfix.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.headings.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.hide.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.print.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.responsive-spacings.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.spacings.scss create mode 100644 examples/ngboost-vignette/_sass/page/inuitcss/utilities/_utilities.widths.scss create mode 100644 examples/ngboost-vignette/_sass/page/main.scss create mode 100644 examples/ngboost-vignette/_sass/page/objects/_objects.copy-button.scss create mode 100644 examples/ngboost-vignette/_sass/page/objects/_objects.tooltip.scss create mode 100644 examples/ngboost-vignette/_sass/page/settings/settings.global.scss create mode 100644 examples/ngboost-vignette/_site/0-install.html create mode 100644 examples/ngboost-vignette/_site/1-useage.html create mode 100644 examples/ngboost-vignette/_site/2-tuning.html create mode 100644 examples/ngboost-vignette/_site/3-interpretation.html create mode 100644 examples/ngboost-vignette/_site/4-saving.html create mode 100644 examples/ngboost-vignette/_site/5-dev.html create mode 100644 examples/ngboost-vignette/_site/Guardfile create mode 100644 examples/ngboost-vignette/_site/Makefile create mode 100644 examples/ngboost-vignette/_site/assets/css/styles.css create mode 100644 examples/ngboost-vignette/_site/assets/custom/custom.css create mode 100644 examples/ngboost-vignette/_site/assets/custom/custom.js create mode 100644 examples/ngboost-vignette/_site/assets/images/download-solid.svg create mode 100755 examples/ngboost-vignette/_site/assets/images/edit-button.svg create mode 100644 examples/ngboost-vignette/_site/assets/images/list-solid.svg create mode 100644 examples/ngboost-vignette/_site/assets/images/logo_binder.svg create mode 100644 examples/ngboost-vignette/_site/assets/images/logo_jupyterhub.svg create mode 100644 examples/ngboost-vignette/_site/assets/images/search-solid.svg create mode 100644 examples/ngboost-vignette/_site/assets/js/page/anchors.js create mode 100644 examples/ngboost-vignette/_site/assets/js/page/copy-button.js create mode 100644 examples/ngboost-vignette/_site/assets/js/page/documentSelectors.js create mode 100644 examples/ngboost-vignette/_site/assets/js/page/dom-update.js create mode 100644 examples/ngboost-vignette/_site/assets/js/page/hide-cell.js create mode 100644 examples/ngboost-vignette/_site/assets/js/page/tocbot.js create mode 100644 examples/ngboost-vignette/_site/assets/js/scripts.js create mode 100644 examples/ngboost-vignette/_site/content/0-install.ipynb create mode 100644 examples/ngboost-vignette/_site/content/1-useage.ipynb create mode 100644 examples/ngboost-vignette/_site/content/2-tuning.ipynb rename examples/{vignette.ipynb => ngboost-vignette/_site/content/3-interpretation.ipynb} (84%) create mode 100644 examples/ngboost-vignette/_site/content/4-saving.ipynb rename examples/{dev_vignette.ipynb => ngboost-vignette/_site/content/5-dev.ipynb} (99%) create mode 100644 examples/ngboost-vignette/_site/content/LICENSE.md create mode 100644 examples/ngboost-vignette/_site/content/features/cool.jpg create mode 100644 examples/ngboost-vignette/_site/content/features/features.md create mode 100644 examples/ngboost-vignette/_site/content/features/markdown.md create mode 100644 examples/ngboost-vignette/_site/content/features/notebooks.ipynb create mode 100644 examples/ngboost-vignette/_site/content/images/C-3PO_droid.png create mode 100644 examples/ngboost-vignette/_site/content/images/logo/download.svg create mode 100644 examples/ngboost-vignette/_site/content/images/logo/favicon.ico create mode 100644 examples/ngboost-vignette/_site/content/images/logo/jupyter.png create mode 100644 examples/ngboost-vignette/_site/content/images/logo/logo.png create mode 100644 examples/ngboost-vignette/_site/content/images/logo/logo.psd create mode 100644 examples/ngboost-vignette/_site/content/intro.md create mode 100644 examples/ngboost-vignette/_site/features/cool.jpg create mode 100644 examples/ngboost-vignette/_site/images/3-interpretation_4_1.png create mode 100644 examples/ngboost-vignette/_site/images/3-interpretation_6_2.png create mode 100644 examples/ngboost-vignette/_site/images/C-3PO_droid.png create mode 100644 examples/ngboost-vignette/_site/images/logo/download.svg create mode 100644 examples/ngboost-vignette/_site/images/logo/favicon.ico create mode 100644 examples/ngboost-vignette/_site/images/logo/jupyter.png create mode 100644 examples/ngboost-vignette/_site/images/logo/logo.png create mode 100644 examples/ngboost-vignette/_site/images/logo/logo.psd create mode 100644 examples/ngboost-vignette/_site/index.html create mode 100644 examples/ngboost-vignette/_site/intro.html create mode 100644 examples/ngboost-vignette/_site/redirects.json create mode 100644 examples/ngboost-vignette/_site/requirements.txt create mode 100644 examples/ngboost-vignette/_site/runtime.txt create mode 100644 examples/ngboost-vignette/_site/search.html create mode 100644 examples/ngboost-vignette/assets/css/styles.scss create mode 100644 examples/ngboost-vignette/assets/custom/custom.css create mode 100644 examples/ngboost-vignette/assets/custom/custom.js create mode 100644 examples/ngboost-vignette/assets/html/index.html create mode 100644 examples/ngboost-vignette/assets/html/search_form.html create mode 100644 examples/ngboost-vignette/assets/images/download-solid.svg create mode 100755 examples/ngboost-vignette/assets/images/edit-button.svg create mode 100644 examples/ngboost-vignette/assets/images/list-solid.svg create mode 100644 examples/ngboost-vignette/assets/images/logo_binder.svg create mode 100644 examples/ngboost-vignette/assets/images/logo_jupyterhub.svg create mode 100644 examples/ngboost-vignette/assets/images/search-solid.svg create mode 100644 examples/ngboost-vignette/assets/js/page/anchors.js create mode 100644 examples/ngboost-vignette/assets/js/page/copy-button.js create mode 100644 examples/ngboost-vignette/assets/js/page/documentSelectors.js create mode 100644 examples/ngboost-vignette/assets/js/page/dom-update.js create mode 100644 examples/ngboost-vignette/assets/js/page/hide-cell.js create mode 100644 examples/ngboost-vignette/assets/js/page/tocbot.js create mode 100644 examples/ngboost-vignette/assets/js/scripts.js create mode 100644 examples/ngboost-vignette/content/0-install.ipynb create mode 100644 examples/ngboost-vignette/content/1-useage.ipynb create mode 100644 examples/ngboost-vignette/content/2-tuning.ipynb create mode 100644 examples/ngboost-vignette/content/3-interpretation.ipynb create mode 100644 examples/ngboost-vignette/content/4-saving.ipynb create mode 100644 examples/ngboost-vignette/content/5-dev.ipynb create mode 100644 examples/ngboost-vignette/content/LICENSE.md create mode 100644 examples/ngboost-vignette/content/features/cool.jpg create mode 100644 examples/ngboost-vignette/content/features/features.md create mode 100644 examples/ngboost-vignette/content/features/markdown.md create mode 100644 examples/ngboost-vignette/content/features/notebooks.ipynb create mode 100644 examples/ngboost-vignette/content/images/C-3PO_droid.png create mode 100644 examples/ngboost-vignette/content/images/logo/download.svg create mode 100644 examples/ngboost-vignette/content/images/logo/favicon.ico create mode 100644 examples/ngboost-vignette/content/images/logo/jupyter.png create mode 100644 examples/ngboost-vignette/content/images/logo/logo.png create mode 100644 examples/ngboost-vignette/content/images/logo/logo.psd create mode 100644 examples/ngboost-vignette/content/intro.md create mode 100644 examples/ngboost-vignette/requirements.txt create mode 100644 examples/ngboost-vignette/runtime.txt create mode 100644 examples/ngboost-vignette/scripts/clean.py diff --git a/README.md b/README.md index c1e30700..93474d43 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ print('Test NLL', test_NLL) Details on available distributions, scoring rules, learners, tuning, and model interpretation are available in our [vignette](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/vignette.ipynb), which also includes numerous usage examples. Please see our [developer guide](https://github.com/stanfordmlgroup/ngboost/blob/master/examples/dev_vignette.ipynb) for more information on how to add new distributions or scores to NGBoost. ## License -Apache License 2.0 (see [LICENSE](https://github.com/stanfordmlgroup/ngboost/blob/master/LICENSE)). +[Apache License 2.0](https://github.com/stanfordmlgroup/ngboost/blob/master/LICENSE). ## Reference Tony Duan, Anand Avati, Daisy Yi Ding, Khanh K. Thai, Sanjay Basu, Andrew Y. Ng, Alejandro Schuler. 2019. diff --git a/examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.box-sizing.scssc b/examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.box-sizing.scssc new file mode 100644 index 0000000000000000000000000000000000000000..8511a74a5097be7359f50b9b8b340e5d081bd9f6 GIT binary patch literal 3520 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.reset.scssc b/examples/ngboost-vignette/.sass-cache/06c9d2aad2da27189e9734df8e00de9cccf6de4a/_generic.reset.scssc new file mode 100644 index 0000000000000000000000000000000000000000..ea5d5f17646ca9a2ac6771ea1fe5f1f2884ad6b8 GIT binary patch literal 7699 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.hidecells.scssc b/examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.hidecells.scssc new file mode 100644 index 0000000000000000000000000000000000000000..777e58b72a097b29e3b4f978117d332808781915 GIT binary patch literal 16930 zcmcIs-ESO6awq354|=dC7ZH)zjTIJ=@Er4i_7+ z)U!QR^{cL~uBxu_`s(KDt&(3`Yi+KtuWdBfyvFTjyHRUy-riW>*x0PKZ{68!Y_xB# zZ?^CHrSBIa=e->-jvePk-}fEot0+pIMlFBFnPtuWpwsI6;qH9oT*yv(7BEYO=_QM(=c3HLWjXnMA#6uOI!9-%R4_UXWD7y+#zpN!5Sjb$b9+K3I7b?1g@k_|aF&?J-^zFy1gg_NBFbJdlY*WZhGr*@|!=dv(_Wl6V4n11Mb!1gD~;lIEB!Ejr-7@siD+>)kJ*SOx!uc*PyO# zP_8F-LwjRRisPJ3y@lZwp-h2=t;km*cS)$}%*t!O@iItO^c5egu3}DIMNrT=B_ED1 zN@jBP+$+I^d)0kkSB;4fsYWOCL25AUzQ*W1#ps%5P(md3vHYD-pIqri-@Ys4QVwzn zK%P;O;OLy>bU0)aA%d(El8~Qkj7}>?I%FXd`%?Z+kmpyTcLiL|0WJf?Q%VjTot1nJ z2W%olfOSF=a6@BsQZdp23z1k;{!V~TtaRgdMLd&3JOda{D?xBX#wL7{*{V&12(eB` zB2F|$UYtDyO+4j zKg?}bavG}u7upm!8rl>!cQN(f$_eGTj&s$=b3Bg&mpO$KM`SLCu9Armt&&biuF~XR zYMhR%Wzd&N$iyapEGLjQua95b2->^0Q5a242~{HUWac-6Cr}F6H>7MR^vn) zUxzJZVv~O-MIqR*A*ItjGUoXl=6OI#8xluH+>j=+iXC#}$SJ^~}5bJ~#;-71rPAE?LDhrv|bV--je_Xb|S<+o~(I_`C%hS$L(Armp1DAH1D z6eIUKKfBJ6;=C~Eu0RI7m+bR%?8C^tf!c9bPzA->>KfO9yNZ~nczWnofqe~d;g9K) zS+F}jM>)%pNXx|0ViuQsv*xblfS5=S5RF9SPS0TAy}h^qN&kaR$A&Bx*1`5WKGp_! z&X31($t~;JI+v6497skMh$Cfzxvc4{LB~hat6Y$TO?0ec@@M#Bj^Ol0XI^9{@*B!-o!geA5wa- zV;wi9m?ftI1&=TZ+JWD97Gd}H`hL?(VBLZcoI|e;3lu<63FaWU3pqtx08!~&#gQ@? zbAW3iP*R>$Cm>y|^}(bzW0bEI!Z7RFq|_d1Z6@k@&0&?f_qkrCYFw3ECGN*AL#!8b zST6#)6G{*qks!tt)kJ`>>I4+lyMz^IsBGQU&lMpIvm67~G93VELe8y2KrP;^3ID61 zUC5zb0OnN3z!4>nMzkgZgjOe@(0)c}amJ{qSO~+c&kbm2dS0sq2ACX{D%Y_XN+2AAq=zrPywg-;k=Zb zS!aoy?mZxGP^ZHm!0GT@1_^d!kR(vvE!l8nw7ec{dAr?@y7qpO^kSz91yXPZez+P$ z)veATXgzChhcO(G$w3t!S05jI`DE`kR+Eh<%c7J`l#&(!B%LfvFnTDp8oBEg_ZA)? z=Yy~}NOrLApIqBn~_FZKoVzXWcCbZHxqD0EL(k245(mDaP(m$o8!5M@~ zKk0-p%=(#HX~KI9?wI&}5(h<*kg)7yP-c%hu$PB1f0)DkA&5ZvGLFVXGA06qStp<{ z|B^7{jCtt;bEmryhFQNdU@pMLmlkp4R% z#TgJEi#r*8b%ij@`VRxr5@d~O9y=VylvdV_am-2%?FulbA|H;%#4#oUgjOe@(Ef(d z;*81&v_cqW{kH+_;c-lHb=^;ktD2Ku&B0v-?zDArG{#Ar2oPMIfPy<=Df_`0qqeRP zhFO!AR0wU|((9ll((IvqTU;})Z7m13#(B%M8b?%XGg`8V0D;vBD6sPc7H5oFTOkay zP8h%*9+8{T-prxB3Ct-X$I%!|HW47SIst|D3Zcarqat!44708p&{i5=^W|PYf@@r} zqncT2-NJu|-SS!v^csgLml#KSm@{-QXd*zMbpi_X27$&Il-KFbN(jTOO#|rpMg*0q z{z~6#1%tE@WUy;l`_eY?dJgnD$UtQ<9E|~OB0!*Z0t)me1R7_MpU^=IVVJc|pdC?K z$@Bv7Vh~2m`3rQo3(8i}*yR84{A*kZ?N&}Fw?M=N<#lkhBz+3jvmrKr=^wm?C4gF! zi0Qvhf)120;Zn-$1mF6tFTCC~T)D%%ddy2A*xOQMU9b0c0`8XZCuo1ztE*OlOkL3= z4rv(0xkBQ|>-%MifmuJH140ksvT^7_D|oev-6zg|^vdtsW5UwuC{2M1k^6w>It6&2 zZ>b+(;;@PNjR;taNR|I2o~ynbRbqP{`-4_gc1|+hj?hekW}SBkm6}*KNse_>NI9Y&8)Dr{eOQZgiZDlg4tOyXGlamrEK4u9s8?xrAyH=2D!EBU`O# z8fSyPWt?sDaQPB?x;eH6Vbkk$&_MA|?7^y`E(`s=249d%yRd##We)yCY>x?9SuWgM zTZ5TfAo?9?P$E#j15#4=1dhm2z^2gXPW~AYX4YR=ShOzOT*t!KDAJeIenZlWN*zO_ z|J+D=;}FtUG}0erNxM%X_mgRN8#d*qd}F$wp>dh8Q|S=}yrxk>4{HnpOoV7F>x7iE z{0TWroH6Qzz~4Y9X8j{MOLwdCJM@cpb0%;XIFet)k>(eT%G7R5Oaw_CNYLQfHl-Ah zVUuR`O_TL(C&`uBP=MiA1a3afmi}z?_W$T8+n+WuZhuO%@nzvLfkWysi%J;oGLJ-` zvI(RQ5vOoq{N>r;Bd}HeS3QmY269K}k6Hu7{ zmoVcD%AfVnNeIKNiSJ3*L~DGMc(JfoA&X4A3hW-ljZmfCChFFzTz7@6fjGmwGYKaS|=GrD~f0RpWPP@tCxG|m|1 z_JuIax{?7s+U+}6MA12S8y_d)Mjku9Au!{Yw-g?vS5*awB8JuTAg7)OAT1pWIJzuN z5W{8J(t60uSIyXP;FNfAA09ROkb(Mer-7l3iK4C>jUta_o)}^f?btLCC38af_obM$=gVD) zn$s@l;fhwdcGbRl`|9x8KFqD{Lm*Ct0340+>m~vut4=_f{x@X$IAc^HKnTOE-_Mx7 z^y@=qkF=56*s6kU)$~I>bA>q@Jj!X{k){D0ElFh`-rQs&M4HeEDNXE?CUC|mO$ecw z6&N&eShcILSu?Eq;~eJ4z?wo29FaFNIy@5r!m1NcSidE#IAc_?O9;cPw;8Om3+27) z^%Z;H>$L4;-?w?0PhJx`<&dZ2dK=1<9MmVknIy%LY6GIZRP6Ze^g4H_%u+B`4?oFq z`2^@5SB?co)VF3-sEGiHsS{8N{cBPv&Y->yJya0FFzatJ3RT;v5y4$;TKzpD*zFwH zZQxDTgQGFlV0p>VVLy~2C#<}{ml#eX%6eBoVBbO;%Lmmng|e9 zoq)pnFN76mjM^ze7-s#{fK|K7ao#sY1>3w0CxVYx;H#-QXnSk;&>-pSN9l1WEi|v) zh67~99zH)l%jxGcF0RxMjwoKlQW})Rf|iUB$R%gm3J>$uCT|p>O#=PE#Mn@hR)Kl$kIj6G^IrA;(Y?N(^or8Mf zze%>B7=|B2)j{L%kyt0{Z$Xhz_DI2cI7PfV=K;fPpnx;$7i1dBfDw24N8&^&2y%joVTMy4Z?4#o!cCbMmDY}k@Uk*^ zwrSbPrJBePwm~Bd@>t6lZGmG$TN`s zs?q|EKnt1g{vJ6c-VF`fc-L2PXFM?^0A@-TH6ci$;7X5{N|?l>y^qLl5Hh)MpGtKw ztMGj#fxe{6FT_5FbP_&L#V;V?BTZ}P_o`Lnx4|WF{P4xFP2cogyAp)U_S;gC9y##H zEfuwIQFsf6{6T%Kp*_uhMW$wEKeS38epk|jz;6L`8SsgGKl=${_PLTE`%nmweI!5h zqG!PVit6nV2cBcEVavLk{Uy^V?%3G)?UqWQR73A|Ni;=+5^ea0dUqYsrS0#!yC-YJmn{UL?wbu-O^3{OlIsjs449&m-^Wgj%u;;eO{D+}zx-;f@9W zvjHTIz#^kZtWD?jeFSCZz(EO7fL53CppCT5Hd-PmGTE7(kg<0g%Qk?8gGuWdV3WLb zk&=_^ka<0Ql>RK%4RT&V!;~#@;+WuZa~JaSB*;o$SD;#zwAU0dPj(=xXWeip+2(?GgqaZ2IoOebzSlBd-2i~j>8Y5X++ literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.page.scssc b/examples/ngboost-vignette/.sass-cache/25a4e41f04b22e31759153f44abb48144b3125dc/_components.page.scssc new file mode 100644 index 0000000000000000000000000000000000000000..79b9dc477844d5f9268825d5ad21ccea468e7c4d GIT binary patch literal 57562 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 dT@9{G`2#0wHX;+$Le-cz^w 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/395c18cc1634cc3a383eb65adf308d8427f39108/_objects.layout.scssc b/examples/ngboost-vignette/.sass-cache/395c18cc1634cc3a383eb65adf308d8427f39108/_objects.layout.scssc new file mode 100644 index 0000000000000000000000000000000000000000..6899d455b82e49833a782f9152f0728a05084d15 GIT binary patch literal 36328 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/790b0728c2f4b3b5db2f553d8f8409e61fc91086/_base.scssc b/examples/ngboost-vignette/.sass-cache/790b0728c2f4b3b5db2f553d8f8409e61fc91086/_base.scssc new file mode 100644 index 0000000000000000000000000000000000000000..752f8c0a79e62d39d66b381a60c630d41a124759 GIT binary patch literal 18092 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 Q@P7^9m*^e&9~ut+3matiTL1t6 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/7e7a255e9f7cd7764c8b87529bc559c81858b6d0/_objects.thebelab-in-cell-button.scssc b/examples/ngboost-vignette/.sass-cache/7e7a255e9f7cd7764c8b87529bc559c81858b6d0/_objects.thebelab-in-cell-button.scssc new file mode 100644 index 0000000000000000000000000000000000000000..116d077cb4c8390404de39df05f2e7fbdd52ec03 GIT binary patch literal 6314 zcmcIo>vG%16&5ueiUMzvY)fh+#Rw&*ty76KWmop@AIvy$!>K0qR7z$N{osJ)N`eDo zQ2?~9aok5}UZH)3_9^-X?K89w(Q_7i;X+Vi&m{UIE_V0qIp6utW%uyl=-{E#e=_zT zOxVQt4-cP=4j=W79zS7^dgr6_{^+pZd*UCSKbZKF$IdTmoc!{{Pg6op6UGSn6X)3% ze8L)}<&7_caFVd-%;98ve$i7tow7)-t9vi~aK_H6gU)XEz8ggQV-|*PcF9I8^hfS! zmSsFj-TU1tseX1!951_y8L3A+nff8Eo-M#p=RwFKf698K>G3!VV8fdQSQ-Wq3#w$z zOZhArvti;#7mSn5T$>Z|5tPQS%cSk4nV)3Cn5Ud<*-M`DG(fRSv<31S9zQ=%Sq49w z9*ZVo3tbbF^j5G3C!qZwN z&eN>RUi;HHWU2bF|1!9USeCKwFa?Oae3b7Q${z;`qkRe5evZ{aI!@CnT|Nb1f@#c? zj3u17xj_T@0X+5$R7|hZj7@8xZ~~qibe{i&3WEyI0Mvx};qYgYzUigl^&z@`_{vYB zAi4nG)lOJe1(PoQ^z!Y(vm!-jAw!C`(P;RM%xmRXjYazoTAy*)Q-(>p!7-jl+_ zKPh+1OQq>UE0E^pEdlY3JRGgiJ6@Zvdn=%H=8w`~0iv~8@W%6m$LNg}dJi4Zgy0i_ zhJK(m#7h$QWSj(Xrt-{j0HpTA8ifQ@Snw656GBe11lX`lYakR3=iw}4LTJ;gQ-`#J z38bLlJYWgwcoP;UZ0u*?@*o1q@eq6)Kw^S52uQ5}UJcA!)8OIg17$4zO|U>#J&5pl zm|jJh|C-by_6idfxQOEE{BWs6&doxd|C0nGorTX6Ql+v8umky{w zdeYd_PY_`GTY+M=XW*mz^Z;>LF5t2ZNHn!pIBKaQ5Et5|JsXHJ0R{+Lz=NE>-tVmg z>iU4b#c!#K_qm!kHabagahYi=$wxBQEQWpMCxJf-S)JY+bXL>Y9|N8CXHg(Fl67wu zO(5dOJOR?=F{xG!)ha;9DInwkCT(p1j<%J8v;pCQ{3u1LOprm!7Nn5++B&GI53-Sx zDtX_id4p7a>L(Y0NQ!wd?v+7x9Hf~HNUZyiDzLn#XGwhjUW{YmG3P5OJ2j+vlLkTKsDq|N`UHXj$M7U*HzkE0!R zsEX2Z_m>GW_S=HA{eRQ;6|Yu$-%j6chB|1uWMd^= zJJ;Z#bqzL-Odyw*@-hL=4Fa?~|7|U}tqrr?DRuEG|4|E!#m<BD{aHr)51mrkJp5G8)l zY3v?}KXGs?xK%*!7T{%q0Y{rkb&&>25iAp85WEdSYFda!@V^>CJmsc0S*3uWj~9&^O*c=vH;m;pXBIEnB5l@J=U~D^nFb08t|En_@G{kaFy> z-hj2{W{D$HD3Bdhj9hhpxqgAPg1VW&qf!>UoVyCDEWN25Bri#uaF9_LM?aFK%LJHo zWD8KFT>P-2*?=qbC9aUBr83^)-O6=ZZYa&Y#kLV=1BK*TYG4yT=xoC~+vjlqb;oe= zo_}D&Z10eIimz#zeNo#|XGnCmKw0Ay9BFjsSPU)e!HW^xse#Kb4#Y1(%9~gWYISwgm}uem9j!$!?r`&yupHxt9wT0rU<>JH~)qryo7{miDjBd7(7QkaBF! zZ(H!<=x5>lPQj}?aFF3VjuIX`zD<8~3nhSvs z<(;^)GQ+30&RfSRuQ>$}R05^AquafnNSyMZ{{b;FjH}9}b8nI+#bESQb?!Sp{XZa~ B1AYJi literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.book__layout.scssc b/examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.book__layout.scssc new file mode 100644 index 0000000000000000000000000000000000000000..d2564346ea855cdb920f6b9a0730037650f28832 GIT binary patch literal 28701 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 Mi*%%VXkYCA3)kQ2)&Kwi literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__footer.scssc b/examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__footer.scssc new file mode 100644 index 0000000000000000000000000000000000000000..3c2b6000fa570b3da686a0eeadd987bb1c2752bf GIT binary patch literal 2580 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

27MzpUSX`N> zE_ApefSd&;K*oZ9WsyUHjV#C}3ld#e>ED?^Hso)ndb83$GceOhU!Es-0_bgU)yF#s zTz9`WE`7H@(pc7uxf?aH@nZaO=amf?$5%F7@?P0+9s4o0<}MOO6Bb6|0F(b-Zc)vXVFAcd54*&oF literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__onthispage.scssc b/examples/ngboost-vignette/.sass-cache/8086a4abb71e09c556123d16792ac5f100007415/_components.page__onthispage.scssc new file mode 100644 index 0000000000000000000000000000000000000000..480adac95bdeb7221c739cf343d978c5462525cb GIT binary patch literal 19148 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 oBA7WcgD%g&vK2+6vMxAuKwt(LZF* z4)$!%cKh}-+dl9P>^-*Md;YZF+xL3jlS6jU?>~9M8egk(vT^LjF(D@rV}yLhdGdYU zW3%KY_0IjE7qRekI!`nT7!u8s294nPw05+!+)B<_mj!OO>9HWFk=iFGWQh*lC}zD5 zQpKF?WTK8)z`TSST@%*r3az__W5!ojkFmn{sAx|6XC=9}EK~ zsb(^&%{pvJOorf zW=RcRICtao_cvYw;5gmtL~eM-I9V6c(=Wlg`0X^Ar*Yy&NoUA`#g<9(ipPH9^Ki;p z^lN06@_s*N2|UhG7WUFtoXvF8+45IFG^%KWssNrx35#raamrcB{$!72i^js_9Ya57 zecIXJ8NVsuS95NUtyY~oM?0hT=P@{>?d=`x9X@;7{x*wWCw$l*MjWjXx6k~f9iDYL zkCQgLbkPN|{Gxf`pM@+*Si2L0)!QBiB|{d%YaRWpBBvF5aa;ozINO|9nO%+qEQrvT zfHZy^Cv1T3iy%^uc3%At)dR^d!8Z|egU^=mCFgDe|7Ce-VIIbo z3*WoJ8~1IDI~MrP;{EjTM@+b8t19IA7VZWhaY>9KTKpj z`qYPzc7wX}ut4xbv;iT zdO1IBFM}UhODj@Ig3?1ngC(f}S2E|vYAkI=}@ z$EhXj&!0cnMs%7^3$4@0S*HQ^SXR2>>XsCQ)^Xa7ZJMKufi{Q9U^fdi`W-{Sq7txY z1fo!depl^71)WzP8(;w?kpVbtjH7`e{0d7!>YV&J1Z*VrDnoiHPA|zU|fMcZD$*8 zpT3NL#N%B9{+#h9uGS>F)DyMS<*(-Yn>kf)f(Y$;TwUY(G6vf9CIjhuuKb1jlUy%U zp+kvy3~A4ghk^UHJjfUQ5D)rhH{jmuVzkfaAkQ0+adlTpERXgw1{$)-KtitkRAEMf zNtlH$wDMl6Fa~<)_IgkfCxEtF`-f~`?Y8#Vpa^;)2YSH(jjL-wmodEp4(=j|UsB58YD3B@_i-5m z4cBC#;QrQ-u%INEB~9o;E5DNj+Q&;>9`#t%jNG0-%C1ZW)H8N#x75c=InYZfOnLLe z)ipjYW1vBs3>4@;D9}it%aaLO=t3)hEP|fz^2=uIe>pL>fgrUC&=n(lIfr^V)k31i z)z_uSa#xoz(5OuY3iV$UY9v@u5=_)W7h3tNB+#y2N!Vr5>@kl=aJLahP{G;LA>6Br zpjUFBS3rp^r4p{LadjC34ccU&K>y8Ep(xkzZXF-^m&*x`|iLGCKT_DN1yR7 zPxzyct=J9YCNwF2zi5EfoB>t=@|sc)S072~pPeTus)EPs`?g)gdnjWFQe&XDfz?Nr^3# zq1Cxc8D^Lg84= z*i8ls`?oZ9q?mMJ5z5f&ixTXOD}8OJpCaC^9NsMuzo;?~SL;{fEn}eZnhX@)6O9)s z=9LK3*FqUu{aoS24lnCE=cMNJ$4XzbFWVn$G`I4NCOPL9qS{SrH>dd3?dCQpqsNPC zR*2c!}?I(!o!|!^tT2uMH)fOjEd5<9JaH5V03U&L7ywLJby;Z2B_t z5PZx=b{p)iTVPz7)w^~Iu;mQn1M;aGK-DS6*Inr)(ShFufjXaXbxl5%G0^d4GEnjL zGaX+@F)5#fGPL@06<-?re_clV9{wvrw{p;})Yh_$;_8|*TE;*_HyJ4CztYf=Vp16u z%Fybs6?C0i+fs8{<(i!tE91#^r{`a^z8E%tFiM7_V`Nz$L@a1|#`vb)0)d}7urUzd zs~a_eA3d_mbGDPebrMTlFvWH{IY4CjOIWs_-d^CH?4nZYhwR9HmpU!8Lylc~22Io^ ktJ5jx#-xHJT&=tZ$%!wdbqszkl(9W=oLo~knf;Uh0F8$(9RL6T literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/890fbd6268d23fb58cef8058625a29d0ecb67783/_objects.copy-button.scssc b/examples/ngboost-vignette/.sass-cache/890fbd6268d23fb58cef8058625a29d0ecb67783/_objects.copy-button.scssc new file mode 100644 index 0000000000000000000000000000000000000000..52f53fe2de1bda4dda1483e2f0d39b6504310119 GIT binary patch literal 5153 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 c*jP0H{$D2%W%vB51|#NFj+Vpei#f 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/9af25a41181c5ca7c5de417e0616656429ac8851/main.scssc b/examples/ngboost-vignette/.sass-cache/9af25a41181c5ca7c5de417e0616656429ac8851/main.scssc new file mode 100644 index 0000000000000000000000000000000000000000..5541d487f177debc8acc2c5b53c0ce6f283696fe GIT binary patch literal 10821 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.headings.scssc b/examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.headings.scssc new file mode 100644 index 0000000000000000000000000000000000000000..f1e4add04e2182b36073f340e7ab4f71ba0af514 GIT binary patch literal 7247 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.page.scssc b/examples/ngboost-vignette/.sass-cache/9de513d87bd046ad6036eac87bbff538b93f576a/_elements.page.scssc new file mode 100644 index 0000000000000000000000000000000000000000..b0b9a9aad76a90b3adbaf139b567a73ec1c39237 GIT binary patch literal 4511 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.clearfix.scssc b/examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.clearfix.scssc new file mode 100644 index 0000000000000000000000000000000000000000..21feb6f16dfdf2be3e52fe566e67ff4625f72182 GIT binary patch literal 3256 zcmcImZExE)5Kf1|apa`V`!cjEGzS~n0I^&rsS|Pq*tHE{pc{fZD+cs~Kuc$btt@IJ z-6SaTpY~<{X+L8}S&}Q)=!Y#c0>m_r$GhjA=Z*)>PV>-t-0rknycKfj^P_gZ!%sRV zgOkpHKR!M@7#trQw}U=BIXHB_u1fN4k84fHxdI^MwUp*p8NxET%Yq9Lg$m-gXmtNm zqvvuof;h9Qu@5{N!`n)?apzBO&)ajK-qOc$_gvTAeg5j@v)8BH-zUpk^8M7^^YE`i zDlgB8!_0L8q^3oLY0=8t1voaeMSsgo4h9+weqCV@hv^ZzZa1rRL%hM8 zZA9J1wfCC_rM;ki*giV$crQS|H!|@OCEr0{v^NySi-&zFwejGJkCF&<{=@zUF^s_& z@O+I`_Yyt?PsC$k0$dp>BklR=zh)2tR|9d?)VNilOXrA*7$s5}P?ETlT)Np0$e&Y; zPG4&SqbkO#kVoCd*)7J3A)F$f3V7uIPu_Q!#)A8{>i#8Hv51FQwrUSd1yj1<`r>Bc zRMN#|T21Nx7n1!KaV28cNH!tLT25=!1zk zh{hq{-B{J))Wb*A?%!C>V=bveYnJD9xkXo44N2zEx}>X1bWKi3=OF1SbTeDkapll0 zR;Sx+Rg&)})t|JC6oD5oux;Zm;$-3LHa5!lrv!2sS3`~Jsxh5lS}hErGTVU05m--k zOCtPkfnNTR@Bz{;b+XP9t~7+c-No`WGF4?56Jom)@4+8qhy$pinnp0{qhjn;S>V0G zIJaA*KiK`JRzcJ3^Vb`mkUS6tSqpMB@k;joq;%?P!I5ln}JT|Fr7 z`zb$%T?-!rw$I}@`0DRFo_CvXL(eO{4b$ZT zasS3~*eHFClt=HwNBA~yTsIq{_Mw2EtoahR)G_gqfS;@<5O-GolkHSHxLKBo-NO)W ToK#i#q@Cf+=R>IS31|KRwy%Xw literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.font-size.scssc b/examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.font-size.scssc new file mode 100644 index 0000000000000000000000000000000000000000..d8c6b7e48c5cb4ec69b8faa2eec5d80821ef319c GIT binary patch literal 22307 zcmeHP-E$j9a+eerNPG~~w`9qphM+8o6a|3P2j!iUZ*9qxarVisi1Jm!)PYN2Np1w} z;&vAzc`jAm+a-TO-jesc9nRK*IUm2dK zX=|=&YTDmBj{nkWn>^xc-(bPapkbhN7hhhB+?U?e@wYty>t8?N8% zIi90kSG)Y^cou=3;AOxo>CV=cXZrYaN;mDc7{brf%SnF0`Ux`=Mvcm!Yp*@i^=hr< zhs%$itkj;H-W%WP)q1Y;&t}W_YTK4yv$r=L$Mb9Ep3&`fOfPzH|E;xco4#+>njV(D z)-$%vnq~JbzlE0XI32In6u+ulj_u#~tUsGo5ASk3zXqmQ-Jaw6rt4@dAf^#MfCQ}q zJ#XLh&F&1-OUH}lM} z+vvGzcqWO`{g%`18NRjIF-gGtw&jD39ux0&Oly0`XIrk*#gGtCv@T32UX^`qcvg$` zJuD@&Jmz7II{O-c1q!2EcB|8G;~g#Y{TREuOHX=x^E~YL4^E%83>(NprZJb-Gh5ac z;L3Px?z0}G23%p5&kT?GJ0|nYmO~V|+kLVMhne_sZ*P$;4a{wHJco6iwzah{Ag87V z9bhk}@D|xFY!jyTjeUWPP5p`7h^uVdwc3je2t%cO>O-h*+!D|&)7=0eE>;<$TxAWP z`NkWue$Z3s|;ye35#uTuyO2($= zbo#y-iGWo#s|n+4HG$f)nAM}_u%ko8VEG}fM$8$F-CK@VhB3hM`kTIMw0yQC03I3M zeXKN@T38TX;6*a8yj15?dJ(p*z^5I4HqXyFfvqdR*5&xcuyq5iFZd;WnqSt>I@*oE z<^)^S@2x${er|5jc2$OUlF~LR7gJI$>{daCbb9Og^$ACt4UKTiwR(QE?fqo9mH`bc z@|i}Z9IJ>Jd|B^fd0emMxMo|JhOkSMjH95cY~4(eaTAE&h{>SVornxx0y!YQ4s19R zGoF>iLjas@RK&ApU;su;GOtYXC_PDRr(Y@bes4kWjZU6pYYz>1)Zr)E%{A?n??P+P zp;5^jecur%(2^CjX{!w-gmExkt)jQh9%LBiuiYdiaeGbkPkjrf34Q8V;4IFpC`fY| z>4Yg$k*-D@Q6FSOeyTuTl_3+)9bOqh^UHpB({u}b(mF+*wM)7UlLpi7xJ|Ol9{hqU zAlP=gmaRN3>yB$}<6);!$<=}I>JZAmRq$)b_$8E=gI(6J{fP9`lWf|*Q((WAVav47 zs0t9S_t)6^C;8+m^-Rg~Ye?@>44Yby`K3nX=P_>WDL*8%*>FXozpA8tu_Hp(U$q(=xuIEj z?OPp9d+E4cql4|O{d=P~p`D|CO;2nI^bwTTyG9ScBZZ<4aF@56p?;OE*^~_-k(i2A zlUfX_c@~O%j^DuV8U1piRLet@D%!O$uW)?_x~2B6JB>;a792J`#|vv>j_^zGXj@no zF}DumjcdU-@YLQRU>o#Ko>vr0o|EM!Ak z&-Hor%x3PF@PzW@R{w%-P-U!krEFCayK+&sD;dAxQoY5wDCR z;*ZP4;kWbrj>GTbr*Kn3caYEX1%8jB6mzMCngezhVj8J+MWHd+mUyYi2foVqlo}s` z=a~)viUNODhA#vm-ehFtXVaTZ5EK^vFm{^2%^giwMVa@v%DfV$`r?RwfxjMSh)(ev zb;5ZFrKN00eZF|+i}KO;nb9G<#2HA!C?d;~=?x@(D8UhaEzgg2n&l656CblX8QTOcR+9RQgFc7`-K6t3Yhp=BVct;C2@>&|F95d)Cy z#K5rOcB23PE(}#2s}VY9RTCpL7>25T3`2P+EHoWQMl3~6wYtt`AnSGNTs)5_B$Q8VD-=iTTGeOMHth| zv1z5&HN~_}>Dzt7MbSnb8ok|dHjPeQjl5kO1v+ul6wn_?X)27LN`|1YVR}{)Iuv8T zBLuTVeEuj2k)pMbV%LJgE^4v&WmgvHgk1{gqz>yPs<8fGGUPwrqBa4M*NxuZMqF`4 zHBHRvv{~aDkJ*lof|edtu~Ajf28wq!f+`xXI4V|hXO{%-1%vize87&i!Hc?yj z28CE{s+q`ws^UBd6(Wp!DC-omkdT00)7!UwV^2fuX;-Z^$^xD&qk=N(JVX(oQsc>~ zPD%F^BF{xcBDo=gFwMasVKGz4f8CFUIQ;%_x!~0juVKB9Qj5T!l=v6%8Xhbm4^k5H z0IPN}CXZS(5w4MhL|>nFdpVludQfr|n8BpJFsfY%UN?i+O+rc*(kv8a6%?KfLxH4d zvTePE*u+ru(|;K~m}_AT5Wh`@J~>hEa))$t5~e`ld>8d;^C){-iXKSt!=)tF{6?8b zSFq$-!MD1mHwra%geXp8LH(JkYNXoglWcsxQtU@bWla9sAl88xkj7S?C z`~W3U5BVcipRxcY`lJGS98~$~r~h3+GgcqIqLcyBVBn;m{*Q8=PYS3m9k{VBL7>wKiZ~us>E{+ z7eBL0S&pd~Pca$DykwRes1_qB$a^+ci&3_oB^Kj~oMI4}=x4B|b0=;wK4zjb;+yAF zDTd=J$a|J@^++U=Of}!peIH8G^{2MBOdV2L(3ATdeb^j$=bib0+87S++P+A+wj@ipV%L^h3vg}ANTW|9jb4^F1yQC1(TpHa$z+&hqjC4- zaqw*~^3S4OVWLO@Xhp-sF}L)tfMA~lUxHmzX5v{hjf!Ij$96;>^J0X32>mrM|JCI& zr-!iNw+b7cD{PqKx8zZJlJlg+QTx*3%xRN2nWGF**K=UVv6Y>PrQeA7 zEJ>juQ4-HGBAUOcP)kLg!eu@#n zR=3{`PaQC4D}-sAE!-zyxcdabvXKeKX=WOPWBa~=2XqV_V1ZLRxw~MI-CGhG?csPj z+r$xce}@ugxOkx}a1n>t>BayYbqG)D;s`t4cQE3leRv9-MOSU8OB?4*S5oG1MW}nU zC2MGX1?3kNaR=pw3uKRi+bg2H@O#CJ#6jqmX?4h?!8r-fYzCfqXoyqUJsb&1<>ZPM zPf^A}%az!yQEN7$jB5QTkVei%VCb(YiI(W917Tw^SMWB zSERvu;!k7_!Ezo?{6fMZ^loVW^9tk0cZ!Q7RmQ0&$H6Q0K{oU+73ePppwDUfUZ?LV z{7Kvx!tdLGF<8pLo6B~FqXXzO$V*Xp_dO4wFF_<$WxOPw{Z66kI|aizBzPoV=qfd8 zUqUad3W8JiELP+!aZj@O#G@Fh!{^JHzVw3XYbOfLv5-=$h>V;h zaVb~UytB%@D+BW)92;Z^CA9TF9xzC&bENSU4rk4saF}S0=N{_Yh`Vf5e*|tD3Kov; z+XS}tNPg*;sa5+@Sv6|i8sJ`R5)WZ=v*6!}8BOq)2H?*jf>gBPk^1iF{*i%}{VQ;g zHUP=v65oI^%upw3{s#*5r)g{s^tdEUC8)`^LURm49pQ1QB9?`6AsgjvM~iCP_0xY< zhFprM9O7w7_3(r~h|y2~OEf0AJ|^pSk>vUqx&q>l@XthL4&qn{Yc!)XD{CPT>{+<6 zitdHL?J;NmGheI0MH|;8V+CBFqg-Jo+T((bdZhx*Fun_@0Bn30P}OPy`9p6W3NN4v z`i=1ds)HwvFQ8KA{?H4kz`n@u`rr$w0BdX)Pyv?oS^i-cPyyD^3#cN-Qy<)o6<k~K~GXLrQ7UNR_X0kqE6^$(%lZMvN88_0`8q! z+8f;n7aabp;3_x#dxxLzFdVo=Gad?5cvxLPc^8wE&`Xq1DRG2i@UQ$TZKhd&zZo_oi%M2S0t``>S}6oW6eA>sCd<8HuI^B_=8m`z zQ2~Tkikc^;ERKJ}q)EV_(1#5tR|KyF_weIgL4-bVd1@+(nSuwWA6pm5lI2*@yu7q1y%%veEStleU%!q2LLR3qDP!o`<{IDkLi8E!rv)x$} zQp8KNuh70id4={B+E-{_q3xNydNvzqs}xYe?4JGReCIpo%;oON=E}O!y}!D4@BaO@ zO}c-;R_T71cGtJ)24$^vd;Q)P+uE=9p)Z99o{BE3q8hOe zxzqKTy9Y*>hmAfL{XTPJyK(Z0Is>*>ZZ}KstR-v7d~im840Fje&Ff#ZA3l8abooVl z=lN%kAAc1+J)&7G4O5H@u}Nm0?kKp+6f;*IMvfJR3|c^e$erR6zGy}@=QpsU`KHc@Tx={ z97quVcZo7O`nUk1XnJYRgx>_A#Q z9$0Q~UkDjk>^1Fs4wK1)W$ucE z7iB!Q3lZUcPxt}z1u`Qh?f3yC(Kh%dk7dC674X!DWNJ5`ouQ}T!Zt+HXVmHZPw4YR zg4`XYdFP1wE_Zt%T4jd?WuSCO<>A|rZGlItxT12NK*B%aueoam!u)2y?U&B6Nj*>f zv~4CO-*=b^Q3M=i!W^b*N3N)}gMeZKkE>L})fS#0jF2%@T7=zH$e9?o*5c_ zif2h3&yj{eS0V|b;tlb)4f+OoLFrCn3+riS!&A zw7`>kt|L72g{J@;ctP<@s#_qm z6ZjC3F-gLEOyL+EGM4`d@a^t%yzh!sc<81DmfKo5G$ejd6Ig2qbEd(@@ISC z+K?M{)%)Q$h0JZ?g?4ic0v`!;6%@yxRPmj?F@c+)-U*~w-lv29KJyJ+;Ug-o(JXNX zeMpHw_?>~v1C?~=K~q=sxvM>`5#jS5JapR4atj!4gSfSvxHXV-I*qCt%_JehRRZ-B z`i8C40o;NTTO|aqeE@YW9qpBr`c{B_-GNeas29NfAYQJPq zLjNqL8e%A8jl5*XN6-PFB`!oM_dMVZLQjR?rw;#?b)Qgg6zU4>Ix?(rwO)>qKK0&= zV6&xOL0j#0;)YYKZB1i#X_%SvBhmMI*gxt;-2>miH&t6G%ACs@`YjFpE?&nQr-es% zOaD;ytXq)nALB*6hZK2`^$?Z28PM&h^AlI|u$p?fq^%6oVm9|2;lF$oL{+;|q=nH9Z75buvp2}bJq3)Lc z;i>W$0cG;*9whRYzSCTsOkLFVS095+NnNL;l}m=4$$G(u#kBJLItozVfxSQqt zFzcD+57C~?(Vo<3tI^eD&SKg{02yr^Af^3NN?RG6MmzR}l-?ySWV9#5E9M_K;;5MT zT(tLlui{fV>Qms#RO*--T~FpMrd|Y)QP%-d>OX5UG}0M##baMc>6gSHqh9rBSM9Bf znV+(?OwxQhM|v7)PNpuYQPz73dwUT;Mp_3*N&l+NP)|7J(meKslzvMLGSU-pkPHuv z#jNLHb1R%dz}~C)Opg4Frnnm2OlB@tya*s8uLGpye^1FPgVPj`eIcbk5*IS^jiW<2 zT`Y%tnqvNQt~m0k_g?n1Irg*QO}6(_qij_!l)eZcW3L0G?Eg&JD}(8TTu%Df7gG8w zG04~(N4z_{s1G-|54QEW9O*f5qMo{>Mjy!cB7lsv4v>&O*C=UIOeCaotYc@$xye#$ zksgYxInS%$Yj!ABqcmCJP6kfto#ggvH$GXzp$4uc)F~Iv#OKgC%R0-eD$6RmstTW; z;Z>Dk0OEhTZ7>Yd4{s?7F9Q~Dn{N!$jE?rm96pa@c&_%6$W({G#TLATzqf~KE3pW7 zo5&3Jl#8%S%-cj85@hO&u=+Y$w2_%xpVg~mVMFQ)1&)ikdE@4P(&eN@$TPnZ#U%t literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.mq.scssc b/examples/ngboost-vignette/.sass-cache/9fd7afbe71f86a5fbfa31ea400f2e71c73703494/_tools.mq.scssc new file mode 100644 index 0000000000000000000000000000000000000000..49c569b9d05705c83c6b67e313fc10f456aaa988 GIT binary patch literal 73117 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.clearfix.scssc b/examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.clearfix.scssc new file mode 100644 index 0000000000000000000000000000000000000000..6d096258c9f65c54f469555e9e98cae611fb4f40 GIT binary patch literal 2017 zcmdT_U2oeq6itUgv1P|j+z)h1H>fTKv<6}sUK?j50l;j%VYiZa592eSrP_cs7~MqUruD3V9e# zAv}nmMF%kBd=gH6irueUl6-T*wI*bt00?;_rFkV|=#n0b&P5U{$W9UT;5z6?rYU3< zuERd?q<~XrKD_mpKk^Q5?B{x(_vq-C7th}u&wsVSjh%exjeLhVFBZgQ<}wG;$)rko zLY>nMEc{F)knt2IWQ)n%2$|_m8wgEA2Eri&re&cb2o%qjAj$m|Hz(yJQfOz}q|dbB z$^^O8lI%7iuca3D*iG8Q^SVr)ooO&Q++vW$l@4&Q#eLq74RhZk50eOG%6oh`Gb#KWg=UmeytNQ4wiJz_4((GV@Wr=v}G-S=#NIO zH}akv!=rN#E#TFpd8xP%nP;TOy%nXGxQ5J+af5H!q%Q4P%hB$HZm|yP?b5!a+ikid zSNglCzeDd-Q5T~&z03Oa9@}1T+#&(nxP41Jj%{+=<6^JQrc`gha;`MQfkj|h!^)PB zpnIeu#CA46f!_fBwXtKx%3 zQ`2iA^cv^cXi$rQX&WADv4Juo1yymYtMsLnzm$ajFdyD7JFO{)%eY$V^2&J+mmj5y zQIqdi1ii(6B;-|jEr~xMe#!GqvcnJ;Xrrtv@k(m5l;`;EFr6nHxj_J$b{VX~rnmZQ zH1)BN)|Izx^sp}LA4B%)O>FN9+GJp0n} z-IWtH$WQbq`bqtr&hjFgiVNhy1zNpmmz*8W%sFRf51Q@fp?mmK+=f0xM@I*T?f$`| zgZ(xf#4TvI4%I_hx?k5M**;-f6Vg=xg#03g=iPhRdG_2cuFUHbZ`XH-^Sn#kz)Vsg zi$baqOQ>@?he`K&0)ma8MV14Z8ZL$YIESVQ7r-5|9%wmM5rm3~0Z6iy*X1O8h~=|S z7f3zOhA9)KQcJQ^H93}=TetIc1^q1rvftNWaJd|Sh_fSf-M*~RZ}?mMvW=+I_~gIQ zptK+DAMQUoYWvSXzcVuRQzd_e$Y_7SjV}g0DYfz80~@6Y=<>nd86OBR2K-PX*nY|e z;BztNCc@p=@B~9b^KiOs4tWesjjtWL(8ap&Q7V-IC5e~k(iLWYd65Fr{E(Ox8lLE-J8uRRt;pf&GV>?Y{Rw?I*s zE?Oefr50Td7Li3RtxLMPK-Xl>Di>Mh(2ZiZjJpMTJ*d;oV0E??j1#b}pl&h6waxoR zbG(PK#2}DTdA=Dx)`OHO4RL40SH&-e>QTj0u!hi@DX!S*xcBQr!~Lg4$_pUK%-8sE)O#D~*F*fTUjWXLs8rBpAJ6JN0MYxM#?4I5mxAL4Obv9_-QL0Ey;LzGbSE#@8`M4_ud@!we~0)LOXta2 zfOera%Bldn-$F2ADgG}8I!zds2n|pqgD~G#3AZ{^tyRpYHYJ?hJt(s~XKB4W6zok+ ztA$v%A`Hus)IFEt;AALRAu%bE16n8t157z`L6d6DCaN+cqkf)UlHa!}}Z*X#_E(3L<8(rEu(dDh;uB zaJ*@tjn&!q3|iZm-`bQqcIREp78#3!G7a@a81{kG1iY`Z_A-CxtgZMXH?od$iJpU~ z5&>NB9H2&lK7t-i% literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.spacings.scssc b/examples/ngboost-vignette/.sass-cache/c2336237bdb2f4b05d02bb4da4d653c4aaf729a9/_utilities.spacings.scssc new file mode 100644 index 0000000000000000000000000000000000000000..6b4ea1ed4269b23c5756c348703a64b27633e0d8 GIT binary patch literal 9593 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/e20638218b3a2510d4dbda969c4f3257e4ce6338/_generic.phone-scrolling.scssc b/examples/ngboost-vignette/.sass-cache/e20638218b3a2510d4dbda969c4f3257e4ce6338/_generic.phone-scrolling.scssc new file mode 100644 index 0000000000000000000000000000000000000000..dcc6cbaf623a9a73071327d52e66694d44f6901c GIT binary patch literal 1767 zcmcIk(Qex|6!pWP$Z}G*S=(huyJ=qcPy>l<$B9$&g}}A|2DTxX-M$2zwj_CRzvyR~Wsp~O zEq2AzC0sb;PCw{&J-_S!&M!gxI#M!CMLzd+hNufak;*R?G6#)CfkT{Mr^I9CrU25) zrOJ3por?xuoQM>1o^0CX+;i!Q~EvJT8yWUHj9eUyCN*Y&#lvZiBZPln$c7 zaBzG&3Vs27X=D);N`8RI=wL2Pkk4mQY7@Xmo)szRdgI_q%yTdXf>0yjLBZz`%pnIQ zq9Cjmhb2D;chnu~NNa~Sr^t%P3aJbzN&M9`<7xxNJH!6;jW&?E*sVgk$DQ;4uv={5 z3>j6x)9`;n-(wmj53TOuHCH(r2ZeJdU>qE2!S&)(<80Hd%M`3z+jeMNTN66nlCND> zaHSy*?LGo^DhEJ{N=ZeCH8G#SUrWd%a8daTvKgv-;Yjjwv$(F?qCeRGKmP4MijzWJ z)ml}3w^{Wz7gu-#PhI5F4yp?tK@WZA(QRvXy_{JimCMr2TGD-ozQD<8Thhl(`b4gb z>7X$k`t;t{7Jb&E&ug#}v%=kHx|%v%dpP&;yfr-g<{m zLR&cUt2;vN*Xx=9`dT!|6Naz62=z^F_($UAaBag1Wux}?hwMW~OZBMt$txAa7_Pg#XX$l=J9ncEr=J0+(-Uj} literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/e543d1eb217f57bb21bdd749450abafd7ddc5797/main.scssc b/examples/ngboost-vignette/.sass-cache/e543d1eb217f57bb21bdd749450abafd7ddc5797/main.scssc new file mode 100644 index 0000000000000000000000000000000000000000..003db4e565881ce824c049ae59c35601cc49292c GIT binary patch literal 5150 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.syntax-highlighting.scssc b/examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.syntax-highlighting.scssc new file mode 100644 index 0000000000000000000000000000000000000000..bf76a27435c52a6120a6f5fa6e299bd163a31584 GIT binary patch literal 46019 zcmcJYYiu3KmEWcIn4~C8OY_jY9~3z+Ys|}sL`l3oGwRV}X6UtNW=GmF;6b8XUN*^& zE^l-1z0?B}!?QpT7zu(6;(S;GyV)Q?vVlLun{4vQ3HFhX*}y@tn{T!^*nG&h-3_uy zz9i21SD!wot8W!=lUK4qn}@3U*Xh&0Q&nAE-F>ccv2lJnSw6ph?qciwa=W$M-Z;O! za`9Yp{?hun#pTU&7nfJs%PSizt(Df|^dnPQ^Vu7%e!tng*-MgU^OGzae3)${Cz@g0 z-cCCky`=luiLCiTxzN>YXD8`$x#RJjR%b8yY+`M8dExBY>6x=LH|}=_t$Q=u>DG3K zeg|_*@-ibKd-0UX<`t{K`>28=R(c}2XspyIH7_|(K)@G0XjfG$8 zC%yhcdzpfI>Egn*qfCxr>d(Y|I`g-1`fuHB^|}NP zoxiCY$zXyGX}i_m{`Qggs?_dv5>R^*2Ti{N#>aPiNkd|2V)uBw+v@d`jaw)~qO%MI zMZP`Add()lZrwC)ru2^ZnUG)_k#AxF|Onox#7)4gEWvs7_LpI!>h~ zC68`Mlh^a}55{oFYqL}2xAFF*`9puV)lL?P#Odh7V%B`F+RD`qp)?h}x;7hH2g^0+ z82WqbU=z8Nr%gYLo}Y+bpfE-!v*^^Z=&>w^eS%=0h@LE2Pei8|qo<1Ijb`pi^ZB^X z$8gI^# z?)*K(C7MFC8T}jWUb;IdIouP?U^v1aU$kmyu%F5MXh#)3*X(|L zsc<@rzRKZ0vD@0%prA?Yqj>~4YUELDtRy=c#b_Z~M0ieA!gGQG@`N}C>*=B;geO{x zmhE`B1T-GDz_}dac+G0yF=^nu1v$GCe@*^fPQrBIb^L}%+0;Ic4(L`fFy73f7f(hn z8A$D}CVDxGW~NNX5Y6TtL^OvkU?PiNcV}w|7~WWnzEVFsPf2!~%3&H(=*_QZtwRne z-kR62G&qR<#Al!DkxVw)=6sGkf{DCbn4UVg=TqXjsSFL)u{}RUzUpa*RrP#QNu6$I zovi2KbZ&L^(lDo|iZjl6fEJ#Ua}Vn!!Nkd_OF%)l1qx1&eqpunjI>~b%D%)$f2Am( zhk9}|>kj7ogZmvbR+v69nx~8`^742(Xm!&344M9|$V`{RU$y*ME}Dx@P+wj9sAnvZ zb0Q)~{r9Z`XQjaKQIkLM(eFtC$xrb;zGG=A6DyRGlP3@kngA@Eo#B}(W}6r~rklt6 zm|70(&PH@g6s%Y+TrQl^JUP}#dO2((Gi9nM84|t+&hlx=6;l}+tYhcOV^*%f(zxVV zUNcut%(X5oU0k|2oGy=5(glrZy1+V91j-GLOF+}b77%cLUrq%I_|k=aiI4t4;ew{i z>Gf9o_Es<3>u$_fI|(FB^JSh^@pOV`3s=#f(7&5Ox_LZq4F*9X_8D+h(5vA!j;C_?1{PL+{W_8vI#5BpgsA5 z{|X(fw~7PtC!$Ma&I;GtA|mnpBddUBs-1}JPki)`ML`l#nvIYCD@#m?D`(;<%Earv z9$f(zc^F-=Gf)IM1JU?pOZol63(dgE#%&YJk@+`~mkZO!51xHGQklxoU>!UA9w(1= zq=Kcf$g_`z{$fsb%5>j%6I>jdL%^KY>c5YzXPu4V1bn;#4cgI;7uG99ocz$ZL^KH@ z@~Vgw&;(yPDyIV_bXc^hVTa=2k)xs^*hs_i(f?_wX{gHBpacJfa2(9pavG~LIZqHdAMMh$AYIja(GgKb2OcOouw*8r z=u9=*`Q^??b|$%CNEf{ahUb`!`KB^7SjUFvN%B(Rfu#XC(3pSBJwJZ3f(=^G0Uws0 zPqa659p@5IWNZQHYg&4aQNlOkvomq9F34yXd-xf$%VnJ*qfz0)-^aQ{G~Xbin?A9BoC%Islo*pM>Ol4@Wj-4~7$xF={SQ?oF=gjKx7=5~uGiX6`2G)q2aS3S7 z*aE`NKh~3t626>aXX4USol-MC88+<5zRX}?0;<^_M6g- zJuN|Pawrb|jU2Y7j5Hhv-?QZujB?66S4x?WG0V@|-h>ftP8c|H-ipk7h0E3;vs5=> z@`52PK8`WSn99 Xny3BA+#3U};n5QZUgBCPlV2wx^mw+aWEgYY7GRhhAY$;=I&{}fGKf;JKCk*`15eAk!Va(mJ(aWxr?Yv+}3(#XEjHwI_*0B@j zY4TDN29|~;PZ(OKE3O4cty(%pn5QcVgBCPlV2wx^mw+aWEg%W=N+A6fO863nor!~2 z1MS(0gY}FsMmMrJ^G`v{lI zx+sE1ugfue`v{lFIqO79K1FieAK1sOYe@E}3Kz(sI9QY8);>ZSj)T*-oF+rLk0_6- zH+GYD+Uj^mRng{70*-uO9n`mq$dpIbt$amg^ragY3<>fvItf!58mwb?63>v&+DX9D zxEyd)U0hroo`ybC=_JsCb`r2gbP_HB?IdggA?L21YLxJG66{PI+!J!NM;x_U8(l2c zWTQ);AB$Ggqd$+D>CvA=5&q{by4CeI-QJzs+{jNiqHiy?qV;9L1=fWE7ytCsC88Y& zL@tVmgyV19;aHRsb|SGuaqxE}9GXbda2#ygatcf}k={?bNiS_TuF*Yux`*veB+=$X zf+MR|WPYJ=Srh4aV{2okk>8B3<`UgvuE5Aux%~iVPP|el6U`Pm#G47el z&|n=qqn;x#HKSl@fbxtg-6%QyDgfETD5ob3g2-z{ymj*Q$d{~U zUX&7cpU)1(!I!@zB`E0mDxNeP2Y;zFp^65pOw-dPny&BcZhJd?5oUrQsheG3Nq%UD zPXyJx(>=)r!}R%a2r`wS!8$fU&y$x*5G)PK5J5wiS7wvM&d9HOkWrWCQ}(2tYgFU0(q%0!P2N47N+lGI{JMK zbl+E;R#)>Yd3a&tghmx7ST%5Ri6~AGap1I}=N~0}II%-Gp!C2}deGj`EjgEfl4A=$;82 z;=0atBsyb+FEwV2E)ktELPSPH9pnF*9S+}&5w*#oIQT6I2f)k6cxgBe{-!Obz?2i| z`BEaSb?GsL{Vwc8oHGfY=u8pT*N3}iy0A+RaA8*@(@Wzd6Dn8dp>knYOIef6zOXZu zL&^sHP}J=-eThP#HDPJgA4HnIR7q2`plJ$gM4Gw;G)-**Nz!4c4(!>Sgj$Qwo+w z=&)0%?*gswVg&fEPNgng%I_k=3wtVsMm5V|X_k3s<}MMAB+QfD5Ki7ra`GL0RI zgV{%l^QUM@!*TGKEvJDiqlMdO#Z>B}y}|C@z&n!?Y32!j=u8Th++Vb2Qgt_KY~=+* z+C(-6Po^?7SjXmRhP+gsU};zm$~X*(4adQ|wwy-I2NOMUwX^GoNu(Jj_@OYta>G>jp6pg}Pxj0> zFqz6BIfkF1@%{{XsW8FPunfWExlL)74*0nz_if5E6@<`^j#98{Y_oKUC_)g?r7Icv zztD4z5=yGQ>ckGk!LK+Fl7{2pmu)$Xl@B3$vM$@_%1)#iA^4%2En!_M`bVoj+N*nI zmlq7v*>Mmum7&2pc7HTWUMfPcG%Q019bnywmc#8e@s_NK&sKOsquM3G(i80+-&`Wf z6GR+c(r+sODBnbkmxvMt5eHF! zq6nabk0^F14*siyC}}tj{*x`IVJj1b-L1up>1L0fq{f3l-bs_FGf;3vfr7Q->ZESh zd|+~t3x+fZj4^34m7&2pHc+pSmkJatjm!{GhaTr%sZfM=bew}#W1Mq|C`Ax)jB_Wy zEc0%ZP+0A8jvb1FQ(rDl8DgHVyhy`waKx6=Sd}Tl$_qb;(zr_Rq8PNg{>hSvGeq!2 zM><%|!lQDpbi3}}6fPK2aK?bhRE7rY*bu!+UMfVeG%ybiqE{;rp&f+?Rt<<;A_@^i z91y*uXB{Pc5V1pXaM=NoG#m#Dww%VQ4ADy^h^{5=PK%ySq2~gM{q_tf+gFs zERO14!QC#d;9eVtBU3q~+o1RvnsmQLUMfehG&T>8qt_}Np&jK2Rt=6^BFYg&931WF ziAM<^N9<4>bR8T?!*TFeZ8?oqnIkL$6rIt>{bX+=^CBeDj1c@#gkU)*-M8!B?B#+X ziH^|~naa>$9lI-foxD_pU};z$973;G5JEeO5Ud&qxkMBph&T}Xbv@@O;X{ZWii6*9 zAS4aP!QZvzG*)GV%H!E5^oVlr&OTejM4TalCkhcP_jp!!mVLXJWxp{FM5b~`TN&^( z)DOKuUMfVeG%z_tH6M*XHg|r-@dU#g6@1WwPO4$)c}06e_vBmxijFNHm;C=h&oxT; zCe-Xq9Q>i6ql^8Ao&mZ%)(zQcbE%l-`1e%0L^SOnA`44;@9ih{Vf!{^qqfRG46CP!0(bZSii>lWGw?X)0U2 zHnbhmx!_i5eG|eD@!QhV~HJ#gLfP(NyBk4Z_8=ed@SX!HuJJ1 z(##V4P?lghSej~d^P9M%7t6R{n7(;%n)GRRQyChpW7G5|d8stP(y$zoCet;2f%Vrf z3Y<>NEiPW7|1wc;R)|8gN))U!+9~*6nB)>sq98IWA~L>HXa6LhEtK#P#SYQcg@Y(* zI1c`bEvKQY67?ayhp_Q3z3V1j-y8UcI*~5<_=@GRbG59yUUNyG3x@O<;uu#KrZO~G z$0q8l6jvn*mWE{E0 z;2%1Ol7{JG!IR8{_1PsSFL)v2&$CUTUtu z(vXbP_wGBIH!2B)W;KCe)#!U&BAP@HarC|6q>POy;Y%WRC=O0e7H3dtl7{2p|0zwV zqM<9(gsuFh?;Uy9LX;UOXlmyR>wMvk1ytRg*WF^X=)yQanaW|hKtP#aZJ-v&O9cv+ zM&*z|(X23kE~Gp?yhP92%Jgud0u-86pkUPi$|a&eLBs*nI|>v^_<&-E=q82(C}}tj z8n&EpxspC;QPT&OrjPeJ$|a&H1QEx|=%4G! zM+sjFu|sk27Y>%B;W+pcTTY`^W=Z;9bin2t8s5HFq!}jop(~@XBtNXax9$zjZgGS2 z+&D0q${{U*;D?~JVLC@%Don66EQf>%E2G#&Sf2UP#8+p&=PE#vBVC=!7n;kl7{0Tw&gT*WtL>1`?S?dTkHG04NsIAD7c|O!E#=f zXLoA?#RWs!*g6JKrZO~G#|CPJyi}lIX;g-QI`n>ol?p*8R<5jzwIzwLlY8m4)-EvJDi!-O|9 z+)VBb8sFTe4`}T_SrTo=36AJw36}FF%}(75RW2A3l?Mh&ZzG$^&|n=KsEg#K0tHLs za!8;?>~OhQ;R$UjPq1q6R(#+DA<_cIv)Ih6{!yGX_+qGBjAnhUyY|sZhbv;5;0t zE>)mHn+g@I8c?}J6e@@~pgMU>1`w3+LB$Ty1e-FmI{%i2E*R27`ePtvDno;HY@}AnOGOHnhUVcQwOT<6Z7Nc* zY9QqjQKTT^K4^+mPUBWa>dY`wYxJ$ht$lXnNfV3}{86l6 zIX6S^)V=S@1w)b<11nP*8mwbu)g&(!D_9zyhl5qKf)(0StYFo^$|a&$LBxSorW~Mz z4=Z+vCf^RMq~SQYWy@*Y%2+vis*l?K!B6BFDfpsD!E*Lg{kq$zxL}w@;~-@!LxXi} zq$2WCk%Fb6IV4j1Z}W^QM4?F~3RVrGTp~&oL>xr@rXqk6KBCwmdhppnlr$U%ziP{A z*vdrBmO83@n`h$+J;ypo_j#68+F-2UkYWWZDhB29oT^`UHx(BQ=__?(^i-xYG+4*R z>Min8v4W-Xc_>)DRly2PDps&+VC51~tRUjR>c`3fO8Bs1hv?~N2UgN>9Q>{=r(r8& zg(nh=DHUUNb-U%?jxPF)6r53{U^$i&rW*aaPquQwkREIt11VD(8mwa@^)`8_NWs$B zJQSqft{{ab6)9LXkaCGAQV?+<^>bwaC45M+L-Z&#eQ2~gOP7Y@;LmJ14O zi6~SMaX@v;K29H0>`)y1H3wAEa2$MO%W2p~Ky|&}Zte42pR~YG!5xJPmK&5 zV3@|^KxHaJgLQ1EV)9a>152axP@sw{P@zeM3RVrMTp|h;L>y54s(qY3sMw)6_%_4XRusN)<#LRQ;}foIa}9p*Z+G2UXHAZ56ZSG;C$6 z9M^tWr0VTv{?8*x8;lhkQmkOPul?MgbQ%6kM8Ej(%9U}jGL^&h3Snh_wXwQFUTS<` zX?z|ER#z%mp-IIGRt>CNB8nA699aFCeVjh5*r7Q1a|c$^Ful{)mea76u`1uA;m+!# z!S+5YpV9y`1#groSeKl$s=DtI>E{JQdOm)PuF6z~2J6^NT_rCyIIuK0hh$1_{JmM+ zN5a}sOGL=KxREnRW$@(?& zQn7-i!8s&W`>%dpt1yKol_^*?x+<55G6fMwSM`xXfD%5Y*r7Q1*uj)EOpm14avHWW zQ;sXZ5#JD%78okHqkR=D_hh~1ixVdM#hVkZj{}vd9MZ;q{0u>LoxD`2U}2 zOQSOmS3~c2(eK^7SHTL6Dps&+bXP7B#R?*h?&^oi0ZRC=Vuxrql>;kjn08ayavHcY zR#;Ux8-@9K_r{2qw23}L1!uIgg5_LQzf<={4Hpd4_s4eM+EiuBY3Q6-6?=vo z`#&Kr`ivEv(Y^|nb7|quR?VHmTri~X?vBw{naa>$9UH3;$VSQE z!K#6kOGL4Phy$yWCuG8o5nR=5r{y_I0~ekWVs z=hMs50CNRtGe)yaAhh(gLQ1K*2qic3YG@vp>efV;R?+vSFmbu zU#nn+HWe#aH6~Xs5yc83 zj>%P~9H4{`D|U$XRynYehG}n=EvIoSWA$3;ZeafMyasRCYkYmb&re7@%od!|NfxZj z!+mL3gf?E6jya^FZrA3?wRbe?f#RsfL;h|nzoNTnZ{d8WwMKbb^cxaao(+>}x3#a7M*`_iy zSjWzV53M7BrGXpD1a!8=%vpl)@Gl~Pxk$!)5-46uh*QY zJz>tcT`5dIIrwR(V_b}$!n-m|W&9uiYM=H`C>{zftfwS8L#O>TzQ?fD%l5h(^CoXh zUq1C2-E){Po%<7W*REZ;uzbb*EAnMJT8I|m%Z(z4oHjS8y%*&4!-j>7=cEby^s_UxTg!3!KPfz?`$Q^d$E$q$pXXffP{ig_x&=g^fSli~Nx^e@ z-n;6C>8A&W;RS)gRE7rY*f4xb(NP#+>F2PAU>JIK%OYU;((=`F`Kr1_z&DFHG6CPD zMjjIaVCl%@>;PN>N`NgO1pIG3WhimdLjXGy2mi-Gz^8@haq!<&&JNPbO&%heVLV87 zb~~*>vNjw1(?=K1o}HdKJ9FcHchI^wvz=~jcj$-Sua}QI?QA2NX;W9xr&0^k)4RQ- zA%$i>pPr%rWOtI@Ci;?l&6(ETAdAdjcUv3yMsIVbv6AdW)8C%9>X{;qHmc8jo)2}+ znYq=~OA!rs-NAf+aKDo@XVO8dL*KFg_RPY<%++jXC+QCInn|x`)ofi@y0~;PnyK~! zB$}MtSl(F9HLl}3)VacKZre0>H^D(SXD|ZhCHXDQdD(3Lvc(gWd{8?meXxUSd}EK^ zY1m1-32W?DHC8z=!=7?n8XxzP-Covafu*Xz=*Twm*K%PC}ol6_v)lQh>cGtyX?6D=P98O_ob?r+nNMwXg5&ZgUN= zS8{;9@NPF$!fb2XE=$Xqc3J+GH7lofY2TsIw~K9+;zPb7Q!7IBZB@5SHAE%>6lwZ! zrd==piX=B)VV6FPXcx}E63B%aGfx&4v8P+hG%e>Udv=WID`&R8e)5Ye3@R0>r%S%* zl$XD4x~0$aj%YaFiubn{@519sjJD@Mib|y~ws1X;)`)uf;xAWW{6i?JsZX^dG#09-?XDJvVQR@B(C1It4oTSw(vjZ>1{4tA&2@TdU;Ff!01gT zT=I@BI~1{EaWF5Q-OY=8I4(w2^In3yhN(~@i=MR4{ir;4o|oRK1jz$!{!lSjsr1&q zD)h)GSE!tIUj<%W;7V1p+}YHi$G!3j{R;G+jFP8$xK;&zUoAYW!8I!5v#$p2#pepk z_8IqAz*cLnQ(@m%C*MiSbt>n@SBE!Ba;3_-@l`7J!Evp7^$y8wbK)wM`9QvLCnvM$ zAbE3?*~P-ODpNF{d*xYKe`r>Q+wRVmZkT(}c~k3^Az3CNCg1HFjCqYa6?VL-oZmj; zN?Ug5{FU;X16-?en*6njrQf_>+NreW$)fVY9$kh^*Ii$m)8Bea9P8}WMzcQ uIxa-=wTDuj^~!ZLS1ksG{7Mz&&3Z*hSHSijunD?i)T`p$D(>X0-2DH>&R~`R literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.tables.scssc b/examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.tables.scssc new file mode 100644 index 0000000000000000000000000000000000000000..9c6465b6287c21baf971af94a783e44845ef9255 GIT binary patch literal 6038 zcmeHLTW{mI6;9H^aU3Vk{W6)0#*^7gHjW){W->#zfQs%02vAH1O}a0^!lf<7RwIk5 zNKX;$ z((k|Z`p4dYz3IO1bl&yfd++=27(X4@&hmC z;Z;qLr_)5g7UMAwQ@Ta>6ALE%s&d|(``K*!;GpIlI2Y(jy_khVF33(|^b5TSzQNrE z(r~3>vFb%a3bJRDd=%10w)1ou_|;u;eJ#0yze_F;J^cw?!^1jV_ZL7iYINRI?cYlt z%l4pq(tY#pwEYd2H%dh9C>DR@10~x-U$w&_xJ{}yzhmPFJZd&tpZsCSmE!H5gh*;f zY{=U@;20vZ-827=(m0RZGHwifAUjsqI ze@v^Iww$)vnj5iLa<7MHz^s|NAB;RuA|?b=lU?vXO?WuqRdD;5kNe=-tBN4cio}L) zp1#EMR}ap?K>;^ZiwRX)2`(~`-zKicXhNu#z74%4BR1e2h`ME3$IzFPK8BV4t7BUV zx>uo3!5p+9=*j|J6-k&@AWSQCV`{ZXH#>C8Fw;C!zI(1rb?RAZG|g|>;)km`-EA*x#=4c~*b^sk|4k*4eMDCPsEAfSAxwsF*h$nl|`0}YyZr2uXP;H+oh zaJ6l~(F1>mth!J!qMp1D6}uzVkl)(ID&v42b?B71(*1>{L1tdElXRkzPty2F z)pvhslos@>)cQ4D{xi$dLo_dKX&cu45Q-`bax>B++D7}V7VNVM7HMSK;cCl>Li^AT zJ+=)}#vnI{&7hlPhWo)1u#^e-+RB_%75BI1Jjc4x7qQ3V)<6USizF{cy<{Eh=rOR@ z3$WJ#=x(MJu3j3c<*>^bM& zcLM=6%CqM7d zFaDkSjvp5V%qvf8@_6p`3_SLd<*a*X)j-1(3Y5x94Otf@=FRt!kmf;5-m-9&x2$qV ziE$qX3HjxaaP<(9G5nWSLD;tR+JRLg3mU9Vl`ANCrX1EI=6TaeLiW?)pwNn>O4|`$ z7@+;?p$`Isyey;tj>SIC=!+OETWKP;CQx2m$`9|+{$$IYgixL2K*Z3Nl8M5Q_K>t^ zNCD@r3G%eU?*gpV%;UIvm4U27pNBFg=&2UJZHd=c1sz)NApX;%L|lGUE^ptGcUqK( z^E!vAjp2M&L(Uww`Y{{aaA>?|k3#W)Yk8q5Ge=%%&>T4AI9u^&zyZ!PKQ5h0${6Kgga*tRWnuI;OHHUs$yiP8FiL&l&i>sHthnCQA-a4Uv$GS zwUJG~hm3w)zkl(c^n3g`?Y=NrBm>2~inS)XIckFJ#Us0aew2LTiAA#E>U+mP`GcN* zd#McqcvZkwvz%c=Ze+n_@eqnjSH~HY5p!|GndMO!@)nF!#nWu6&>tg@l#ktlUsw*o z)w3)pk`@e>HZ6Fw4;^9{3+RR|T|~4Yba_om%VttqAYDevsx8SuPajMd7pD*(4k(Zp z7hHXnsgpL#@-|b(C{Gugkx7@i85Uh+Wz literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.typography.scssc b/examples/ngboost-vignette/.sass-cache/f906d6cebd10ac6fdcdf759d2db1238fde21d719/_elements.typography.scssc new file mode 100644 index 0000000000000000000000000000000000000000..50746651fa7b92dee3bfbcea33b5ae49f12b2971 GIT binary patch literal 9808 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 F{U2NGoJ0Ts literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/Gemfile b/examples/ngboost-vignette/Gemfile new file mode 100644 index 00000000..5230ce56 --- /dev/null +++ b/examples/ngboost-vignette/Gemfile @@ -0,0 +1,21 @@ +source 'https://rubygems.org' + +group :jekyll_plugins do + gem 'github-pages' + gem 'jekyll-feed', '~> 0.6' + + # Textbook plugins + gem 'jekyll-redirect-from' + gem 'jekyll-scholar' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +# Performance-booster for watching directories on Windows +gem 'wdm', '~> 0.1.0' if Gem.win_platform? + +# Development tools +gem 'guard', '~> 2.14.2' +gem 'guard-jekyll-plus', '~> 2.0.2' +gem 'guard-livereload', '~> 2.5.2' diff --git a/examples/ngboost-vignette/Gemfile.lock b/examples/ngboost-vignette/Gemfile.lock new file mode 100644 index 00000000..893479d6 --- /dev/null +++ b/examples/ngboost-vignette/Gemfile.lock @@ -0,0 +1,307 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (4.2.11.1) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + bibtex-ruby (4.4.7) + latex-decode (~> 0.0) + citeproc (1.0.9) + namae (~> 1.0) + citeproc-ruby (1.1.10) + citeproc (~> 1.0, >= 1.0.9) + csl (~> 1.5) + coderay (1.1.2) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.11.1) + colorator (1.1.0) + commonmarker (0.17.13) + ruby-enum (~> 0.5) + concurrent-ruby (1.1.5) + csl (1.5.0) + namae (~> 1.0) + csl-styles (1.0.1.9) + csl (~> 1.0) + dnsruby (1.61.3) + addressable (~> 2.5) + em-websocket (0.5.1) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0.6.0) + ethon (0.12.0) + ffi (>= 1.3.0) + eventmachine (1.2.7) + execjs (2.7.0) + faraday (0.17.0) + multipart-post (>= 1.2, < 3) + ffi (1.11.1) + formatador (0.2.5) + forwardable-extended (2.6.0) + gemoji (3.0.1) + github-pages (202) + activesupport (= 4.2.11.1) + github-pages-health-check (= 1.16.1) + jekyll (= 3.8.5) + jekyll-avatar (= 0.6.0) + jekyll-coffeescript (= 1.1.1) + jekyll-commonmark-ghpages (= 0.1.6) + jekyll-default-layout (= 0.1.4) + jekyll-feed (= 0.11.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.12.1) + jekyll-mentions (= 1.4.1) + jekyll-optional-front-matter (= 0.3.0) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.2.0) + jekyll-redirect-from (= 0.14.0) + jekyll-relative-links (= 0.6.0) + jekyll-remote-theme (= 0.4.0) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.5.0) + jekyll-sitemap (= 1.2.0) + jekyll-swiss (= 0.4.0) + jekyll-theme-architect (= 0.1.1) + jekyll-theme-cayman (= 0.1.1) + jekyll-theme-dinky (= 0.1.1) + jekyll-theme-hacker (= 0.1.1) + jekyll-theme-leap-day (= 0.1.1) + jekyll-theme-merlot (= 0.1.1) + jekyll-theme-midnight (= 0.1.1) + jekyll-theme-minimal (= 0.1.1) + jekyll-theme-modernist (= 0.1.1) + jekyll-theme-primer (= 0.5.3) + jekyll-theme-slate (= 0.1.1) + jekyll-theme-tactile (= 0.1.1) + jekyll-theme-time-machine (= 0.1.1) + jekyll-titles-from-headings (= 0.5.1) + jemoji (= 0.10.2) + kramdown (= 1.17.0) + liquid (= 4.0.0) + listen (= 3.1.5) + mercenary (~> 0.3) + minima (= 2.5.0) + nokogiri (>= 1.10.4, < 2.0) + rouge (= 3.11.0) + terminal-table (~> 1.4) + github-pages-health-check (1.16.1) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (~> 4.0) + public_suffix (~> 3.0) + typhoeus (~> 1.3) + guard (2.14.2) + formatador (>= 0.2.4) + listen (>= 2.7, < 4.0) + lumberjack (>= 1.0.12, < 2.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-compat (1.2.1) + guard-jekyll-plus (2.0.2) + guard (~> 2.10, >= 2.10.3) + guard-compat (~> 1.1) + jekyll (>= 1.0.0) + guard-livereload (2.5.2) + em-websocket (~> 0.5) + guard (~> 2.8) + guard-compat (~> 1.0) + multi_json (~> 1.8) + html-pipeline (2.12.0) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.6.0) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + jekyll (3.8.5) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 0.7) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (~> 1.14) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.6.0) + jekyll (~> 3.0) + jekyll-coffeescript (1.1.1) + coffee-script (~> 2.2) + coffee-script-source (~> 1.11.1) + jekyll-commonmark (1.3.1) + commonmarker (~> 0.14) + jekyll (>= 3.7, < 5.0) + jekyll-commonmark-ghpages (0.1.6) + commonmarker (~> 0.17.6) + jekyll-commonmark (~> 1.2) + rouge (>= 2.0, < 4.0) + jekyll-default-layout (0.1.4) + jekyll (~> 3.0) + jekyll-feed (0.11.0) + jekyll (~> 3.3) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.12.1) + jekyll (~> 3.4) + octokit (~> 4.0, != 4.4.0) + jekyll-mentions (1.4.1) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-optional-front-matter (0.3.0) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.2.0) + jekyll (~> 3.0) + jekyll-redirect-from (0.14.0) + jekyll (~> 3.3) + jekyll-relative-links (0.6.0) + jekyll (~> 3.3) + jekyll-remote-theme (0.4.0) + addressable (~> 2.0) + jekyll (~> 3.5) + rubyzip (>= 1.2.1, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-scholar (5.16.0) + bibtex-ruby (~> 4.0, >= 4.0.13) + citeproc-ruby (~> 1.0) + csl-styles (~> 1.0) + jekyll (~> 3.0) + jekyll-seo-tag (2.5.0) + jekyll (~> 3.3) + jekyll-sitemap (1.2.0) + jekyll (~> 3.3) + jekyll-swiss (0.4.0) + jekyll-theme-architect (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.5.3) + jekyll (~> 3.5) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.1.1) + jekyll (~> 3.5) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.1) + jekyll (~> 3.3) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.10.2) + gemoji (~> 3.0) + html-pipeline (~> 2.2) + jekyll (~> 3.0) + kramdown (1.17.0) + latex-decode (0.3.1) + liquid (4.0.0) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + lumberjack (1.0.13) + mercenary (0.3.6) + method_source (0.9.2) + mini_portile2 (2.4.0) + minima (2.5.0) + jekyll (~> 3.5) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.13.0) + multi_json (1.14.1) + multipart-post (2.1.1) + namae (1.0.1) + nenv (0.3.0) + nokogiri (1.10.4) + mini_portile2 (~> 2.4.0) + notiffany (0.1.3) + nenv (~> 0.1) + shellany (~> 0.0) + octokit (4.14.0) + sawyer (~> 0.8.0, >= 0.5.3) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + pry (0.12.2) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + public_suffix (3.1.1) + rb-fsevent (0.10.3) + rb-inotify (0.10.0) + ffi (~> 1.0) + rouge (3.11.0) + ruby-enum (0.7.2) + i18n + ruby_dep (1.5.0) + rubyzip (2.0.0) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.8.2) + addressable (>= 2.3.5) + faraday (> 0.8, < 2.0) + shellany (0.0.1) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thor (0.20.3) + thread_safe (0.3.6) + typhoeus (1.3.1) + ethon (>= 0.9.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + unicode-display_width (1.6.0) + +PLATFORMS + ruby + +DEPENDENCIES + github-pages + guard (~> 2.14.2) + guard-jekyll-plus (~> 2.0.2) + guard-livereload (~> 2.5.2) + jekyll-feed (~> 0.6) + jekyll-redirect-from + jekyll-scholar + tzinfo-data + +BUNDLED WITH + 1.17.2 diff --git a/examples/ngboost-vignette/Guardfile b/examples/ngboost-vignette/Guardfile new file mode 100644 index 00000000..fbf99111 --- /dev/null +++ b/examples/ngboost-vignette/Guardfile @@ -0,0 +1,8 @@ +guard 'jekyll-plus', serve: true do + watch /.*/ + ignore /^_site/ +end + +guard 'livereload' do + watch /.*/ +end diff --git a/examples/ngboost-vignette/Makefile b/examples/ngboost-vignette/Makefile new file mode 100644 index 00000000..cc37ba91 --- /dev/null +++ b/examples/ngboost-vignette/Makefile @@ -0,0 +1,34 @@ +.PHONY: help book clean serve + +help: + @echo "Please use 'make ' where is one of:" + @echo " install to install the necessary dependencies for jupyter-book to build" + @echo " book to convert the content/ folder into Jekyll markdown in _build/" + @echo " clean to clean out site build files" + @echo " runall to run all notebooks in-place, capturing outputs with the notebook" + @echo " serve to serve the repository locally with Jekyll" + @echo " build to build the site HTML and store in _site/" + @echo " site to build the site HTML, store in _site/, and serve with Jekyll" + + +install: + jupyter-book install ./ + +book: + jupyter-book build ./ + +runall: + jupyter-book run ./content + +clean: + python scripts/clean.py + +serve: + bundle exec guard + +build: + jupyter-book build ./ --overwrite + +site: build + bundle exec jekyll build + touch _site/.nojekyll diff --git a/examples/ngboost-vignette/_bibliography/references.bib b/examples/ngboost-vignette/_bibliography/references.bib new file mode 100644 index 00000000..cbf9b01b --- /dev/null +++ b/examples/ngboost-vignette/_bibliography/references.bib @@ -0,0 +1,56 @@ +--- +--- + +@inproceedings{holdgraf_evidence_2014, + address = {Brisbane, Australia, Australia}, + title = {Evidence for {Predictive} {Coding} in {Human} {Auditory} {Cortex}}, + booktitle = {International {Conference} on {Cognitive} {Neuroscience}}, + publisher = {Frontiers in Neuroscience}, + author = {Holdgraf, Christopher Ramsay and de Heer, Wendy and Pasley, Brian N. and Knight, Robert T.}, + year = {2014} +} + +@article{holdgraf_rapid_2016, + title = {Rapid tuning shifts in human auditory cortex enhance speech intelligibility}, + volume = {7}, + issn = {2041-1723}, + url = {http://www.nature.com/doifinder/10.1038/ncomms13654}, + doi = {10.1038/ncomms13654}, + number = {May}, + journal = {Nature Communications}, + author = {Holdgraf, Christopher Ramsay and de Heer, Wendy and Pasley, Brian N. and Rieger, Jochem W. and Crone, Nathan and Lin, Jack J. and Knight, Robert T. and Theunissen, Frédéric E.}, + year = {2016}, + pages = {13654}, + file = {Holdgraf et al. - 2016 - Rapid tuning shifts in human auditory cortex enhance speech intelligibility.pdf:C\:\\Users\\chold\\Zotero\\storage\\MDQP3JWE\\Holdgraf et al. - 2016 - Rapid tuning shifts in human auditory cortex enhance speech intelligibility.pdf:application/pdf} +} + +@inproceedings{holdgraf_portable_2017, + title = {Portable learning environments for hands-on computational instruction using container-and cloud-based technology to teach data science}, + volume = {Part F1287}, + isbn = {978-1-4503-5272-7}, + doi = {10.1145/3093338.3093370}, + abstract = {© 2017 ACM. There is an increasing interest in learning outside of the traditional classroom setting. This is especially true for topics covering computational tools and data science, as both are challenging to incorporate in the standard curriculum. These atypical learning environments offer new opportunities for teaching, particularly when it comes to combining conceptual knowledge with hands-on experience/expertise with methods and skills. Advances in cloud computing and containerized environments provide an attractive opportunity to improve the effciency and ease with which students can learn. This manuscript details recent advances towards using commonly-Available cloud computing services and advanced cyberinfrastructure support for improving the learning experience in bootcamp-style events. We cover the benets (and challenges) of using a server hosted remotely instead of relying on student laptops, discuss the technology that was used in order to make this possible, and give suggestions for how others could implement and improve upon this model for pedagogy and reproducibility.}, + booktitle = {{ACM} {International} {Conference} {Proceeding} {Series}}, + author = {Holdgraf, Christopher Ramsay and Culich, A. and Rokem, A. and Deniz, F. and Alegro, M. and Ushizima, D.}, + year = {2017}, + keywords = {Teaching, Bootcamps, Cloud computing, Data science, Docker, Pedagogy} +} + +@article{holdgraf_encoding_2017, + title = {Encoding and decoding models in cognitive electrophysiology}, + volume = {11}, + issn = {16625137}, + doi = {10.3389/fnsys.2017.00061}, + abstract = {© 2017 Holdgraf, Rieger, Micheli, Martin, Knight and Theunissen. Cognitive neuroscience has seen rapid growth in the size and complexity of data recorded from the human brain as well as in the computational tools available to analyze this data. This data explosion has resulted in an increased use of multivariate, model-based methods for asking neuroscience questions, allowing scientists to investigate multiple hypotheses with a single dataset, to use complex, time-varying stimuli, and to study the human brain under more naturalistic conditions. These tools come in the form of “Encoding” models, in which stimulus features are used to model brain activity, and “Decoding” models, in which neural features are used to generated a stimulus output. Here we review the current state of encoding and decoding models in cognitive electrophysiology and provide a practical guide toward conducting experiments and analyses in this emerging field. Our examples focus on using linear models in the study of human language and audition. We show how to calculate auditory receptive fields from natural sounds as well as how to decode neural recordings to predict speech. The paper aims to be a useful tutorial to these approaches, and a practical introduction to using machine learning and applied statistics to build models of neural activity. The data analytic approaches we discuss may also be applied to other sensory modalities, motor systems, and cognitive systems, and we cover some examples in these areas. In addition, a collection of Jupyter notebooks is publicly available as a complement to the material covered in this paper, providing code examples and tutorials for predictive modeling in python. The aimis to provide a practical understanding of predictivemodeling of human brain data and to propose best-practices in conducting these analyses.}, + journal = {Frontiers in Systems Neuroscience}, + author = {Holdgraf, Christopher Ramsay and Rieger, J.W. and Micheli, C. and Martin, S. and Knight, R.T. and Theunissen, F.E.}, + year = {2017}, + keywords = {Decoding models, Encoding models, Electrocorticography (ECoG), Electrophysiology/evoked potentials, Machine learning applied to neuroscience, Natural stimuli, Predictive modeling, Tutorials} +} + +@book{ruby, + title = {The Ruby Programming Language}, + author = {Flanagan, David and Matsumoto, Yukihiro}, + year = {2008}, + publisher = {O'Reilly Media} +} \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/0-install.html b/examples/ngboost-vignette/_build/0-install.html new file mode 100644 index 00000000..b3291543 --- /dev/null +++ b/examples/ngboost-vignette/_build/0-install.html @@ -0,0 +1,39 @@ +--- +interact_link: content/0-install.ipynb +kernel_name: python3 +kernel_path: content +has_widgets: false +title: |- + Installation +pagenum: 1 +prev_page: + url: /intro.html +next_page: + url: /1-useage.html +suffix: .ipynb +search: installation pip install upgrade github com stanfordmlgroup ngboost git + +comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" +--- + +
+
Installation
+
+ +
+ +
+
+ +
pip install --upgrade git+https://github.com/stanfordmlgroup/ngboost.git
+ +
+
+
+
+ + + + +
+ \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/1-useage.html b/examples/ngboost-vignette/_build/1-useage.html new file mode 100644 index 00000000..83190d60 --- /dev/null +++ b/examples/ngboost-vignette/_build/1-useage.html @@ -0,0 +1,861 @@ +--- +interact_link: content/1-useage.ipynb +kernel_name: python3 +kernel_path: content +has_widgets: false +title: |- + Usage +pagenum: 2 +prev_page: + url: /0-install.html +next_page: + url: /2-tuning.html +suffix: .ipynb +search: scipy distribution regression returns distributions ngboost used logscore stats set classification implemented scores reference org score crpscore class argument survival k p wikipedia parameters normal scale docs doc generated html lognormal exponential constructor appropriate default also bernoulli base points standard test those support through ngbregressor passing dist prediction methods objects predict regressor preddist object conditional xi supports right censored any analysis event censoring kcategorical en wiki ngbclassifier sklearn log specified usage well start probabilistic example boston housing dataset getting estimated distributional easy predicted mean deviation five observations variety broken into infinite finite loc norm s lognorm expon point predictions expect + +comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" +--- + +
+
Usage
+
+ +
+ +
+
+

We'll start with a probabilistic regression example on the Boston housing dataset:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from ngboost import NGBRegressor
+
+from sklearn.datasets import load_boston
+from sklearn.model_selection import train_test_split
+from sklearn.metrics import mean_squared_error
+
+X, Y = load_boston(True)
+X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2)
+
+ngb = NGBRegressor().fit(X_train, Y_train)
+Y_preds = ngb.predict(X_test)
+Y_dists = ngb.pred_dist(X_test)
+
+# test Mean Squared Error
+test_MSE = mean_squared_error(Y_preds, Y_test)
+print('Test MSE', test_MSE)
+
+# test Negative Log Likelihood
+test_NLL = -Y_dists.logpdf(Y_test).mean()
+print('Test NLL', test_NLL)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=3.6231 val_loss=0.0000 scale=0.5000 norm=3.3059
+[iter 100] loss=3.0349 val_loss=0.0000 scale=2.0000 norm=7.1655
+[iter 200] loss=2.3596 val_loss=0.0000 scale=2.0000 norm=3.7977
+[iter 300] loss=1.9685 val_loss=0.0000 scale=2.0000 norm=3.0467
+[iter 400] loss=1.7957 val_loss=0.0000 scale=1.0000 norm=1.3911
+Test MSE 11.751316258028782
+Test NLL 3.7006980539890253
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+

Getting the estimated distributional parameters at a set of points is easy. This returns the predicted mean and standard deviation of the first five observations in the test set:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
Y_dists[0:5].params
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
{'loc': array([23.46378107, 16.37767307, 23.47872484, 33.74513435, 24.77121111]),
+ 'scale': array([1.28837356, 1.25869559, 1.03021179, 1.01968677, 1.01327948])}
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+

Distributions

NGBoost can be used with a variety of distributions, broken down into those for regression (support on an infinite set) and those for classification (support on a finite set).

+ +
+
+
+
+ +
+ +
+
+

Regression Distributions

+
+
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DistributionParametersImplemented ScoresReference
Normalloc, scaleLogScore, CRPScorescipy.stats normal
LogNormals, scaleLogScore, CRPScorescipy.stats lognormal
ExponentialscaleLogScore, CRPScorescipy.stats exponential
+ +
+
+
+
+ +
+ +
+
+

Regression distributions can be used through the NGBRegressor() constructor by passing the appropriate class as the Dist argument. Normal is the default.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from ngboost.distns import Exponential, Normal
+
+X, Y = load_boston(True)
+X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = train_test_split(X, Y, test_size=0.2)
+
+ngb_norm = NGBRegressor(Dist=Normal, verbose=False).fit(X_reg_train, Y_reg_train)
+ngb_exp = NGBRegressor(Dist=Exponential, verbose=False).fit(X_reg_train, Y_reg_train)
+
+ +
+
+
+ +
+
+ +
+ +
+
+

There are two prediction methods for NGBRegressor objects: predict(), which returns point predictions as one would expect from a standard regressor, and pred_dist(), which returns a distribution object representing the conditional distribution of $Y|X=x_i$ at the points $x_i$ in the test set.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
ngb_norm.predict(X_reg_test)[0:5]
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
array([32.03465906, 19.15818411, 19.30217489, 20.94209258, 18.99318666])
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+ +
+
+
ngb_exp.predict(X_reg_test)[0:5]
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
array([22.28380823, 20.10027072, 17.55630199, 21.18983355, 18.11223638])
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+ +
+
+
ngb_exp.pred_dist(X_reg_test)[0:5].params
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
{'scale': array([22.28380823, 20.10027072, 17.55630199, 21.18983355, 18.11223638])}
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+

Survival Regression

+
+
+
+
+ +
+ +
+
+

NGBoost supports analyses of right-censored data. Any distribution that can be used for regression in NGBoost can also be used for survival analysis in theory, but this requires the implementation of the right-censored version of the appropriate score. At the moment, LogNormal and Exponential have these scores implemented. To do survival analysis, use NGBSurvival and pass both the time-to-event (or censoring) and event indicator vectors to fit():

+ +
+
+
+
+ +
+ +
+
+ +
+
+
import numpy as np
+from ngboost import NGBSurvival
+from ngboost.distns import LogNormal
+
+X, Y = load_boston(True)
+X_surv_train, X_surv_test, Y_surv_train, Y_surv_test = train_test_split(X, Y, test_size=0.2)
+
+# introduce administrative censoring to simulate survival data
+T_surv_train = np.minimum(Y_train, 30) # time of an event or censoring
+E_surv_train = Y_train > 30 # 1 if T[i] is the time of an event, 0 if it's a time of censoring
+
+ngb = NGBSurvival(Dist=LogNormal).fit(X_surv_train, T_surv_train, E_surv_train)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=1.2578 val_loss=0.0000 scale=4.0000 norm=2.3885
+[iter 100] loss=0.5902 val_loss=0.0000 scale=2.0000 norm=0.7520
+[iter 200] loss=0.3591 val_loss=0.0000 scale=4.0000 norm=0.9354
+[iter 300] loss=0.2541 val_loss=0.0000 scale=2.0000 norm=0.3104
+[iter 400] loss=0.1479 val_loss=0.0000 scale=4.0000 norm=0.3567
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+

The scores currently implemented assume that the censoring is independent of survival, conditional on the observed predictors.

+ +
+
+
+
+ +
+ +
+
+

Classification Distributions

+
+
+
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
DistributionParametersImplemented ScoresReference
k_categorical(K)p0, p1... p{K-1}LogScoreCategorical distribution on Wikipedia
BernoullipLogScoreBernoulli distribution on Wikipedia
+ +
+
+
+
+ +
+ +
+
+

Classification distributions can be used through the NGBClassifier() constructor by passing the appropriate class as the Dist argument. Bernoulli is the default and is equivalent to k_categorical(2).

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from ngboost import NGBClassifier
+from ngboost.distns import k_categorical, Bernoulli
+from sklearn.datasets import load_breast_cancer
+
+X, y = load_breast_cancer(True)
+y[0:15] = 2 # artificially make this a 3-class problem instead of a 2-class problem
+X_cls_train, X_cls_test, Y_cls_train, Y_cls_test  = train_test_split(X, y, test_size=0.2)
+
+ngb_cat = NGBClassifier(Dist=k_categorical(3), verbose=False) # tell ngboost that there are 3 possible outcomes
+_ = ngb_cat.fit(X_cls_train, Y_cls_train) # Y should have only 3 values: {0,1,2}
+
+ +
+
+
+ +
+
+ +
+ +
+
+

When using NGBoost for classification, the outcome vector Y must consist only of integers from 0 to K-1, where K is the total number of classes. This is consistent with the classification standards in sklearn.

+ +
+
+
+
+ +
+ +
+
+

NGBClassifier objects have three prediction methods: predict() returns the most likely class, predict_proba() returns the class probabilities, and pred_dist() returns the distribution object.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
ngb_cat.predict(X_cls_test)[0:5]
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
array([1, 1, 1, 1, 1])
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+ +
+
+
ngb_cat.predict_proba(X_cls_test)[0:5]
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
array([[7.28228735e-04, 9.99260196e-01, 1.15752705e-05],
+       [7.28206439e-04, 9.99229602e-01, 4.21917010e-05],
+       [7.28207212e-04, 9.99230662e-01, 4.11305541e-05],
+       [7.28206439e-04, 9.99229602e-01, 4.21917010e-05],
+       [7.28206439e-04, 9.99229602e-01, 4.21917010e-05]])
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+ +
+
+
ngb_cat.pred_dist(X_cls_test)[0:5].params
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
{'p0': array([0.00072823, 0.00072821, 0.00072821, 0.00072821, 0.00072821]),
+ 'p1': array([0.9992602 , 0.9992296 , 0.99923066, 0.9992296 , 0.9992296 ]),
+ 'p2': array([1.15752705e-05, 4.21917010e-05, 4.11305541e-05, 4.21917010e-05,
+        4.21917010e-05])}
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+

Scores

+
+
+
+
+ +
+ +
+
+

NGBoost supports the log score (LogScore, also known as negative log-likelihood) and CRPS (CRPScore), although each score may not be implemented for each distribution. The score is specified by the Score argument in the constructor.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from ngboost.scores import LogScore, CRPScore
+
+NGBRegressor(Dist=Exponential, Score=CRPScore, verbose=False).fit(X_reg_train, Y_reg_train)
+NGBClassifier(Dist=k_categorical(3), Score=LogScore, verbose=False).fit(X_cls_train, Y_cls_train)
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
NGBClassifier(Base=DecisionTreeRegressor(criterion='friedman_mse', max_depth=3,
+                                         max_features=None, max_leaf_nodes=None,
+                                         min_impurity_decrease=0.0,
+                                         min_impurity_split=None,
+                                         min_samples_leaf=1,
+                                         min_samples_split=2,
+                                         min_weight_fraction_leaf=0.0,
+                                         presort=False, random_state=None,
+                                         splitter='best'),
+              Dist=<class 'ngboost.distns.categorical.k_categorical.<locals>.Categorical'>,
+              Score=<class 'ngboost.scores.LogScore'>, col_sample=1.0,
+              learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,
+              natural_gradient=True,
+              random_state=RandomState(MT19937) at 0x119C48D10, tol=0.0001,
+              verbose=False, verbose_eval=100)
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+

Base Learners

+
+
+
+
+ +
+ +
+
+

NGBoost can be used with any sklearn regressor as the base learner, specified with the Base argument. The default is a depth-3 regression tree.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from sklearn.tree import DecisionTreeRegressor
+
+learner = DecisionTreeRegressor(criterion='friedman_mse', max_depth=5)
+
+NGBSurvival(Dist=Exponential, Score=CRPScore, Base=learner, verbose=False).fit(X_surv_train, T_surv_train, E_surv_train)
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
NGBSurvival(Base=DecisionTreeRegressor(criterion='friedman_mse', max_depth=5,
+                                       max_features=None, max_leaf_nodes=None,
+                                       min_impurity_decrease=0.0,
+                                       min_impurity_split=None,
+                                       min_samples_leaf=1, min_samples_split=2,
+                                       min_weight_fraction_leaf=0.0,
+                                       presort=False, random_state=None,
+                                       splitter='best'),
+            Dist=<class 'ngboost.api.NGBSurvival.__init__.<locals>.SurvivalDistn'>,
+            Score=<class 'ngboost.scores.CRPScore'>, col_sample=1.0,
+            learning_rate=0.01, minibatch_frac=1.0, n_estimators=500,
+            natural_gradient=True,
+            random_state=RandomState(MT19937) at 0x119C48D10, tol=0.0001,
+            verbose=False, verbose_eval=100)
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+

Other Arguments

+
+
+
+
+ +
+ +
+
+

The learning rate, number of estimators, minibatch fraction, and column subsampling are also easily adjusted:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
ngb = NGBRegressor(n_estimators=100, learning_rate=0.01, 
+             minibatch_frac=0.5, col_sample=0.5)
+ngb.fit(X_reg_train, Y_reg_train)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=3.5985 val_loss=0.0000 scale=0.5000 norm=3.2693
+
+
+
+
+
+
+ + + +
+
NGBRegressor(Base=DecisionTreeRegressor(criterion='friedman_mse', max_depth=3,
+                                        max_features=None, max_leaf_nodes=None,
+                                        min_impurity_decrease=0.0,
+                                        min_impurity_split=None,
+                                        min_samples_leaf=1, min_samples_split=2,
+                                        min_weight_fraction_leaf=0.0,
+                                        presort=False, random_state=None,
+                                        splitter='best'),
+             Dist=<class 'ngboost.distns.normal.Normal'>,
+             Score=<class 'ngboost.scores.LogScore'>, col_sample=0.5,
+             learning_rate=0.01, minibatch_frac=0.5, n_estimators=100,
+             natural_gradient=True,
+             random_state=RandomState(MT19937) at 0x119C48D10, tol=0.0001,
+             verbose=True, verbose_eval=100)
+
+ +
+
+
+
+ +
+
+ + + + +
+ \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/2-tuning.html b/examples/ngboost-vignette/_build/2-tuning.html new file mode 100644 index 00000000..26b258c5 --- /dev/null +++ b/examples/ngboost-vignette/_build/2-tuning.html @@ -0,0 +1,359 @@ +--- +interact_link: content/2-tuning.ipynb +kernel_name: python3 +kernel_path: content +has_widgets: false +title: |- + Tuning +pagenum: 3 +prev_page: + url: /1-useage.html +next_page: + url: /3-interpretation.html +suffix: .ipynb +search: ngboost validation staged prediction fit instance after set xval yval early stopping earlystoppingrounds sklearn tuning objects support get predictions examples fitting base learners useful conjunction tracking errors passing arguments inspecting bestvallossitr attribute also integer passed algorithm stop running loss increased consecutive iterations using model selection methods compatible + +comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" +--- + +
+
Tuning
+
+ +
+ +
+
+ +
+
+
from ngboost import NGBClassifier, NGBRegressor
+from ngboost.distns import k_categorical, Normal
+from ngboost.scores import LogScore
+
+from sklearn.datasets import load_breast_cancer, load_boston
+from sklearn.model_selection import train_test_split
+
+X, Y = load_boston(True)
+X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = train_test_split(X, Y, test_size=0.2)
+
+X, y = load_breast_cancer(True)
+y[0:15] = 2 # artificially make this a 3-class problem instead of a 2-class problem
+X_cls_train, X_cls_test, Y_cls_train, Y_cls_test  = train_test_split(X, y, test_size=0.2)
+
+ +
+
+
+ +
+
+ +
+ +
+
+

Staged Prediction

+
+
+
+
+ +
+ +
+
+

All fit NGBoost objects support staged prediction.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
ngb_cls = NGBClassifier(Dist=k_categorical(3), Score=LogScore, n_estimators=500, verbose=False).fit(X_cls_train, Y_cls_train)
+
+ +
+
+
+ +
+
+ +
+ +
+
+

For instance, to get the predictions on the first 5 examples after fitting 415 base learners, use:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
preds = ngb_cls.staged_predict(X_cls_test)
+preds[415][0:5]
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
array([1, 1, 1, 1, 1])
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+ +
+
+
pred_dists = ngb_cls.staged_pred_dist(X_cls_test)
+pred_dists[415][0:5].params
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
{'p0': array([0.0036683 , 0.00370816, 0.00366828, 0.00366828, 0.00366828]),
+ 'p1': array([0.99608409, 0.99619704, 0.99607732, 0.99607732, 0.99607732]),
+ 'p2': array([2.47605121e-04, 9.47955927e-05, 2.54405628e-04, 2.54405628e-04,
+        2.54405628e-04])}
+
+ +
+
+
+
+ +
+
+ +
+ +
+
+

This is useful in conjunction with tracking errors on a validation set, which you can do by passing the X_val and Y_val arguments and then inspecting the .best_val_loss_itr instance attribute.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
ngb = NGBRegressor()
+ngb.fit(X_reg_train, Y_reg_train, X_val=X_reg_test, Y_val=Y_reg_test) # use a validation set instead of test set here in your own work
+print(ngb.best_val_loss_itr)
+best_preds = ngb.predict(X_reg_test, max_iter=ngb.best_val_loss_itr)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=3.6639 val_loss=3.5325 scale=0.5000 norm=3.4373
+[iter 100] loss=3.1102 val_loss=3.1139 scale=1.0000 norm=3.9032
+[iter 200] loss=2.4635 val_loss=2.6144 scale=2.0000 norm=4.0454
+[iter 300] loss=2.0046 val_loss=2.6142 scale=2.0000 norm=3.1239
+[iter 400] loss=1.8151 val_loss=2.8736 scale=1.0000 norm=1.4106
+253
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+

Early Stopping

+
+
+
+
+ +
+ +
+
+

NGBoost also has early stopping. If an integer early_stopping_rounds and a validation set (X_val,Y_val) are passed to fit(), the algorithm will stop running after the validation loss has increased for early_stopping_rounds of consecutive iterations.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
_ = NGBRegressor().fit(X_reg_train, Y_reg_train, X_val=X_reg_test, Y_val=Y_reg_test, early_stopping_rounds=2)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=3.6639 val_loss=3.5325 scale=0.5000 norm=3.4373
+[iter 100] loss=3.1102 val_loss=3.1142 scale=1.0000 norm=3.9032
+[iter 200] loss=2.4635 val_loss=2.6150 scale=2.0000 norm=4.0454
+== Early stopping achieved.
+== Best iteration / VAL 245 (val_loss=2.5231)
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+

Using sklearn Model Selection

+
+
+
+
+ +
+ +
+
+

sklearn methods are compatible with NGBoost.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from sklearn.model_selection import GridSearchCV
+from sklearn.tree import DecisionTreeRegressor
+
+b1 = DecisionTreeRegressor(criterion='friedman_mse', max_depth=2)
+b2 = DecisionTreeRegressor(criterion='friedman_mse', max_depth=4)
+
+param_grid = {
+    'n_estimators': [20, 50],
+    'minibatch_frac': [1.0, 0.5],
+    'Base': [b1, b2]
+}
+
+ngb = NGBRegressor(Dist=Normal, verbose=False)
+
+grid_search = GridSearchCV(ngb, param_grid=param_grid, cv=5)
+grid_search.fit(X_reg_train, Y_reg_train)
+print(grid_search.best_params_)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
{'Base': DecisionTreeRegressor(criterion='friedman_mse', max_depth=4, max_features=None,
+                      max_leaf_nodes=None, min_impurity_decrease=0.0,
+                      min_impurity_split=None, min_samples_leaf=1,
+                      min_samples_split=2, min_weight_fraction_leaf=0.0,
+                      presort=False, random_state=None, splitter='best'), 'minibatch_frac': 0.5, 'n_estimators': 20}
+
+
+
+
+
+
+ +
+
+ + + + +
+ \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/3-interpretation.html b/examples/ngboost-vignette/_build/3-interpretation.html new file mode 100644 index 00000000..f1d9dc35 --- /dev/null +++ b/examples/ngboost-vignette/_build/3-interpretation.html @@ -0,0 +1,249 @@ +--- +interact_link: content/3-interpretation.ipynb +kernel_name: python3 +kernel_path: content +has_widgets: false +title: |- + Model Interpretation +pagenum: 4 +prev_page: + url: /2-tuning.html +next_page: + url: /4-saving.html +suffix: .ipynb +search: model interpretation interpret fit learners parameter distribution results caution users against trying www google com search q mythosofinterpretabilityrlz cchfaenususoq mythosofinaqs chrome jijl jjsourceid chromeie utf too much any machine learning ngboost does provide methods models regression tree base since separate sequence multiple default used normal following example shows loc scale parameters feature importance shap + +comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" +--- + +
+
Model Interpretation
+
+ +
+ +
+
+ +
+
+
from ngboost import NGBClassifier, NGBRegressor
+from ngboost.distns import k_categorical, Normal
+from ngboost.scores import LogScore
+
+from sklearn.datasets import load_breast_cancer, load_boston
+from sklearn.model_selection import train_test_split
+
+X, Y = load_boston(True)
+X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = train_test_split(X, Y, test_size=0.2)
+
+X, y = load_breast_cancer(True)
+y[0:15] = 2 # artificially make this a 3-class problem instead of a 2-class problem
+X_cls_train, X_cls_test, Y_cls_train, Y_cls_test  = train_test_split(X, y, test_size=0.2)
+
+ +
+
+
+ +
+
+ +
+ +
+
+

We caution users against trying to interpret too much from any machine learning model, but NGBoost does provide methods to interpret models fit with regression tree base learners. Since each parameter in the distribution is fit by a separate sequence of learners, there will be multiple model interpretation results, one for each parameter. The default distribution used is Normal so the following example shows results for the loc and scale parameters.

+ +
+
+
+
+ +
+ +
+
+

Feature Importance

+
+
+
+
+ +
+ +
+
+ +
+
+
ngb = NGBRegressor(verbose=False).fit(X_reg_train, Y_reg_train)
+
+## Feature importance for loc trees
+feature_importance_loc = ngb.feature_importances_[0]
+
+## Feature importance for scale trees
+feature_importance_scale = ngb.feature_importances_[1]
+
+ +
+
+
+ +
+
+ +
+ +
+
+ +
+
+
import pandas as pd
+import matplotlib.pyplot as plt
+import seaborn as sns
+
+df_loc = pd.DataFrame({'feature':load_boston()['feature_names'], 
+                       'importance':feature_importance_loc})\
+    .sort_values('importance',ascending=False)
+df_scale = pd.DataFrame({'feature':load_boston()['feature_names'], 
+                       'importance':feature_importance_scale})\
+    .sort_values('importance',ascending=False)
+
+fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13,6))
+fig.suptitle("Feature importance plot for distribution parameters", fontsize=17)
+sns.barplot(x='importance',y='feature',ax=ax1,data=df_loc, color="skyblue").set_title('loc param')
+sns.barplot(x='importance',y='feature',ax=ax2,data=df_scale, color="skyblue").set_title('scale param')
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
Text(0.5, 1.0, 'scale param')
+
+ +
+
+
+
+ + + +
+ +
+ +
+
+
+
+ +
+
+ +
+ +
+
+

SHAP

+
+
+
+
+ +
+ +
+
+ +
+
+
import shap
+shap.initjs()
+
+## SHAP plot for loc trees
+explainer = shap.TreeExplainer(ngb, model_output=0) # use model_output = 1 for scale trees
+shap_values = explainer.shap_values(X_reg_train)
+shap.summary_plot(shap_values, X_reg_train, feature_names=load_boston()['feature_names'])
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+ +
+
+
+
+ +
+
Setting feature_perturbation = "tree_path_dependent" because no background data was given.
+
+
+
+
+
+
+ + + +
+ +
+ +
+
+
+
+ +
+
+ + + + +
+ \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/4-saving.html b/examples/ngboost-vignette/_build/4-saving.html new file mode 100644 index 00000000..8645b190 --- /dev/null +++ b/examples/ngboost-vignette/_build/4-saving.html @@ -0,0 +1,178 @@ +--- +interact_link: content/4-saving.ipynb +kernel_name: python3 +kernel_path: content +has_widgets: false +title: |- + Saving Models +pagenum: 5 +prev_page: + url: /3-interpretation.html +next_page: + url: /5-dev.html +suffix: .ipynb +search: saving models ngboost easy pickle package + +comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" +--- + +
+
Saving Models
+
+ +
+ +
+
+ +
+
+
from ngboost import NGBClassifier, NGBRegressor
+from ngboost.distns import k_categorical, Normal
+from ngboost.scores import LogScore
+
+from sklearn.datasets import load_breast_cancer, load_boston
+from sklearn.model_selection import train_test_split
+
+X, Y = load_boston(True)
+X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = train_test_split(X, Y, test_size=0.2)
+
+X, y = load_breast_cancer(True)
+y[0:15] = 2 # artificially make this a 3-class problem instead of a 2-class problem
+X_cls_train, X_cls_test, Y_cls_train, Y_cls_test  = train_test_split(X, y, test_size=0.2)
+
+ +
+
+
+ +
+
+ +
+ +
+
+

Saving ngboost models is easy with the pickle package:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
ngb = NGBRegressor().fit(X_reg_train, Y_reg_train)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=3.6659 val_loss=0.0000 scale=0.5000 norm=3.4867
+[iter 100] loss=3.1316 val_loss=0.0000 scale=1.0000 norm=4.0407
+[iter 200] loss=2.5093 val_loss=0.0000 scale=2.0000 norm=4.1753
+[iter 300] loss=2.0549 val_loss=0.0000 scale=2.0000 norm=3.2230
+[iter 400] loss=1.8405 val_loss=0.0000 scale=1.0000 norm=1.4379
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+ +
+
+
import pickle
+with open("/Users/c242587/Desktop/ngbtest.p", "wb") as f:
+    pickle.dump(ngb, f)
+
+ +
+
+
+ +
+
+ +
+ +
+
+ +
+
+
with open("/Users/c242587/Desktop/ngbtest.p", "rb") as f:
+    ngb_unpickled = pickle.load(f)
+
+ +
+
+
+ +
+
+ +
+ +
+
+ +
+
+
Y_preds = ngb_unpickled.predict(X_reg_test)
+Y_dists = ngb_unpickled.pred_dist(X_reg_test)
+
+Y_dists[0:5].params
+
+ +
+
+
+ +
+
+ +
+
+ + + +
+
{'loc': array([33.56254296, 20.00248252, 16.76998823, 12.42596904, 20.24461023]),
+ 'scale': array([1.71143188, 1.46911816, 1.20134737, 1.51642038, 1.18972627])}
+
+ +
+
+
+
+ +
+
+ + + + +
+ \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/5-dev.html b/examples/ngboost-vignette/_build/5-dev.html new file mode 100644 index 00000000..be0939c7 --- /dev/null +++ b/examples/ngboost-vignette/_build/5-dev.html @@ -0,0 +1,437 @@ +--- +interact_link: content/5-dev.ipynb +kernel_name: python3 +kernel_path: content +has_widgets: false +title: |- + Developing NGBoost +pagenum: 6 +prev_page: + url: /4-saving.html +next_page: + url: +suffix: .ipynb +search: score distribution ngboost method class scores log metric implement must laplace not parameters should b fisher e mu new attribute scipy y censored want distributions sample user implementation logscore default implementing subclass also internal instance example stats our current data using laplacelogscore specific derive work here appropriate methods fit called regression facing need attributes respect wolframalpha information examples g deriving yet through process adding compatible distributional params mean well frac x mathbb r reference object vector return samples taking implemented its get value given dscore riemannian implmentation care www com input logfeebee cx acfeeb gradient thats test into making analysis + +comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" +--- + +
+
Developing NGBoost
+
+ +
+ +
+
+

As you work with NGBoost, you may want to experiment with distributions or scores that are not yet supported. Here we will walk through the process of implementing a new distribution or score.

+ +
+
+
+
+ +
+ +
+
+

Adding Distributions

+
+
+
+
+ +
+ +
+
+

The first order of business is to write the class for your new distribution. The distribution class must subclass the appropriate distribution type (either RegressionDistn or ClassificationDistn) and must implement methods for fit() and sample(). The scores compatible with the distribution should be stored in a class attribute called score and the number of parameters in an class attribute n_params. The class must also store the (internal) distributional parameters in a _params instance attribute. Additionally, regression distributions must implement a mean() method to support point prediction.

+

We'll use the Laplace distribution as an example. The Laplace distribution has PDF $\frac{1}{2b} e^{-\frac{|x-\mu|}{b}}$ with user-facing parameters $\mu \in \mathbb{R}$ and $b > 0$, which we will call loc and scale to conform to the scipy.stats implementation.

+

In NGBoost, all parameters must be represented internally in $\mathbb R$, so we need to reparametrize $(\mu, b)$ to, for instance, $(\mu, \log(b))$. The latter are the parameters we need to work with when we initialize a Laplace object and when implement the score.

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from scipy.stats import laplace as dist
+import numpy as np
+from ngboost.distns.distn import RegressionDistn
+from ngboost.scores import LogScore
+
+class LaplaceLogScore(LogScore): # will implement this later
+    pass
+
+class Laplace(RegressionDistn):
+
+    n_params = 2
+    scores = [LaplaceLogScore] # will implement this later
+
+    def __init__(self, params):
+        # save the parameters
+        self._params = params
+        
+        # create other objects that will be useful later
+        self.loc = params[0]
+        self.logscale = params[1]
+        self.scale = np.exp(params[1]) # since params[1] is log(scale)
+        self.dist = dist(loc=self.loc, scale=self.scale)
+
+    def fit(Y):
+        m, s = dist.fit(Y) # use scipy's implementation
+        return np.array([m, np.log(s)])
+
+    def sample(self, m):
+        return np.array([self.dist.rvs() for i in range(m)])
+    
+    def __getattr__(self, name): # gives us access to Laplace.mean() required for RegressionDist.predict()
+        if name in dir(self.dist):
+            return getattr(self.dist, name)
+        return None
+    
+    @property
+    def params(self):
+        return {'loc':self.loc, 'scale':self.scale}
+
+ +
+
+
+ +
+
+ +
+ +
+
+

The fit() method is a class method that takes a vector of observations and fits a marginal distribution. Meanwhile, sample() should return a $m$ samples from $P(Y|X=x)$, each of which is a vector of len(Y).

+

Here we're taking advantage of the fact that scipy.stats already has the Laplace distribution implemented so we can steal its fit() method and put a thin wrapper around rvs() to get samples. We also use __getattr__() on the internal scipy.stats object to get access to its mean() method.

+

Lastly, we write a convenience method params() that, when called, returns the distributional parameters as the user expects to see them, i.e. $(\mu, b)$, not $(\mu, \log b)$.

+

Implementing a Score for our Distribution

Now we turn our attention to implementing a score that we can use with this distribution. We'll use the log score as an example.

+

All implemented scores should subclass the appropriate score and implement three methods:

+
    +
  • score() : the value of the score at the current parameters, given the data Y
  • +
  • d_score() : the derivative of the score at the current parameters, given the data Y
  • +
  • metric() : the value of the Riemannian metric at the current parameters
  • +
+ +
+
+
+
+ +
+ +
+
+ +
+
+
class LaplaceLogScore(LogScore): 
+    
+    def score(self, Y):
+        return -self.dist.logpdf(Y)
+
+    def d_score(self, Y):
+        D = np.zeros((len(Y), 2)) # first col is dS/d𝜇, second col is dS/d(log(b))
+        D[:, 0] = np.sign(self.logscale - Y)/self.scale
+        D[:, 1] = 1 - np.abs(self.logscale - Y)/self.scale
+        return D
+
+ +
+
+
+ +
+
+ +
+ +
+
+

Notice that the attributes of an instance of Laplace are referenced using the self.attr notation even though we haven't said these will be attributes of the LaplaceLogScore class. When a user asks NGBoost to use the Laplace distribution with the LogScore, NGBoost will first find the implmentation of the log score that is compatible with Laplace, i.e. LaplaceLogScore and dynamically create a new class that has both the attributes of the distribution and the appropriate implementation of the score. For this to work, the distribution class Laplace must have a scores class attribute that includes the implementation LaplaceLogScore and LaplaceLogScore must subclass LogScore. As long as those conditions are satisfied, NGBoost can take care of the rest.

+ +
+
+
+
+ +
+ +
+
+

The derivatives with respect to $\log b$ and $\mu$ are easily derived using, for instance, WolframAlpha.

+ +
+
+
+
+ +
+ +
+
+

In this example we won't bother implementing metric(), which would return the current Fisher Information. The reason is that the NGBoost implmentation of LogScore has a default metric() method that uses a Monte Carlo method to approximate the Fisher Information using the gradient() method and the distribution's sample() method (that's why we needed to implement sample()). By inhereting from LogScore(), not only can NGBoost find our implementation for the Laplace distribution, it can also fall back on the defualt metric() method. More on that later.

+ +
+
+
+
+ +
+ +
+
+

Putting it all together:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
class LaplaceLogScore(LogScore): 
+    
+    def score(self, Y):
+        return -self.dist.logpdf(Y)
+
+    def d_score(self, Y):
+        D = np.zeros((len(Y), 2)) # first col is dS/d𝜇, second col is dS/d(log(b))
+        D[:, 0] = -np.sign(self.logscale - Y)/self.scale
+        D[:, 1] = 1 - np.abs(self.logscale - Y)/self.scale
+        return D
+
+class Laplace(RegressionDistn):
+
+    n_params = 2
+    scores = [LaplaceLogScore] 
+
+    def __init__(self, params):
+        # save the parameters
+        self._params = params
+        
+        # create other objects that will be useful later
+        self.loc = params[0]
+        self.logscale = params[1]
+        self.scale = np.exp(params[1]) # since params[1] is log(scale)
+        self.dist = dist(loc=self.loc, scale=self.scale)
+
+    def fit(Y):
+        m, s = dist.fit(Y) # use scipy's implementation
+        return np.array([m, np.log(s)])
+
+    def sample(self, m):
+        return np.array([self.dist.rvs() for i in range(m)])
+    
+    def __getattr__(self, name): # gives us access to Laplace.mean() required for RegressionDist.predict()
+        if name in dir(self.dist):
+            return getattr(self.dist, name)
+        return None
+    
+    @property
+    def params(self):
+        return {'loc':self.loc, 'scale':self.scale}
+
+ +
+
+
+ +
+
+ +
+ +
+
+

And we can test our method:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from ngboost import NGBRegressor
+from sklearn.datasets import load_boston
+from sklearn.model_selection import train_test_split
+from sklearn.metrics import mean_squared_error
+
+X, Y = load_boston(True)
+X_reg_train, X_reg_test, Y_reg_train, Y_reg_test = train_test_split(X, Y, test_size=0.2)
+
+ngb = NGBRegressor(Dist=Laplace, Score=LogScore).fit(X_reg_train, Y_reg_train)
+Y_preds = ngb.predict(X_reg_test)
+Y_dists = ngb.pred_dist(X_reg_test)
+
+# test Mean Squared Error
+test_MSE = mean_squared_error(Y_preds, Y_reg_test)
+print('Test MSE', test_MSE)
+
+# test Negative Log Likelihood
+test_NLL = -Y_dists.logpdf(Y_reg_test).mean()
+print('Test NLL', test_NLL)
+
+ +
+
+
+ +
+
+ +
+
+ +
+
[iter 0] loss=3.5592 val_loss=0.0000 scale=0.5000 norm=5.1998
+[iter 100] loss=3.3162 val_loss=0.0000 scale=0.2500 norm=1.5259
+[iter 200] loss=3.3106 val_loss=0.0000 scale=0.0312 norm=0.1790
+[iter 300] loss=3.3104 val_loss=0.0000 scale=0.0000 norm=0.0001
+[iter 400] loss=3.3104 val_loss=0.0000 scale=0.0000 norm=0.0001
+Test MSE 61.24969569895786
+Test NLL 3.2824343523391057
+
+
+
+
+
+
+ +
+
+ +
+ +
+
+

Dig into the source of ngboost.distns to find more examples. If you write and test your own distribution, please contribute it to NGBoost by making a pull request!

+ +
+
+
+
+ +
+ +
+
+

Censored Scores

+
+
+
+
+ +
+ +
+
+

You can make your distribution suitable for use in surival analysis if you implement a censored version of the score. The signature for the score(), d_score() and metric() methods should be the same, but they should expect Y to be indexable into two arrays like E, T = Y["Event"], Y["Time"]. Furthermore, any censored scores should be linked to the distribution class definition via a class attribute called censored_scores instead of scores.

+

Since censored scores are more general than their standard counterparts (fully observed data is a specific case of censored data), if you implement a censored score in NGBoost, it will automatically become available as a useable score for standard regression analysis. No need to implement the regression score seperately or register it in the scores class attribute.

+ +
+
+
+
+ +
+ +
+
+

Metrics

+
+
+
+
+ +
+ +
+
+

As we saw, using the log score, the easiest thing to do as a developer is to lean on the default ngboost method that calculates the log score metric.

+

However, the distribution-agnostic default method is slow because it must sample from the distribution many times to build up an approximation of the metric. If you want to make it faster, then you must derive and implement the distribution-specific Riemannian metric, which for the log score is the Fisher information matrix of that distribution. You have to derive the Fisher with respect to the internal ngboost parameterization (if that is different to the user-facing parametrization, e.g. $\log(\sigma)$, not $\sigma$). Deriving a Fisher is not necessarily easy since you have to compute an expectation analytically, but there are many examples onlne of deriving Fisher matrices that you can look through.

+

If you don't want to use the log score (say you want CRP score, for example), then ngboost does not (yet?) have a default method for calculating the metric and you must derive and implement it yourself. This is harder than deriving a Fisher because there are not many worked examples. The most general derivation process should follow the outline here, replacing the KL divergence (which is induced by the log score) with whichever divergence is induced by the scoring rule you want to use (e.g. L2 for CRPS), again taking care to derive with respect to the internal ngboost parameterization, not the user-facing one. For any particular score, there may be a specific closed-form expression that you can use to calculate the metric across distributions (the expression for the Fisher Info serves this purpose for the log score) or there may not be- I actually don't know the answer to this question! But if there were, that could suggest some kind of default implementation for that score's metric() method.

+ +
+
+
+
+ +
+ +
+
+

Adding Scores

+
+
+
+
+ +
+ +
+
+

We've seen how to implement an existing score for a new distribution, but making a new score altogether in NGBoost is also easy: just make a new class that subclasses Score:

+ +
+
+
+
+ +
+ +
+
+ +
+
+
from ngboost.scores import Score
+
+class SphericalScore(Score):
+    pass
+
+ +
+
+
+ +
+
+ +
+ +
+
+

That's it. Distribution-specific implemenations of this score (e.g. LaplaceSphericalScore) should subclass SphericalScore. The implementations of LogScore and CRPScore are in ngboost.scores for reference.

+ +
+
+
+
+ + + + +
+ \ No newline at end of file diff --git a/examples/ngboost-vignette/_build/features/cool.jpg b/examples/ngboost-vignette/_build/features/cool.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc51ce9f2e86d7b81006d52595139a987ef2828c GIT binary patch literal 9269 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/_build/images/3-interpretation_4_1.png b/examples/ngboost-vignette/_build/images/3-interpretation_4_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3c5cc7456cc8c08adecad0fcbc6b7f121f7c56 GIT binary patch literal 18667 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/_build/images/3-interpretation_6_2.png b/examples/ngboost-vignette/_build/images/3-interpretation_6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a1bf20852ed7e9f7371f53ec56ace1f0a6a614d3 GIT binary patch literal 35241 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 Eg1z8P-v9sr literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/_build/images/C-3PO_droid.png b/examples/ngboost-vignette/_build/images/C-3PO_droid.png new file mode 100644 index 0000000000000000000000000000000000000000..076176c064e4b0d53e52816f6c321e1546703439 GIT binary patch literal 104014 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

PuJLdF_fPWir*3oC@fLsLyB}p|kn`&wyN<_P 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�W8EjCEKMN^6O+zvvRN=dt_MglpH! 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 R>q2u8w3CP9ZDeTXe*=+HW%d97 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/_build/images/logo/download.svg b/examples/ngboost-vignette/_build/images/logo/download.svg new file mode 100644 index 00000000..ab255087 --- /dev/null +++ b/examples/ngboost-vignette/_build/images/logo/download.svg @@ -0,0 +1,90 @@ + +Group.svg +Created using Figma 0.90 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/ngboost-vignette/_build/images/logo/favicon.ico b/examples/ngboost-vignette/_build/images/logo/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..eb2cf42e707a8bbe9f9c0c661f9c9a6265af575b GIT binary patch literal 17050 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


&hpDjLTg`*y{)Dhp7Q@N^1TXJ-S@uU@xJ6 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 literal 0 HcmV?d00001 diff --git a/examples/ngboost-vignette/_build/images/logo/logo.png b/examples/ngboost-vignette/_build/images/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2cf42e707a8bbe9f9c0c661f9c9a6265af575b GIT binary patch literal 17050 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
&hpDjLTg`*y{)Dhp7Q@N^1TXJ-S@uU@xJ6 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