Building models with scikit-learn

On this page
  1. The one idea: everything is an estimator
  2. Preprocessing belongs inside the pipeline
  3. Scores: accuracy is the wrong one here
  4. Cross-validation: do not shuffle time
  5. Grid search, on the right splitter
  6. Inspection: what did it learn?
  7. Saving the model
  8. Where it stops
  9. Why banks use it
  10. Summary
  11. Next
  12. References

scikit-learn is where machine learning on a table of numbers happens in Python. Linear models, trees, forests, boosting, support-vector machines, clustering, dimensionality reduction, and around them the parts that matter more than the algorithm: preprocessing, cross-validation, hyperparameter search, metrics. It began as a Google Summer of Code project in 2007 and became what it is when a group at INRIA in France took it over in 2010 (about). The Python stack post placed it among its neighbours; this post is about using it well.

The example is the one the ML basics series used: five tickers, daily features computed from prices (recent returns, recent volatility, distance from the moving average), and the question will the next 20 trading days be a stress month, volatility above 30% a year. Train on 2019 to 2021, test on 2022 to 2023. Every number below comes from one script on that data.

The one idea: everything is an estimator

scikit-learn has one interface, and once you know it you know the library. Every object is an estimator: you construct it with its settings (hyperparameters), you call fit(X, y) to learn from data, and afterwards it has learned attributes whose names end in an underscore (coef_, feature_importances_, classes_). Beyond that, three kinds:

KindMethodsExamples
Predictorfit, predict, predict_proba, scoreLogisticRegression, RandomForestClassifier
Transformerfit, transform, fit_transformStandardScaler, OneHotEncoder, SimpleImputer, PCA
Meta-estimatorwraps estimators, exposes the same methodsPipeline, ColumnTransformer, GridSearchCV

The design was a deliberate choice, written up by the core developers in 2013 (Buitinck et al.): a shared interface for every unit, composition over inheritance, and sensible defaults so that a model works before it is tuned. Géron’s Hands-On Machine Learning summarises the same principles as consistency, inspection, non-proliferation of classes, composition and sensible defaults. The practical consequence is that swapping a model is a one-line change, and the code around it (splitting, scaling, scoring, searching) does not care which model it holds.

from sklearn.compose import ColumnTransformer
from sklearn.dummy import DummyClassifier
from sklearn.ensemble import HistGradientBoostingClassifier, RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler

FEATURES = ["ret_1d", "ret_5d", "ret_20d", "vol_5d", "vol_20d", "sma_ratio", "bollinger"]

def prep():                       # a fresh preprocessor per pipeline (see below)
    return ColumnTransformer([("num", StandardScaler(), FEATURES),
                              ("ticker", OneHotEncoder(handle_unknown="ignore"), ["ticker"])])

models = {
    "always 'calm'": DummyClassifier(strategy="prior"),
    "logistic regression": Pipeline([
        ("prep", prep()), ("model", LogisticRegression(max_iter=1000))]),
    "random forest": Pipeline([
        ("prep", prep()), ("model", RandomForestClassifier(
            n_estimators=300, max_features=3, min_samples_leaf=20, random_state=0))]),
    "gradient boosting": Pipeline([
        ("prep", prep()), ("model", HistGradientBoostingClassifier(
            max_depth=3, learning_rate=0.05, max_iter=200, random_state=0))]),
}
for name, m in models.items():
    m.fit(X_train, y_train)
    p = m.predict_proba(X_test)[:, 1]
    print(name, m.score(X_test, y_test), roc_auc_score(y_test, p))
ModelAccuracyAUCAverage precision
Always “calm” (DummyClassifier)0.7740.5000.226
Logistic regression0.7950.8310.562
Random forest0.7890.8240.536
Gradient boosting0.7910.8190.536

Four models, one loop. Two things in that table before going further. First, the dummy classifier that always answers “calm” scores 77% accuracy, because 77% of test months are calm; accuracy is the wrong score for this problem, and the next section says what to use. Second, the plain logistic regression is the best of the three real models on this data, and by a margin that holds (the boosting post found the same on a sister problem). A linear model with scaled inputs is the baseline to beat. Do not skip it.

Preprocessing belongs inside the pipeline

The ColumnTransformer above scales the seven numeric columns and one-hot encodes the ticker, and the Pipeline glues that to the model. The glue is not there for tidiness. A transformer fitted on the whole dataset has seen the test set. StandardScaler learns a mean and a standard deviation; fit it on all the rows and the test rows’ statistics leak into training. Inside a pipeline, fit runs the scaler on the training rows only and predict reuses those numbers on the test rows, and the same holds inside every cross-validation fold. The same reasoning covers SimpleImputer (the fill value for missing data is learned) and OneHotEncoder (the set of categories is learned; handle_unknown="ignore" is what keeps a ticker that was not in training from crashing prediction).

Two things the library does not do for you:

  • Estimators are stateful, and a pipeline fits its steps in place. The first version of the script built one ColumnTransformer and passed the same object to four pipelines. Each fit refitted it, which was harmless while every pipeline saw the same columns, and then a fifth pipeline fed it rescaled columns and silently broke the other four: their test AUC fell from 0.83\key{0.83} to 0.77\key{0.77} with no error. Build a fresh object per pipeline, or use sklearn.base.clone. Meta-estimators such as GridSearchCV and cross_val_score clone for you; Pipeline does not.
  • Custom steps are a small class. Anything with fit and transform can go in a pipeline; inheriting from BaseEstimator and TransformerMixin gives it fit_transform, get_params and a sensible repr for free. Here is one that turns daily volatility into the yearly percentage the rest of the site quotes, so that the numbers mean something when the model is inspected:
from sklearn.base import BaseEstimator, TransformerMixin

class Annualise(BaseEstimator, TransformerMixin):
    def __init__(self, columns=("vol_5d", "vol_20d")):
        self.columns = columns        # stored as given, never changed

    def fit(self, X, y=None):
        return self                   # nothing to learn

    def transform(self, X):
        X = X.copy()
        X[list(self.columns)] = X[list(self.columns)] * (252 ** 0.5) * 100
        return X

pipe = make_pipeline(Annualise(), prep(), LogisticRegression(max_iter=1000))
pipe.fit(X_train, y_train)

The constructor stores its arguments untouched; that is the one rule the library’s developer guide insists on, because get_params and set_params (which grid search uses) read and write those attributes by name. The model with this step scores the same 0.831\key{0.831} as before, since the scaler undoes a constant factor; the step is there so that vol_20d reads as “31% a year” rather than “0.0195” when you look inside.

Scores: accuracy is the wrong one here

The confusion matrix of the logistic regression on the test months, at the default cut-off of 0.5:

ItemPredicted calmPredicted stress
Actually calm (1,861)1,78180
Actually stress (544)412132

TP, stress months caughtFN, stress months missedFP, false alarms

precision=TPTP+FP=132132+80=0.62recall=TPTP+FN=132132+412=0.24\begin{aligned} \text{precision} &= \frac{\good{TP}}{\good{TP} + \risk{FP}} = \frac{132}{132 + 80} = 0.62 \\[10pt] \text{recall} &= \frac{\good{TP}}{\good{TP} + \bad{FN}} = \frac{132}{132 + 412} = 0.24 \end{aligned}

When the model says “stress” it is right 62%\key{62\%} of the time, and it catches only 24%\key{24\%} of the stress months. The 0.5 cut-off is a default, not a decision. A risk desk that wants to catch most stress months accepts more false alarms and moves the cut-off down. class_weight="balanced" does that at training time by weighting the rare class up: recall rises to 70%\key{70\%} (381 of 544 caught) and precision falls to 45%\key{45\%}, with the AUC barely moved (0.831 to 0.829), because AUC measures the ranking of the probabilities, not the cut-off. That is why the tables here report AUC and average precision instead of accuracy: both score how well the model separates the classes, whatever cut-off is chosen later. classification_report prints precision, recall and F1 per class in one call; use it before quoting an accuracy.

{"panels":[{"x0":52.28,"x1":565.2,"y0":29.16,"y1":219.01,"title":"1. Cross-validated AUC on 2019-2021, shuffled folds vs time-ordered folds","xlabel":"Validation fold (1 to 5)","ylabel":"AUC on the validation fold (0.5 = coin flip)","xlog":false},{"x0":52.28,"x1":565.2,"y0":309.49,"y1":499.34,"title":"2. Grid search: validation AUC for each learning rate and tree depth","xlabel":"Learning rate (log scale)","ylabel":"Mean validation AUC over 5 time-ordered folds","xlog":true},{"x0":52.28,"x1":565.2,"y0":589.83,"y1":779.68,"title":"3. ROC curves on the 2022-2023 test months","xlabel":"Calm months wrongly flagged as stress (% of calm months)","ylabel":"Stress months caught (% of stress months)","xlog":false}],"series":[{"panel":0,"label":"KFold, shuffled (future rows leak into training)","color":"var(--chart-amber, #c0781a)","x":[1.0,2.0,3.0,4.0,5.0],"y":[0.931234,0.89619,0.910852,0.914546,0.909523],"sx":[75.6,192.17,308.74,425.31,541.89],"sy":[37.79,49.73,44.73,43.48,45.19]},{"panel":0,"label":"TimeSeriesSplit (train on the past, validate on what follows)","color":"var(--chart-maroon, #b6262c)","x":[1.0,2.0,3.0,4.0,5.0],"y":[0.898948,0.424928,0.787807,0.884896,0.672841],"sx":[75.6,192.17,308.74,425.31,541.89],"sy":[48.79,210.38,86.68,53.58,125.87]},{"panel":0,"label":"the real test, 2022-2023","color":"var(--chart-blue, #3b6ea5)","x":[0.0,1.0],"y":[0.818926,0.818926],"sx":[-40.98,75.6],"sy":[76.07,76.07]},{"panel":1,"label":"trees of depth 2","color":"var(--chart-grey, #a3a19c)","x":[0.01,0.03,0.1,0.3],"y":[0.791832,0.763538,0.747851,0.739224],"sx":[75.6,226.21,391.27,541.89],"sy":[318.12,398.48,443.03,467.53]},{"panel":1,"label":"trees of depth 3","color":"var(--chart-maroon, #b6262c)","x":[0.01,0.03,0.1,0.3],"y":[0.759084,0.741203,0.73106,0.733646],"sx":[75.6,226.21,391.27,541.89],"sy":[411.12,461.91,490.71,483.37]},{"panel":1,"label":"trees of depth 5","color":"var(--chart-blue, #3b6ea5)","x":[0.01,0.03,0.1,0.3],"y":[0.749815,0.756238,0.738733,0.752281],"sx":[75.6,226.21,391.27,541.89],"sy":[437.45,419.21,468.92,430.45]},{"panel":2,"label":"logistic regression (AUC 0.831)","color":"var(--chart-purple, #7c5fd3)","x":[0.0,0.0,0.0,0.0537346,0.0537346,0.161204,0.161204,0.214938,0.214938,0.268673,0.268673,0.322407,0.322407,0.376142,0.376142,0.429876,0.429876,0.483611,0.483611,0.537346,0.537346,0.644815,0.644815,0.913487,0.913487,0.967222,0.967222,1.02096,1.02096,1.07469,1.07469,1.12843,1.12843,1.18216,1.18216,1.23589,1.23589,1.28963,1.28963,1.34336,1.34336,1.3971,1.3971,1.5583,1.5583,1.66577,1.66577,1.71951,1.71951,1.82697,1.82697,1.88071,1.88071,1.98818,1.98818,2.04191,2.04191,2.14938,2.14938,2.20312,2.20312,2.25685,2.25685,2.41805,2.41805,2.57926,2.57926,2.63299,2.63299,2.68673,2.68673,2.74046,2.74046,2.9554,2.9554,3.00913,3.00913,3.17034,3.17034,3.27781,3.27781,3.33154,3.33154,3.54648,3.54648,3.60021,3.60021,3.92262,3.92262,4.1913,4.1913,4.29876,4.29876,4.40623,4.40623,4.45997,4.45997,4.56744,4.56744,4.67491,4.67491,4.72864,4.72864,4.78238,4.78238,4.88984,4.88984,4.94358,4.94358,5.10478,5.10478,5.15852,5.15852,5.21225,5.21225,5.26599,5.26599,5.31972,5.31972,5.48092,5.48092,5.53466,5.53466,5.58839,5.58839,5.69586,5.69586,5.7496,5.7496,5.80333,5.80333,5.9108,5.9108,5.96454,5.96454,6.01827,6.01827,6.17947,6.17947,6.23321,6.23321,6.44815,6.44815,6.60935,6.60935,6.71682,6.71682,6.82429,6.82429,6.87802,6.87802,6.93176,6.93176,6.98549,6.98549,7.03923,7.03923,7.1467,7.1467,7.20043,7.20043,7.25416,7.25416,7.3079,7.3079,7.36163,7.36163,7.41537,7.41537,7.52284,7.52284,7.57657,7.57657,7.63031,7.63031,7.68404,7.68404,7.73778,7.73778,7.95271,7.95271,8.00645,8.00645,8.06018,8.06018,8.11392,8.11392,8.27512,8.27512,8.38259,8.38259,8.43632,8.43632,8.49006,8.49006,8.75873,8.75873,8.81247,8.81247,9.0274,9.0274,9.08114,9.08114,9.13487,9.13487,9.34981,9.34981,9.45728,9.45728,9.61848,9.61848,9.83342,9.83342,10.0484,10.0484,10.1558,10.1558,10.2633,10.2633,10.3708,10.3708,10.4245,10.4245,10.532,10.532,10.5857,10.5857,10.6394,10.6394,10.7469,10.7469,10.9618,10.9618,11.0693,11.0693,11.1231,11.1231,11.2305,11.2305,11.2843,11.2843,11.338,11.338,11.6067,11.6067,11.6604,11.6604,12.3052,12.3052,12.3589,12.3589,12.4127,12.4127,12.4664,12.4664,12.6276,12.6276,12.6814,12.6814,12.7351,12.7351,13.3799,13.3799,13.4336,13.4336,13.5948,13.5948,13.7023,13.7023,13.756,13.756,13.971,13.971,14.1322,14.1322,14.4009,14.4009,14.5621,14.5621,14.6158,14.6158,14.7233,14.7233,14.8307,14.8307,15.0457,15.0457,15.1531,15.1531,15.2069,15.2069,15.2606,15.2606,15.4218,15.4218,15.4756,15.4756,15.583,15.583,15.6905,15.6905,16.0666,16.0666,16.1204,16.1204,16.6577,16.6577,16.7114,16.7114,16.7652,16.7652,17.0339,17.0339,17.0876,17.0876,17.1413,17.1413,17.3025,17.3025,17.7324,17.7324,18.1085,18.1085,18.1623,18.1623,18.3772,18.3772,18.431,18.431,18.4847,18.4847,18.5384,18.5384,18.6996,18.6996,18.8608,18.8608,19.022,19.022,19.5056,19.5056,19.7206,19.7206,19.7743,19.7743,19.9355,19.9355,20.043,20.043,20.5266,20.5266,20.7415,20.7415,20.7953,20.7953,20.9565,20.9565,21.0639,21.0639,21.2251,21.2251,21.5476,21.5476,21.6013,21.6013,21.8162,21.8162,22.0312,22.0312,22.1924,22.1924,22.2998,22.2998,22.3536,22.3536,22.5148,22.5148,22.5685,22.5685,22.7297,22.7297,22.7834,22.7834,22.8372,22.8372,22.9447,22.9447,23.1059,23.1059,23.2671,23.2671,23.4283,23.4283,23.6969,23.6969,23.8581,23.8581,24.1268,24.1268,24.1805,24.1805,24.3418,24.3418,24.3955,24.3955,24.4492,24.4492,24.5567,24.5567,24.8791,24.8791,25.1478,25.1478,25.4164,25.4164,26.1687,26.1687,26.3299,26.3299,26.4374,26.4374,26.4911,26.4911,26.7598,26.7598,26.921,26.921,27.1897,27.1897,27.2434,27.2434,27.3509,27.3509,27.5121,27.5121,27.8345,27.8345,28.0494,28.0494,28.4256,28.4256,28.748,28.748,28.8017,28.8017,28.9092,28.9092,28.9629,28.9629,29.1241,29.1241,29.1779,29.1779,29.3928,29.3928,29.4465,29.4465,29.6077,29.6077,29.7152,29.7152,29.8227,29.8227,29.8764,29.8764,29.9301,29.9301,30.1451,30.1451,30.36,30.36,30.4138,30.4138,30.5212,30.5212,30.6824,30.6824,30.7899,30.7899,30.8974,30.8974,30.9511,30.9511,31.166,31.166,31.5422,31.5422,31.7034,31.7034,32.0795,32.0795,32.187,32.187,32.3482,32.3482,32.4019,32.4019,32.4557,32.4557,32.7243,32.7243,32.7781,32.7781,32.993,32.993,33.0467,33.0467,33.1005,33.1005,33.6378,33.6378,34.0677,34.0677,34.1214,34.1214,34.1752,34.1752,34.7125,34.7125,35.0349,35.0349,35.1424,35.1424,35.3036,35.3036,35.4648,35.4648,36.1096,36.1096,36.7544,36.7544,36.9694,36.9694,37.0231,37.0231,37.1306,37.1306,37.3992,37.3992,38.5277,38.5277,38.8501,38.8501,39.1188,39.1188,39.3874,39.3874,40.1397,40.1397,40.4621,40.4621,40.7845,40.7845,41.0532,41.0532,41.2144,41.2144,41.2681,41.2681,41.8055,41.8055,42.0742,42.0742,42.2354,42.2354,42.2891,42.2891,42.3428,42.3428,42.5578,42.5578,43.0951,43.0951,43.31,43.31,43.5787,43.5787,43.7937,43.7937,44.1698,44.1698,44.2235,44.2235,44.2773,44.2773,44.4385,44.4385,44.9758,44.9758,45.1908,45.1908,45.7281,45.7281,45.9968,45.9968,46.1042,46.1042,46.6416,46.6416,47.4476,47.4476,49.2208,49.2208,49.3283,49.3283,50.1343,50.1343,50.8866,50.8866,51.4777,51.4777,52.2837,52.2837,52.3375,52.3375,53.036,53.036,54.7555,54.7555,55.669,55.669,56.0989,56.0989,57.7109,57.7109,62.7082,62.7082,65.3412,65.3412,67.5981,67.5981,68.1354,68.1354,69.0489,69.0489,70.0699,70.0699,70.6072,70.6072,71.3595,71.3595,100.0],"y":[0.0,0.183824,0.919118,0.919118,2.02206,2.02206,2.20588,2.20588,2.94118,2.94118,3.67647,3.67647,4.22794,4.22794,4.77941,4.77941,4.96324,4.96324,5.14706,5.14706,5.33088,5.33088,6.25,6.25,6.98529,6.98529,9.19118,9.19118,10.1103,10.1103,10.8456,10.8456,12.1324,12.1324,13.9706,13.9706,14.1544,14.1544,14.7059,14.7059,15.2574,15.2574,16.1765,16.1765,16.3603,16.3603,17.0956,17.0956,17.4632,17.4632,18.1985,18.1985,18.3824,18.3824,18.75,18.75,19.1176,19.1176,19.4853,19.4853,19.6691,19.6691,19.8529,19.8529,20.2206,20.2206,20.4044,20.4044,21.1397,21.1397,21.3235,21.3235,21.5074,21.5074,21.6912,21.6912,21.875,21.875,22.0588,22.0588,22.2426,22.2426,22.7941,22.7941,22.9779,22.9779,23.1618,23.1618,23.7132,23.7132,24.0809,24.0809,24.4485,24.4485,24.6324,24.6324,25.0,25.0,25.5515,25.5515,25.7353,25.7353,26.2868,26.2868,26.4706,26.4706,26.6544,26.6544,27.3897,27.3897,27.9412,27.9412,28.3088,28.3088,28.4926,28.4926,28.6765,28.6765,29.9632,29.9632,30.1471,30.1471,30.3309,30.3309,31.0662,31.0662,31.25,31.25,31.9853,31.9853,32.1691,32.1691,32.3529,32.3529,34.0074,34.0074,34.1912,34.1912,34.5588,34.5588,34.9265,34.9265,35.1103,35.1103,35.2941,35.2941,35.4779,35.4779,35.8456,35.8456,36.0294,36.0294,36.5809,36.5809,36.7647,36.7647,36.9485,36.9485,37.1324,37.1324,37.5,37.5,37.6838,37.6838,38.0515,38.0515,38.2353,38.2353,38.6029,38.6029,38.7868,38.7868,39.3382,39.3382,39.8897,39.8897,40.625,40.625,40.9926,40.9926,41.3603,41.3603,41.5441,41.5441,41.7279,41.7279,42.0956,42.0956,42.4632,42.4632,42.6471,42.6471,43.1985,43.1985,43.5662,43.5662,43.75,43.75,43.9338,43.9338,44.1176,44.1176,44.3015,44.3015,44.4853,44.4853,44.6691,44.6691,45.4044,45.4044,45.5882,45.5882,46.1397,46.1397,46.5074,46.5074,46.875,46.875,47.4265,47.4265,47.7941,47.7941,47.9779,47.9779,48.8971,48.8971,49.2647,49.2647,49.4485,49.4485,49.6324,49.6324,49.8162,49.8162,50.1838,50.1838,50.3676,50.3676,50.5515,50.5515,50.7353,50.7353,50.9191,50.9191,51.1029,51.1029,51.8382,51.8382,52.0221,52.0221,52.3897,52.3897,52.5735,52.5735,52.7574,52.7574,53.125,53.125,53.4926,53.4926,53.6765,53.6765,53.8603,53.8603,54.2279,54.2279,54.4118,54.4118,54.5956,54.5956,54.7794,54.7794,55.3309,55.3309,55.5147,55.5147,55.6985,55.6985,55.8824,55.8824,56.0662,56.0662,56.25,56.25,56.6176,56.6176,56.9853,56.9853,57.1691,57.1691,57.3529,57.3529,57.7206,57.7206,57.9044,57.9044,58.0882,58.0882,58.2721,58.2721,58.4559,58.4559,58.8235,58.8235,59.1912,59.1912,59.375,59.375,59.5588,59.5588,59.7426,59.7426,59.9265,59.9265,60.2941,60.2941,60.4779,60.4779,60.6618,60.6618,60.8456,60.8456,61.3971,61.3971,61.5809,61.5809,61.7647,61.7647,61.9485,61.9485,62.3162,62.3162,62.5,62.5,63.2353,63.2353,63.4191,63.4191,63.6029,63.6029,63.7868,63.7868,63.9706,63.9706,64.1544,64.1544,64.3382,64.3382,64.5221,64.5221,64.7059,64.7059,64.8897,64.8897,65.0735,65.0735,65.2574,65.2574,65.4412,65.4412,65.625,65.625,65.9926,65.9926,66.1765,66.1765,66.5441,66.5441,66.7279,66.7279,67.2794,67.2794,67.4632,67.4632,67.6471,67.6471,67.8309,67.8309,68.0147,68.0147,68.1985,68.1985,68.3824,68.3824,68.75,68.75,68.9338,68.9338,69.3015,69.3015,69.4853,69.4853,69.6691,69.6691,70.0368,70.0368,70.2206,70.2206,70.4044,70.4044,70.5882,70.5882,70.7721,70.7721,70.9559,70.9559,71.1397,71.1397,71.5074,71.5074,71.6912,71.6912,71.875,71.875,72.2426,72.2426,72.4265,72.4265,72.7941,72.7941,72.9779,72.9779,73.1618,73.1618,73.3456,73.3456,73.7132,73.7132,73.8971,73.8971,74.2647,74.2647,74.6324,74.6324,75.0,75.0,75.1838,75.1838,75.3676,75.3676,75.7353,75.7353,75.9191,75.9191,76.1029,76.1029,76.4706,76.4706,77.0221,77.0221,77.2059,77.2059,77.3897,77.3897,77.7574,77.7574,77.9412,77.9412,78.125,78.125,78.3088,78.3088,79.5956,79.5956,79.7794,79.7794,79.9632,79.9632,80.1471,80.1471,81.25,81.25,81.4338,81.4338,81.6176,81.6176,81.8015,81.8015,81.9853,81.9853,82.1691,82.1691,82.3529,82.3529,82.5368,82.5368,82.7206,82.7206,82.9044,82.9044,83.0882,83.0882,83.2721,83.2721,83.4559,83.4559,83.6397,83.6397,83.8235,83.8235,84.0074,84.0074,84.1912,84.1912,84.375,84.375,84.5588,84.5588,84.7426,84.7426,84.9265,84.9265,85.1103,85.1103,85.8456,85.8456,86.2132,86.2132,86.3971,86.3971,86.5809,86.5809,86.9485,86.9485,87.1324,87.1324,87.3162,87.3162,87.5,87.5,87.6838,87.6838,87.8676,87.8676,88.0515,88.0515,88.2353,88.2353,88.4191,88.4191,88.6029,88.6029,88.9706,88.9706,89.1544,89.1544,89.3382,89.3382,89.7059,89.7059,89.8897,89.8897,90.0735,90.0735,90.2574,90.2574,90.4412,90.4412,90.625,90.625,90.8088,90.8088,90.9926,90.9926,91.1765,91.1765,91.3603,91.3603,91.7279,91.7279,91.9118,91.9118,92.0956,92.0956,92.2794,92.2794,92.8309,92.8309,93.0147,93.0147,93.3824,93.3824,93.5662,93.5662,93.75,93.75,93.9338,93.9338,94.3015,94.3015,94.4853,94.4853,94.6691,94.6691,94.8529,94.8529,95.0368,95.0368,95.2206,95.2206,95.4044,95.4044,95.5882,95.5882,95.7721,95.7721,95.9559,95.9559,96.1397,96.1397,96.6912,96.6912,97.0588,97.0588,97.4265,97.4265,97.6103,97.6103,97.7941,97.7941,97.9779,97.9779,98.1618,98.1618,98.3456,98.3456,98.5294,98.5294,98.7132,98.7132,98.8971,98.8971,99.0809,99.0809,99.2647,99.2647,99.4485,99.4485,99.8162,99.8162,100.0,100.0],"sx":[75.6,75.6,75.6,75.85,75.85,76.35,76.35,76.6,76.6,76.85,76.85,77.1,77.1,77.35,77.35,77.6,77.6,77.85,77.85,78.1,78.1,78.6,78.6,79.86,79.86,80.11,80.11,80.36,80.36,80.61,80.61,80.86,80.86,81.11,81.11,81.36,81.36,81.61,81.61,81.86,81.86,82.11,82.11,82.86,82.86,83.36,83.36,83.61,83.61,84.12,84.12,84.37,84.37,84.87,84.87,85.12,85.12,85.62,85.62,85.87,85.87,86.12,86.12,86.87,86.87,87.62,87.62,87.87,87.87,88.12,88.12,88.38,88.38,89.38,89.38,89.63,89.63,90.38,90.38,90.88,90.88,91.13,91.13,92.13,92.13,92.38,92.38,93.89,93.89,95.14,95.14,95.64,95.64,96.14,96.14,96.39,96.39,96.89,96.89,97.4,97.4,97.65,97.65,97.9,97.9,98.4,98.4,98.65,98.65,99.4,99.4,99.65,99.65,99.9,99.9,100.15,100.15,100.4,100.4,101.15,101.15,101.4,101.4,101.65,101.65,102.16,102.16,102.41,102.41,102.66,102.66,103.16,103.16,103.41,103.41,103.66,103.66,104.41,104.41,104.66,104.66,105.66,105.66,106.42,106.42,106.92,106.92,107.42,107.42,107.67,107.67,107.92,107.92,108.17,108.17,108.42,108.42,108.92,108.92,109.17,109.17,109.42,109.42,109.67,109.67,109.92,109.92,110.17,110.17,110.67,110.67,110.93,110.93,111.18,111.18,111.43,111.43,111.68,111.68,112.68,112.68,112.93,112.93,113.18,113.18,113.43,113.43,114.18,114.18,114.68,114.68,114.93,114.93,115.18,115.18,116.44,116.44,116.69,116.69,117.69,117.69,117.94,117.94,118.19,118.19,119.19,119.19,119.7,119.7,120.45,120.45,121.45,121.45,122.45,122.45,122.95,122.95,123.45,123.45,123.95,123.95,124.21,124.21,124.71,124.71,124.96,124.96,125.21,125.21,125.71,125.71,126.71,126.71,127.21,127.21,127.46,127.46,127.96,127.96,128.21,128.21,128.46,128.46,129.72,129.72,129.97,129.97,132.97,132.97,133.23,133.23,133.48,133.48,133.73,133.73,134.48,134.48,134.73,134.73,134.98,134.98,137.99,137.99,138.24,138.24,138.99,138.99,139.49,139.49,139.74,139.74,140.74,140.74,141.49,141.49,142.75,142.75,143.5,143.5,143.75,143.75,144.25,144.25,144.75,144.75,145.75,145.75,146.25,146.25,146.5,146.5,146.76,146.76,147.51,147.51,147.76,147.76,148.26,148.26,148.76,148.76,150.51,150.51,150.76,150.76,153.27,153.27,153.52,153.52,153.77,153.77,155.02,155.02,155.27,155.27,155.52,155.52,156.28,156.28,158.28,158.28,160.03,160.03,160.29,160.29,161.29,161.29,161.54,161.54,161.79,161.79,162.04,162.04,162.79,162.79,163.54,163.54,164.29,164.29,166.55,166.55,167.55,167.55,167.8,167.8,168.55,168.55,169.05,169.05,171.31,171.31,172.31,172.31,172.56,172.56,173.31,173.31,173.82,173.82,174.57,174.57,176.07,176.07,176.32,176.32,177.32,177.32,178.33,178.33,179.08,179.08,179.58,179.58,179.83,179.83,180.58,180.58,180.83,180.83,181.58,181.58,181.83,181.83,182.08,182.08,182.59,182.59,183.34,183.34,184.09,184.09,184.84,184.84,186.09,186.09,186.84,186.84,188.1,188.1,188.35,188.35,189.1,189.1,189.35,189.35,189.6,189.6,190.1,190.1,191.61,191.61,192.86,192.86,194.11,194.11,197.62,197.62,198.37,198.37,198.87,198.87,199.12,199.12,200.37,200.37,201.13,201.13,202.38,202.38,202.63,202.63,203.13,203.13,203.88,203.88,205.39,205.39,206.39,206.39,208.14,208.14,209.65,209.65,209.9,209.9,210.4,210.4,210.65,210.65,211.4,211.4,211.65,211.65,212.65,212.65,212.9,212.9,213.65,213.65,214.16,214.16,214.66,214.66,214.91,214.91,215.16,215.16,216.16,216.16,217.16,217.16,217.41,217.41,217.91,217.91,218.67,218.67,219.17,219.17,219.67,219.67,219.92,219.92,220.92,220.92,222.67,222.67,223.43,223.43,225.18,225.18,225.68,225.68,226.43,226.43,226.68,226.68,226.93,226.93,228.19,228.19,228.44,228.44,229.44,229.44,229.69,229.69,229.94,229.94,232.45,232.45,234.45,234.45,234.7,234.7,234.95,234.95,237.46,237.46,238.96,238.96,239.46,239.46,240.21,240.21,240.97,240.97,243.97,243.97,246.98,246.98,247.98,247.98,248.23,248.23,248.73,248.73,249.99,249.99,255.25,255.25,256.75,256.75,258.0,258.0,259.26,259.26,262.76,262.76,264.27,264.27,265.77,265.77,267.02,267.02,267.77,267.77,268.03,268.03,270.53,270.53,271.78,271.78,272.54,272.54,272.79,272.79,273.04,273.04,274.04,274.04,276.54,276.54,277.55,277.55,278.8,278.8,279.8,279.8,281.56,281.56,281.81,281.81,282.06,282.06,282.81,282.81,285.31,285.31,286.32,286.32,288.82,288.82,290.07,290.07,290.58,290.58,293.08,293.08,296.84,296.84,305.11,305.11,305.61,305.61,309.37,309.37,312.88,312.88,315.63,315.63,319.39,319.39,319.64,319.64,322.9,322.9,330.92,330.92,335.18,335.18,337.18,337.18,344.7,344.7,368.0,368.0,380.28,380.28,390.8,390.8,393.3,393.3,397.56,397.56,402.32,402.32,404.83,404.83,408.34,408.34,541.89],"sy":[771.05,770.73,769.46,769.46,767.56,767.56,767.24,767.24,765.97,765.97,764.7,764.7,763.75,763.75,762.8,762.8,762.48,762.48,762.16,762.16,761.85,761.85,760.26,760.26,758.99,758.99,755.18,755.18,753.6,753.6,752.33,752.33,750.11,750.11,746.94,746.94,746.62,746.62,745.67,745.67,744.71,744.71,743.13,743.13,742.81,742.81,741.54,741.54,740.91,740.91,739.64,739.64,739.32,739.32,738.69,738.69,738.05,738.05,737.42,737.42,737.1,737.1,736.78,736.78,736.15,736.15,735.83,735.83,734.56,734.56,734.25,734.25,733.93,733.93,733.61,733.61,733.29,733.29,732.98,732.98,732.66,732.66,731.71,731.71,731.39,731.39,731.07,731.07,730.12,730.12,729.49,729.49,728.85,728.85,728.53,728.53,727.9,727.9,726.95,726.95,726.63,726.63,725.68,725.68,725.36,725.36,725.04,725.04,723.78,723.78,722.82,722.82,722.19,722.19,721.87,721.87,721.55,721.55,719.33,719.33,719.02,719.02,718.7,718.7,717.43,717.43,717.11,717.11,715.84,715.84,715.53,715.53,715.21,715.21,712.35,712.35,712.04,712.04,711.4,711.4,710.77,710.77,710.45,710.45,710.13,710.13,709.82,709.82,709.18,709.18,708.86,708.86,707.91,707.91,707.59,707.59,707.28,707.28,706.96,706.96,706.33,706.33,706.01,706.01,705.37,705.37,705.06,705.06,704.42,704.42,704.1,704.1,703.15,703.15,702.2,702.2,700.93,700.93,700.3,700.3,699.66,699.66,699.35,699.35,699.03,699.03,698.39,698.39,697.76,697.76,697.44,697.44,696.49,696.49,695.86,695.86,695.54,695.54,695.22,695.22,694.9,694.9,694.59,694.59,694.27,694.27,693.95,693.95,692.68,692.68,692.37,692.37,691.41,691.41,690.78,690.78,690.15,690.15,689.19,689.19,688.56,688.56,688.24,688.24,686.66,686.66,686.02,686.02,685.7,685.7,685.39,685.39,685.07,685.07,684.43,684.43,684.12,684.12,683.8,683.8,683.48,683.48,683.17,683.17,682.85,682.85,681.58,681.58,681.26,681.26,680.63,680.63,680.31,680.31,679.99,679.99,679.36,679.36,678.72,678.72,678.41,678.41,678.09,678.09,677.45,677.45,677.14,677.14,676.82,676.82,676.5,676.5,675.55,675.55,675.23,675.23,674.92,674.92,674.6,674.6,674.28,674.28,673.96,673.96,673.33,673.33,672.7,672.7,672.38,672.38,672.06,672.06,671.43,671.43,671.11,671.11,670.79,670.79,670.47,670.47,670.16,670.16,669.52,669.52,668.89,668.89,668.57,668.57,668.25,668.25,667.94,667.94,667.62,667.62,666.98,666.98,666.67,666.67,666.35,666.35,666.03,666.03,665.08,665.08,664.76,664.76,664.45,664.45,664.13,664.13,663.49,663.49,663.18,663.18,661.91,661.91,661.59,661.59,661.27,661.27,660.96,660.96,660.64,660.64,660.32,660.32,660.0,660.0,659.69,659.69,659.37,659.37,659.05,659.05,658.74,658.74,658.42,658.42,658.1,658.1,657.78,657.78,657.15,657.15,656.83,656.83,656.2,656.2,655.88,655.88,654.93,654.93,654.61,654.61,654.29,654.29,653.98,653.98,653.66,653.66,653.34,653.34,653.02,653.02,652.39,652.39,652.07,652.07,651.44,651.44,651.12,651.12,650.8,650.8,650.17,650.17,649.85,649.85,649.54,649.54,649.22,649.22,648.9,648.9,648.58,648.58,648.27,648.27,647.63,647.63,647.31,647.31,647.0,647.0,646.36,646.36,646.05,646.05,645.41,645.41,645.09,645.09,644.78,644.78,644.46,644.46,643.82,643.82,643.51,643.51,642.87,642.87,642.24,642.24,641.6,641.6,641.29,641.29,640.97,640.97,640.33,640.33,640.02,640.02,639.7,639.7,639.07,639.07,638.11,638.11,637.8,637.8,637.48,637.48,636.84,636.84,636.53,636.53,636.21,636.21,635.89,635.89,633.67,633.67,633.35,633.35,633.04,633.04,632.72,632.72,630.82,630.82,630.5,630.5,630.18,630.18,629.86,629.86,629.55,629.55,629.23,629.23,628.91,628.91,628.6,628.6,628.28,628.28,627.96,627.96,627.64,627.64,627.33,627.33,627.01,627.01,626.69,626.69,626.37,626.37,626.06,626.06,625.74,625.74,625.42,625.42,625.11,625.11,624.79,624.79,624.47,624.47,624.15,624.15,622.88,622.88,622.25,622.25,621.93,621.93,621.62,621.62,620.98,620.98,620.66,620.66,620.35,620.35,620.03,620.03,619.71,619.71,619.39,619.39,619.08,619.08,618.76,618.76,618.44,618.44,618.13,618.13,617.49,617.49,617.17,617.17,616.86,616.86,616.22,616.22,615.9,615.9,615.59,615.59,615.27,615.27,614.95,614.95,614.64,614.64,614.32,614.32,614.0,614.0,613.68,613.68,613.37,613.37,612.73,612.73,612.41,612.41,612.1,612.1,611.78,611.78,610.83,610.83,610.51,610.51,609.88,609.88,609.56,609.56,609.24,609.24,608.92,608.92,608.29,608.29,607.97,607.97,607.66,607.66,607.34,607.34,607.02,607.02,606.7,606.7,606.39,606.39,606.07,606.07,605.75,605.75,605.43,605.43,605.12,605.12,604.17,604.17,603.53,603.53,602.9,602.9,602.58,602.58,602.26,602.26,601.95,601.95,601.63,601.63,601.31,601.31,600.99,600.99,600.68,600.68,600.36,600.36,600.04,600.04,599.72,599.72,599.41,599.41,598.77,598.77,598.46,598.46]},{"panel":2,"label":"random forest (AUC 0.824)","color":"var(--chart-blue, #3b6ea5)","x":[0.0,0.0,0.0,0.0537346,0.0537346,0.107469,0.107469,0.214938,0.214938,0.322407,0.322407,0.376142,0.376142,0.59108,0.59108,0.644815,0.644815,0.806018,0.806018,0.913487,0.913487,1.02096,1.02096,1.07469,1.07469,1.12843,1.12843,1.18216,1.18216,1.23589,1.23589,1.28963,1.28963,1.3971,1.3971,1.50457,1.50457,1.61204,1.61204,1.66577,1.66577,1.71951,1.71951,1.77324,1.77324,1.93444,1.93444,2.14938,2.14938,2.31059,2.31059,2.47179,2.47179,2.63299,2.63299,2.7942,2.7942,2.84793,2.84793,2.90167,2.90167,2.9554,2.9554,3.00913,3.00913,3.06287,3.06287,3.17034,3.17034,3.22407,3.22407,3.27781,3.27781,3.38528,3.38528,3.43901,3.43901,3.49275,3.49275,3.54648,3.54648,3.60021,3.60021,3.65395,3.65395,3.76142,3.76142,3.81515,3.81515,3.86889,3.86889,3.92262,3.92262,3.97636,3.97636,4.08383,4.08383,4.13756,4.13756,4.24503,4.24503,4.3525,4.3525,4.40623,4.40623,4.5137,4.5137,4.56744,4.56744,4.62117,4.62117,4.67491,4.67491,4.83611,4.83611,4.88984,4.88984,4.94358,4.94358,4.99731,4.99731,5.05105,5.05105,5.21225,5.21225,5.26599,5.26599,5.31972,5.31972,5.37346,5.37346,5.42719,5.42719,5.64213,5.64213,5.69586,5.69586,5.7496,5.7496,5.80333,5.80333,5.85707,5.85707,5.9108,5.9108,6.01827,6.01827,6.23321,6.23321,6.28694,6.28694,6.50188,6.50188,6.55562,6.55562,6.60935,6.60935,6.77055,6.77055,6.82429,6.82429,6.93176,6.93176,7.36163,7.36163,7.41537,7.41537,7.73778,7.73778,7.84524,7.84524,7.89898,7.89898,7.95271,7.95271,8.06018,8.06018,8.11392,8.11392,8.16765,8.16765,8.22139,8.22139,8.32886,8.32886,8.59753,8.59753,8.65126,8.65126,8.75873,8.75873,8.81247,8.81247,8.91994,8.91994,8.97367,8.97367,9.08114,9.08114,9.13487,9.13487,9.24234,9.24234,9.34981,9.34981,9.45728,9.45728,9.51102,9.51102,9.56475,9.56475,9.83342,9.83342,9.88716,9.88716,9.94089,9.94089,9.99463,9.99463,10.1021,10.1021,10.2096,10.2096,10.317,10.317,10.3708,10.3708,10.4782,10.4782,10.5857,10.5857,10.9081,10.9081,11.0156,11.0156,11.0693,11.0693,11.4455,11.4455,11.4992,11.4992,11.7141,11.7141,11.8753,11.8753,11.9828,11.9828,12.0903,12.0903,12.144,12.144,12.2515,12.2515,12.4127,12.4127,12.5739,12.5739,12.7351,12.7351,12.7888,12.7888,12.8426,12.8426,12.8963,12.8963,13.0575,13.0575,13.2187,13.2187,13.3799,13.3799,13.4336,13.4336,13.4874,13.4874,13.5411,13.5411,13.5948,13.5948,13.6486,13.6486,13.756,13.756,13.8098,13.8098,13.971,13.971,14.1322,14.1322,14.1859,14.1859,14.2397,14.2397,14.4009,14.4009,14.4546,14.4546,14.5621,14.5621,14.6695,14.6695,14.8307,14.8307,14.9919,14.9919,15.2069,15.2069,15.2606,15.2606,15.3143,15.3143,15.8517,15.8517,16.0666,16.0666,16.1204,16.1204,16.1741,16.1741,16.2278,16.2278,16.389,16.389,16.4965,16.4965,16.7114,16.7114,16.8189,16.8189,16.8726,16.8726,16.9264,16.9264,16.9801,16.9801,17.0339,17.0339,17.1951,17.1951,17.3025,17.3025,17.8399,17.8399,18.0011,18.0011,18.1085,18.1085,18.216,18.216,18.2697,18.2697,18.4847,18.4847,18.6459,18.6459,18.9683,18.9683,19.1295,19.1295,20.043,20.043,20.1505,20.1505,20.2042,20.2042,20.2579,20.2579,20.3117,20.3117,20.4191,20.4191,20.5266,20.5266,20.6341,20.6341,20.9565,20.9565,21.6013,21.6013,21.8162,21.8162,21.87,21.87,22.0312,22.0312,22.1386,22.1386,22.1924,22.1924,22.2998,22.2998,22.4073,22.4073,22.5148,22.5148,22.7297,22.7297,22.7834,22.7834,22.8909,22.8909,23.1059,23.1059,23.2133,23.2133,23.3208,23.3208,23.3745,23.3745,23.6969,23.6969,23.9119,23.9119,24.0731,24.0731,24.1805,24.1805,24.6104,24.6104,24.9866,24.9866,25.4164,25.4164,25.6314,25.6314,25.7926,25.7926,25.8463,25.8463,25.9538,25.9538,26.115,26.115,26.2225,26.2225,26.7598,26.7598,27.1359,27.1359,27.2434,27.2434,27.8345,27.8345,28.1032,28.1032,28.748,28.748,28.8555,28.8555,28.9629,28.9629,29.1241,29.1241,29.2316,29.2316,29.8764,29.8764,29.9301,29.9301,30.0913,30.0913,30.4675,30.4675,31.0586,31.0586,31.3272,31.3272,31.6497,31.6497,31.7571,31.7571,32.0258,32.0258,32.0795,32.0795,32.2407,32.2407,32.2945,32.2945,32.3482,32.3482,32.5631,32.5631,32.6169,32.6169,32.7781,32.7781,33.1542,33.1542,33.4766,33.4766,33.6378,33.6378,33.8528,33.8528,34.014,34.014,34.2289,34.2289,34.5513,34.5513,35.0887,35.0887,35.5723,35.5723,35.626,35.626,35.6797,35.6797,36.3246,36.3246,36.5395,36.5395,36.9156,36.9156,37.0231,37.0231,37.3992,37.3992,37.5067,37.5067,37.6679,37.6679,37.7217,37.7217,37.9366,37.9366,38.3127,38.3127,38.5814,38.5814,38.7426,38.7426,39.065,39.065,39.7636,39.7636,39.9785,39.9785,40.3546,40.3546,40.6771,40.6771,40.7845,40.7845,40.9995,40.9995,41.0532,41.0532,41.2144,41.2144,41.5368,41.5368,42.0742,42.0742,42.2354,42.2354,42.2891,42.2891,42.4503,42.4503,42.5578,42.5578,42.8802,42.8802,43.2026,43.2026,43.2563,43.2563,43.5787,43.5787,43.7399,43.7399,44.4922,44.4922,44.9221,44.9221,47.2864,47.2864,48.0387,48.0387,49.2208,49.2208,49.3821,49.3821,51.9076,51.9076,54.1107,54.1107,55.4541,55.4541,55.5078,55.5078,56.4213,56.4213,56.5825,56.5825,60.7738,60.7738,61.6873,61.6873,63.5142,63.5142,65.6099,65.6099,68.9414,68.9414,69.1564,69.1564,69.425,69.425,69.5325,69.5325,70.8221,70.8221,72.9715,72.9715,74.5298,74.5298,75.4433,75.4433,75.8195,75.8195,75.8732,75.8732,77.1091,77.1091,78.7211,78.7211,78.8823,78.8823,79.3659,79.3659,80.6018,80.6018,80.8168,80.8168,82.1601,82.1601,100.0],"y":[0.0,0.183824,2.57353,2.57353,2.94118,2.94118,3.30882,3.30882,3.49265,3.49265,3.86029,3.86029,4.04412,4.04412,5.14706,5.14706,5.69853,5.69853,6.25,6.25,6.80147,6.80147,6.98529,6.98529,7.90441,7.90441,8.08824,8.08824,8.63971,8.63971,9.19118,9.19118,9.375,9.375,9.74265,9.74265,11.0294,11.0294,11.2132,11.2132,11.5809,11.5809,11.7647,11.7647,11.9485,11.9485,12.5,12.5,12.6838,12.6838,13.2353,13.2353,13.7868,13.7868,13.9706,13.9706,14.3382,14.3382,14.5221,14.5221,14.7059,14.7059,15.4412,15.4412,15.8088,15.8088,16.3603,16.3603,16.9118,16.9118,17.0956,17.0956,17.4632,17.4632,17.6471,17.6471,17.8309,17.8309,18.0147,18.0147,18.1985,18.1985,18.3824,18.3824,18.5662,18.5662,18.75,18.75,18.9338,18.9338,20.0368,20.0368,20.2206,20.2206,20.4044,20.4044,20.5882,20.5882,20.7721,20.7721,21.3235,21.3235,22.2426,22.2426,22.4265,22.4265,22.7941,22.7941,23.1618,23.1618,23.3456,23.3456,23.5294,23.5294,23.7132,23.7132,24.0809,24.0809,24.2647,24.2647,24.4485,24.4485,24.8162,24.8162,25.0,25.0,25.1838,25.1838,25.7353,25.7353,26.1029,26.1029,26.2868,26.2868,26.6544,26.6544,27.0221,27.0221,27.2059,27.2059,27.3897,27.3897,27.5735,27.5735,27.9412,27.9412,28.125,28.125,28.3088,28.3088,28.4926,28.4926,28.8603,28.8603,29.2279,29.2279,29.4118,29.4118,29.5956,29.5956,29.7794,29.7794,30.1471,30.1471,30.5147,30.5147,30.8824,30.8824,31.0662,31.0662,31.9853,31.9853,32.7206,32.7206,32.9044,32.9044,34.0074,34.0074,35.1103,35.1103,35.4779,35.4779,35.6618,35.6618,35.8456,35.8456,36.0294,36.0294,36.2132,36.2132,36.5809,36.5809,36.9485,36.9485,37.1324,37.1324,37.8676,37.8676,38.0515,38.0515,38.6029,38.6029,38.9706,38.9706,39.5221,39.5221,39.7059,39.7059,39.8897,39.8897,40.0735,40.0735,40.2574,40.2574,40.4412,40.4412,40.625,40.625,42.0956,42.0956,43.3824,43.3824,43.5662,43.5662,44.1176,44.1176,44.3015,44.3015,44.4853,44.4853,45.0368,45.0368,45.2206,45.2206,45.7721,45.7721,45.9559,45.9559,46.1397,46.1397,46.6912,46.6912,46.875,46.875,47.0588,47.0588,47.4265,47.4265,47.6103,47.6103,47.7941,47.7941,47.9779,47.9779,48.5294,48.5294,48.8971,48.8971,49.2647,49.2647,49.4485,49.4485,50.1838,50.1838,50.3676,50.3676,52.0221,52.0221,53.125,53.125,53.3088,53.3088,53.4926,53.4926,53.8603,53.8603,54.0441,54.0441,54.5956,54.5956,54.9632,54.9632,55.1471,55.1471,55.3309,55.3309,55.5147,55.5147,56.0662,56.0662,56.25,56.25,56.4338,56.4338,56.8015,56.8015,56.9853,56.9853,57.1691,57.1691,57.3529,57.3529,57.7206,57.7206,58.2721,58.2721,59.0074,59.0074,59.1912,59.1912,59.5588,59.5588,59.9265,59.9265,60.1103,60.1103,60.2941,60.2941,60.4779,60.4779,60.6618,60.6618,61.0294,61.0294,61.5809,61.5809,61.7647,61.7647,62.1324,62.1324,62.3162,62.3162,62.6838,62.6838,63.0515,63.0515,63.2353,63.2353,63.7868,63.7868,63.9706,63.9706,64.5221,64.5221,64.7059,64.7059,64.8897,64.8897,65.2574,65.2574,65.4412,65.4412,65.8088,65.8088,65.9926,65.9926,66.5441,66.5441,67.0956,67.0956,67.4632,67.4632,67.6471,67.6471,68.0147,68.0147,68.3824,68.3824,68.5662,68.5662,68.75,68.75,68.9338,68.9338,69.1176,69.1176,69.3015,69.3015,69.4853,69.4853,70.2206,70.2206,70.4044,70.4044,70.9559,70.9559,71.1397,71.1397,71.5074,71.5074,71.6912,71.6912,71.875,71.875,72.0588,72.0588,72.2426,72.2426,72.6103,72.6103,73.3456,73.3456,73.5294,73.5294,73.7132,73.7132,74.4485,74.4485,74.6324,74.6324,74.8162,74.8162,75.0,75.0,75.1838,75.1838,75.5515,75.5515,75.7353,75.7353,76.1029,76.1029,76.4706,76.4706,76.6544,76.6544,76.8382,76.8382,77.2059,77.2059,77.3897,77.3897,77.5735,77.5735,78.125,78.125,78.4926,78.4926,78.6765,78.6765,78.8603,78.8603,79.0441,79.0441,79.2279,79.2279,79.4118,79.4118,79.5956,79.5956,79.7794,79.7794,79.9632,79.9632,80.1471,80.1471,80.3309,80.3309,80.5147,80.5147,80.6985,80.6985,81.0662,81.0662,81.25,81.25,81.4338,81.4338,81.6176,81.6176,81.8015,81.8015,81.9853,81.9853,82.5368,82.5368,82.7206,82.7206,82.9044,82.9044,83.2721,83.2721,83.4559,83.4559,83.6397,83.6397,84.1912,84.1912,84.375,84.375,84.5588,84.5588,84.7426,84.7426,85.1103,85.1103,85.2941,85.2941,85.4779,85.4779,85.6618,85.6618,85.8456,85.8456,86.0294,86.0294,86.2132,86.2132,86.3971,86.3971,86.5809,86.5809,86.9485,86.9485,87.1324,87.1324,87.3162,87.3162,87.5,87.5,87.6838,87.6838,87.8676,87.8676,88.2353,88.2353,88.4191,88.4191,88.6029,88.6029,88.7868,88.7868,89.3382,89.3382,89.5221,89.5221,89.7059,89.7059,89.8897,89.8897,90.0735,90.0735,90.2574,90.2574,90.4412,90.4412,90.625,90.625,90.8088,90.8088,91.1765,91.1765,91.3603,91.3603,91.5441,91.5441,91.7279,91.7279,92.0956,92.0956,92.2794,92.2794,92.4632,92.4632,92.6471,92.6471,93.0147,93.0147,93.1985,93.1985,93.5662,93.5662,93.75,93.75,93.9338,93.9338,94.1176,94.1176,94.3015,94.3015,94.4853,94.4853,94.6691,94.6691,94.8529,94.8529,95.0368,95.0368,95.2206,95.2206,95.4044,95.4044,95.5882,95.5882,95.7721,95.7721,95.9559,95.9559,96.1397,96.1397,96.3235,96.3235,96.5074,96.5074,96.6912,96.6912,96.875,96.875,97.0588,97.0588,97.2426,97.2426,97.4265,97.4265,97.6103,97.6103,97.7941,97.7941,97.9779,97.9779,98.1618,98.1618,98.3456,98.3456,98.5294,98.5294,98.7132,98.7132,98.8971,98.8971,99.0809,99.0809,99.2647,99.2647,99.4485,99.4485,99.8162,99.8162,100.0,100.0],"sx":[75.6,75.6,75.6,75.85,75.85,76.1,76.1,76.6,76.6,77.1,77.1,77.35,77.35,78.35,78.35,78.6,78.6,79.36,79.36,79.86,79.86,80.36,80.36,80.61,80.61,80.86,80.86,81.11,81.11,81.36,81.36,81.61,81.61,82.11,82.11,82.61,82.61,83.11,83.11,83.36,83.36,83.61,83.61,83.87,83.87,84.62,84.62,85.62,85.62,86.37,86.37,87.12,87.12,87.87,87.87,88.63,88.63,88.88,88.88,89.13,89.13,89.38,89.38,89.63,89.63,89.88,89.88,90.38,90.38,90.63,90.63,90.88,90.88,91.38,91.38,91.63,91.63,91.88,91.88,92.13,92.13,92.38,92.38,92.63,92.63,93.14,93.14,93.39,93.39,93.64,93.64,93.89,93.89,94.14,94.14,94.64,94.64,94.89,94.89,95.39,95.39,95.89,95.89,96.14,96.14,96.64,96.64,96.89,96.89,97.14,97.14,97.4,97.4,98.15,98.15,98.4,98.4,98.65,98.65,98.9,98.9,99.15,99.15,99.9,99.9,100.15,100.15,100.4,100.4,100.65,100.65,100.9,100.9,101.91,101.91,102.16,102.16,102.41,102.41,102.66,102.66,102.91,102.91,103.16,103.16,103.66,103.66,104.66,104.66,104.91,104.91,105.91,105.91,106.16,106.16,106.42,106.42,107.17,107.17,107.42,107.42,107.92,107.92,109.92,109.92,110.17,110.17,111.68,111.68,112.18,112.18,112.43,112.43,112.68,112.68,113.18,113.18,113.43,113.43,113.68,113.68,113.93,113.93,114.43,114.43,115.69,115.69,115.94,115.94,116.44,116.44,116.69,116.69,117.19,117.19,117.44,117.44,117.94,117.94,118.19,118.19,118.69,118.69,119.19,119.19,119.7,119.7,119.95,119.95,120.2,120.2,121.45,121.45,121.7,121.7,121.95,121.95,122.2,122.2,122.7,122.7,123.2,123.2,123.7,123.7,123.95,123.95,124.46,124.46,124.96,124.96,126.46,126.46,126.96,126.96,127.21,127.21,128.97,128.97,129.22,129.22,130.22,130.22,130.97,130.97,131.47,131.47,131.97,131.97,132.22,132.22,132.72,132.72,133.48,133.48,134.23,134.23,134.98,134.98,135.23,135.23,135.48,135.48,135.73,135.73,136.48,136.48,137.23,137.23,137.99,137.99,138.24,138.24,138.49,138.49,138.74,138.74,138.99,138.99,139.24,139.24,139.74,139.74,139.99,139.99,140.74,140.74,141.49,141.49,141.74,141.74,141.99,141.99,142.75,142.75,143.0,143.0,143.5,143.5,144.0,144.0,144.75,144.75,145.5,145.5,146.5,146.5,146.76,146.76,147.01,147.01,149.51,149.51,150.51,150.51,150.76,150.76,151.01,151.01,151.27,151.27,152.02,152.02,152.52,152.52,153.52,153.52,154.02,154.02,154.27,154.27,154.52,154.52,154.77,154.77,155.02,155.02,155.78,155.78,156.28,156.28,158.78,158.78,159.53,159.53,160.03,160.03,160.54,160.54,160.79,160.79,161.79,161.79,162.54,162.54,164.04,164.04,164.8,164.8,169.05,169.05,169.56,169.56,169.81,169.81,170.06,170.06,170.31,170.31,170.81,170.81,171.31,171.31,171.81,171.81,173.31,173.31,176.32,176.32,177.32,177.32,177.57,177.57,178.33,178.33,178.83,178.83,179.08,179.08,179.58,179.58,180.08,180.08,180.58,180.58,181.58,181.58,181.83,181.83,182.33,182.33,183.34,183.34,183.84,183.84,184.34,184.34,184.59,184.59,186.09,186.09,187.1,187.1,187.85,187.85,188.35,188.35,190.35,190.35,192.11,192.11,194.11,194.11,195.11,195.11,195.86,195.86,196.12,196.12,196.62,196.62,197.37,197.37,197.87,197.87,200.37,200.37,202.13,202.13,202.63,202.63,205.39,205.39,206.64,206.64,209.65,209.65,210.15,210.15,210.65,210.65,211.4,211.4,211.9,211.9,214.91,214.91,215.16,215.16,215.91,215.91,217.66,217.66,220.42,220.42,221.67,221.67,223.18,223.18,223.68,223.68,224.93,224.93,225.18,225.18,225.93,225.93,226.18,226.18,226.43,226.43,227.44,227.44,227.69,227.69,228.44,228.44,230.19,230.19,231.69,231.69,232.45,232.45,233.45,233.45,234.2,234.2,235.2,235.2,236.71,236.71,239.21,239.21,241.47,241.47,241.72,241.72,241.97,241.97,244.97,244.97,245.98,245.98,247.73,247.73,248.23,248.23,249.99,249.99,250.49,250.49,251.24,251.24,251.49,251.49,252.49,252.49,254.24,254.24,255.5,255.5,256.25,256.25,257.75,257.75,261.01,261.01,262.01,262.01,263.77,263.77,265.27,265.27,265.77,265.77,266.77,266.77,267.02,267.02,267.77,267.77,269.28,269.28,271.78,271.78,272.54,272.54,272.79,272.79,273.54,273.54,274.04,274.04,275.54,275.54,277.05,277.05,277.3,277.3,278.8,278.8,279.55,279.55,283.06,283.06,285.06,285.06,296.09,296.09,299.6,299.6,305.11,305.11,305.86,305.86,317.64,317.64,327.91,327.91,334.17,334.17,334.42,334.42,338.68,338.68,339.43,339.43,358.98,358.98,363.24,363.24,371.76,371.76,381.53,381.53,397.06,397.06,398.07,398.07,399.32,399.32,399.82,399.82,405.83,405.83,415.85,415.85,423.12,423.12,427.38,427.38,429.13,429.13,429.38,429.38,435.15,435.15,442.66,442.66,443.42,443.42,445.67,445.67,451.43,451.43,452.44,452.44,458.7,458.7,541.89],"sy":[771.05,770.73,766.61,766.61,765.97,765.97,765.34,765.34,765.02,765.02,764.39,764.39,764.07,764.07,762.16,762.16,761.21,761.21,760.26,760.26,759.31,759.31,758.99,758.99,757.41,757.41,757.09,757.09,756.14,756.14,755.18,755.18,754.87,754.87,754.23,754.23,752.01,752.01,751.69,751.69,751.06,751.06,750.74,750.74,750.43,750.43,749.47,749.47,749.16,749.16,748.2,748.2,747.25,747.25,746.94,746.94,746.3,746.3,745.98,745.98,745.67,745.67,744.4,744.4,743.76,743.76,742.81,742.81,741.86,741.86,741.54,741.54,740.91,740.91,740.59,740.59,740.27,740.27,739.96,739.96,739.64,739.64,739.32,739.32,739.0,739.0,738.69,738.69,738.37,738.37,736.47,736.47,736.15,736.15,735.83,735.83,735.51,735.51,735.2,735.2,734.25,734.25,732.66,732.66,732.34,732.34,731.71,731.71,731.07,731.07,730.76,730.76,730.44,730.44,730.12,730.12,729.49,729.49,729.17,729.17,728.85,728.85,728.22,728.22,727.9,727.9,727.58,727.58,726.63,726.63,726.0,726.0,725.68,725.68,725.04,725.04,724.41,724.41,724.09,724.09,723.78,723.78,723.46,723.46,722.82,722.82,722.51,722.51,722.19,722.19,721.87,721.87,721.24,721.24,720.6,720.6,720.29,720.29,719.97,719.97,719.65,719.65,719.02,719.02,718.38,718.38,717.75,717.75,717.43,717.43,715.84,715.84,714.57,714.57,714.26,714.26,712.35,712.35,710.45,710.45,709.82,709.82,709.5,709.5,709.18,709.18,708.86,708.86,708.55,708.55,707.91,707.91,707.28,707.28,706.96,706.96,705.69,705.69,705.37,705.37,704.42,704.42,703.79,703.79,702.84,702.84,702.52,702.52,702.2,702.2,701.88,701.88,701.57,701.57,701.25,701.25,700.93,700.93,698.39,698.39,696.17,696.17,695.86,695.86,694.9,694.9,694.59,694.59,694.27,694.27,693.32,693.32,693.0,693.0,692.05,692.05,691.73,691.73,691.41,691.41,690.46,690.46,690.15,690.15,689.83,689.83,689.19,689.19,688.88,688.88,688.56,688.56,688.24,688.24,687.29,687.29,686.66,686.66,686.02,686.02,685.7,685.7,684.43,684.43,684.12,684.12,681.26,681.26,679.36,679.36,679.04,679.04,678.72,678.72,678.09,678.09,677.77,677.77,676.82,676.82,676.19,676.19,675.87,675.87,675.55,675.55,675.23,675.23,674.28,674.28,673.96,673.96,673.65,673.65,673.01,673.01,672.7,672.7,672.38,672.38,672.06,672.06,671.43,671.43,670.47,670.47,669.21,669.21,668.89,668.89,668.25,668.25,667.62,667.62,667.3,667.3,666.98,666.98,666.67,666.67,666.35,666.35,665.72,665.72,664.76,664.76,664.45,664.45,663.81,663.81,663.49,663.49,662.86,662.86,662.23,662.23,661.91,661.91,660.96,660.96,660.64,660.64,659.69,659.69,659.37,659.37,659.05,659.05,658.42,658.42,658.1,658.1,657.47,657.47,657.15,657.15,656.2,656.2,655.25,655.25,654.61,654.61,654.29,654.29,653.66,653.66,653.02,653.02,652.71,652.71,652.39,652.39,652.07,652.07,651.76,651.76,651.44,651.44,651.12,651.12,649.85,649.85,649.54,649.54,648.58,648.58,648.27,648.27,647.63,647.63,647.31,647.31,647.0,647.0,646.68,646.68,646.36,646.36,645.73,645.73,644.46,644.46,644.14,644.14,643.82,643.82,642.56,642.56,642.24,642.24,641.92,641.92,641.6,641.6,641.29,641.29,640.65,640.65,640.33,640.33,639.7,639.7,639.07,639.07,638.75,638.75,638.43,638.43,637.8,637.8,637.48,637.48,637.16,637.16,636.21,636.21,635.58,635.58,635.26,635.26,634.94,634.94,634.62,634.62,634.31,634.31,633.99,633.99,633.67,633.67,633.35,633.35,633.04,633.04,632.72,632.72,632.4,632.4,632.09,632.09,631.77,631.77,631.13,631.13,630.82,630.82,630.5,630.5,630.18,630.18,629.86,629.86,629.55,629.55,628.6,628.6,628.28,628.28,627.96,627.96,627.33,627.33,627.01,627.01,626.69,626.69,625.74,625.74,625.42,625.42,625.11,625.11,624.79,624.79,624.15,624.15,623.84,623.84,623.52,623.52,623.2,623.2,622.88,622.88,622.57,622.57,622.25,622.25,621.93,621.93,621.62,621.62,620.98,620.98,620.66,620.66,620.35,620.35,620.03,620.03,619.71,619.71,619.39,619.39,618.76,618.76,618.44,618.44,618.13,618.13,617.81,617.81,616.86,616.86,616.54,616.54,616.22,616.22,615.9,615.9,615.59,615.59,615.27,615.27,614.95,614.95,614.64,614.64,614.32,614.32,613.68,613.68,613.37,613.37,613.05,613.05,612.73,612.73,612.1,612.1,611.78,611.78,611.46,611.46,611.15,611.15,610.51,610.51,610.19,610.19,609.56,609.56,609.24,609.24,608.92,608.92,608.61,608.61,608.29,608.29,607.97,607.97,607.66,607.66,607.34,607.34,607.02,607.02,606.7,606.7,606.39,606.39,606.07,606.07,605.75,605.75,605.43,605.43,605.12,605.12,604.8,604.8,604.48,604.48,604.17,604.17,603.85,603.85,603.53,603.53,603.21,603.21,602.9,602.9,602.58,602.58,602.26,602.26,601.95,601.95,601.63,601.63,601.31,601.31,600.99,600.99,600.68,600.68,600.36,600.36,600.04,600.04,599.72,599.72,599.41,599.41,598.77,598.77,598.46,598.46]},{"panel":2,"label":"gradient boosting (AUC 0.819)","color":"var(--chart-maroon, #b6262c)","x":[0.0,0.0,0.0,0.0537346,0.0537346,0.107469,0.107469,0.161204,0.161204,0.214938,0.214938,0.268673,0.268673,0.322407,0.322407,0.376142,0.376142,0.429876,0.429876,0.483611,0.483611,0.537346,0.537346,0.752284,0.752284,0.806018,0.806018,0.859753,0.859753,0.913487,0.913487,0.967222,0.967222,1.07469,1.07469,1.34336,1.34336,1.3971,1.3971,1.50457,1.50457,1.5583,1.5583,1.66577,1.77324,1.77324,1.88071,1.88071,1.93444,1.93444,1.98818,1.98818,2.04191,2.04191,2.14938,2.14938,2.20312,2.20312,2.25685,2.25685,2.47179,2.47179,2.52552,2.52552,2.57926,2.57926,2.68673,2.68673,2.74046,2.74046,2.84793,2.84793,3.00913,3.00913,3.00913,3.00913,3.1166,3.1166,3.27781,3.27781,3.38528,3.38528,3.43901,3.43901,3.49275,3.49275,3.49275,3.60021,3.60021,3.81515,3.81515,4.03009,4.03009,4.13756,4.13756,4.24503,4.24503,4.29876,4.29876,4.45997,4.45997,4.5137,4.5137,4.62117,4.78238,4.78238,4.83611,4.83611,4.88984,4.88984,4.99731,5.05105,5.05105,5.15852,5.15852,5.21225,5.21225,5.42719,5.42719,5.53466,5.53466,5.58839,5.58839,5.64213,5.64213,5.69586,5.69586,5.7496,5.7496,5.85707,5.85707,5.9108,5.9108,5.96454,5.96454,6.072,6.072,6.23321,6.23321,6.34068,6.50188,6.50188,6.71682,6.71682,6.77055,6.77055,6.77055,6.77055,6.82429,6.82429,6.82429,6.87802,6.87802,6.98549,7.03923,7.03923,7.09296,7.09296,7.20043,7.20043,7.25416,7.25416,7.3079,7.3079,7.36163,7.36163,7.36163,7.41537,7.41537,7.52284,7.52284,7.52284,7.52284,7.57657,7.57657,7.63031,7.63031,7.68404,7.68404,7.73778,7.73778,7.79151,7.79151,7.95271,7.95271,8.00645,8.00645,8.16765,8.16765,8.27512,8.27512,8.59753,8.59753,8.705,8.705,8.75873,8.75873,8.81247,8.91994,8.97367,8.97367,9.18861,9.18861,9.34981,9.34981,9.40355,9.40355,9.51102,9.51102,9.61848,9.61848,9.67222,9.67222,9.72595,9.72595,9.94089,9.94089,10.1558,10.1558,10.2096,10.2096,10.317,10.317,10.3708,10.3708,10.4245,10.4245,10.5857,10.5857,10.8544,10.8544,11.1231,11.1231,11.3917,11.3917,11.4992,11.4992,11.5529,11.5529,11.6067,11.6067,11.8216,11.8216,11.8753,11.8753,11.9291,11.9291,11.9291,12.0365,12.0365,12.0903,12.0903,12.1977,12.1977,12.3052,12.3052,12.4664,12.4664,12.5202,12.5202,12.6276,12.6276,12.7888,12.7888,12.8426,12.8426,12.8963,12.8963,13.2187,13.2187,13.3262,13.3799,13.3799,13.4874,13.4874,13.5948,13.5948,13.8635,13.8635,13.971,13.971,14.0247,14.0247,14.1322,14.1322,14.1859,14.1859,14.2397,14.2397,14.2934,14.2934,14.4009,14.4009,14.6158,14.6158,14.6695,14.6695,14.8307,14.8307,15.0457,15.0457,15.1531,15.1531,15.2069,15.2069,15.3143,15.3143,15.4218,15.4218,15.6905,15.6905,15.7442,15.7442,15.9054,15.9592,16.0666,16.0666,16.1204,16.1204,16.1741,16.1741,16.389,16.4965,16.7114,16.7114,16.7652,16.7652,16.8189,16.8189,16.8726,16.9801,16.9801,17.0876,17.0876,17.1413,17.1413,17.1951,17.1951,17.41,17.6249,17.6787,17.7861,17.7861,17.9473,17.9473,18.1085,18.1085,18.216,18.216,18.3235,18.3235,18.3772,18.3772,18.6459,18.6459,18.8071,18.8071,18.8071,18.9683,18.9683,19.1832,19.1832,19.3982,19.5056,19.5594,19.5594,19.6668,19.6668,19.7206,19.7206,20.1505,20.1505,20.2042,20.2042,20.2579,20.2579,20.3654,20.3654,20.4729,20.5803,20.5803,20.7953,20.849,20.849,20.9565,20.9565,21.0102,21.0102,21.2251,21.3326,21.3326,21.4401,21.4401,21.655,21.655,21.7088,21.7088,21.8162,21.9774,21.9774,22.0312,22.0312,22.0849,22.0849,22.3536,22.3536,22.4073,22.5148,22.5148,22.5685,22.5685,22.6222,22.6222,22.676,22.676,22.8909,22.8909,22.9984,23.2671,23.2671,23.3208,23.3208,23.482,23.6432,23.6432,23.6969,23.6969,23.8581,23.8581,23.9119,23.9119,23.9656,24.0193,24.1805,24.1805,24.1805,24.288,24.288,24.3418,24.3418,24.4492,24.5567,24.5567,24.6642,24.8254,24.9866,24.9866,25.0403,25.0403,25.0403,25.0403,25.094,25.094,25.2552,25.3627,25.3627,25.4702,25.5239,25.5239,25.5776,25.5776,25.8463,25.8463,26.0075,26.0075,26.0613,26.0613,26.1687,26.1687,26.2225,26.2225,26.2762,26.2762,26.4911,26.4911,26.5449,26.5449,26.6523,26.6523,26.8135,26.8135,26.921,26.921,27.2972,27.2972,27.3509,27.3509,27.4584,27.5658,27.5658,27.6196,27.727,27.8882,27.9957,27.9957,28.1032,28.1032,28.2644,28.3718,28.6405,28.6405,28.6943,28.6943,28.8555,28.8555,28.9092,28.9092,29.0167,29.0167,29.2853,29.3928,29.4465,29.554,29.6615,29.6615,29.7689,29.7689,30.0376,30.1451,30.1451,30.2526,30.2526,30.36,30.36,30.575,30.575,30.6824,30.7362,30.7362,31.1123,31.1123,31.2198,31.3272,31.381,31.381,31.4884,31.8109,31.9721,32.0795,32.0795,32.1333,32.1333,32.4557,32.4557,32.6169,32.6169,33.1005,33.1005,33.1542,33.2617,33.5304,33.5304,33.8528,33.8528,33.9065,33.9602,34.0677,34.0677,34.2289,34.2289,34.2826,34.2826,34.3364,34.3364,34.3901,34.4976,34.6588,34.6588,34.7125,34.7125,35.1424,35.1424,35.6797,35.6797,35.7335,35.8409,35.8409,36.0559,36.0559,36.1096,36.2171,36.2171,36.5395,36.5395,36.7007,36.7007,37.0768,37.0768,37.1843,37.1843,37.1843,37.3992,37.3992,37.6142,37.9903,38.0441,38.1515,38.4739,38.5814,38.6889,38.6889,38.7426,38.7426,39.1188,39.1188,39.2262,39.3337,39.3337,39.4949,39.4949,39.6561,39.6561,39.7636,39.7636,39.8173,39.9785,40.0322,40.0322,40.086,40.086,40.3009,40.3009,40.4621,40.4621,40.6233,40.7308,40.892,40.9995,41.0532,41.1607,41.698,41.8592,41.9667,41.9667,42.0742,42.1816,42.4503,42.4503,42.4503,42.6115,42.6115,42.6652,42.6652,42.8264,42.9339,42.9876,42.9876,43.2026,43.2026,43.6325,43.6325,44.1698,44.2773,44.5459,44.5459,44.6534,44.6534,44.8684,44.9758,44.9758,45.0833,45.1908,45.6206,45.7281,45.7818,45.8893,46.6416,46.6416,47.0715,47.1789,47.2327,47.2327,47.6088,47.8238,48.3074,48.4148,48.5223,48.6298,48.6298,48.791,49.0059,49.5433,49.7045,50.2955,50.4567,50.7792,50.8866,50.9404,51.1553,51.424,51.6389,51.7464,51.7464,51.8538,52.0688,52.23,52.3912,52.3912,54.1644,54.1644,55.1316,55.2391,55.5078,55.6153,56.6362,56.7974,56.9586,57.0661,57.1736,57.3348,57.4422,57.4422,57.6034,57.7109,58.0333,58.1408,58.1408,58.5169,58.6781,59.0005,59.108,59.4304,59.5379,59.5916,59.6991,59.8066,60.0215,60.1827,60.2902,60.5588,60.5588,60.6126,60.72,61.4723,61.4723,61.5798,62.0097,62.0634,62.1709,62.1709,62.8157,62.9232,62.9769,63.0844,63.4068,63.5142,63.8366,63.9979,64.1053,64.1591,64.2128,64.4815,64.5889,64.7501,64.9651,65.0725,65.18,65.2337,65.3412,65.7174,65.8248,66.0398,66.0398,66.5771,66.5771,67.0607,67.1682,67.5443,67.6518,67.9742,68.2429,68.619,68.7802,68.9414,69.0489,69.2638,69.2638,69.7474,69.8012,70.2311,70.3923,70.6072,70.6072,71.5207,71.6282,72.058,72.1655,72.3267,72.5416,72.5416,72.8641,73.1865,73.2402,73.3477,73.5626,73.5626,73.6701,73.7775,73.9387,74.0462,74.2074,74.3686,74.4761,74.7448,74.8522,74.906,74.906,75.1209,75.3358,75.5508,75.6582,75.9269,76.1956,77.0016,77.3778,77.4852,78.0226,78.13,78.4524,78.5599,78.9361,79.4197,79.5809,79.9033,80.0107,80.2257,80.2794,80.3869,80.3869,80.6018,80.7093,80.978,81.0854,81.1929,81.3004,81.3541,81.4616,81.5153,81.8915,82.0527,82.9124,83.0199,83.0736,83.1811,83.7722,84.0946,84.8469,84.9543,85.0081,85.223,85.8141,85.9753,86.029,86.1365,86.3514,86.5126,86.6201,87.05,87.1574,87.2112,87.3186,87.3724,87.4798,87.7485,87.856,88.1784,88.2859,88.662,88.7695,88.8769,88.9844,89.5755,89.7367,89.9516,90.2203,90.3278,90.3815,90.489,90.5427,90.7577,90.9189,91.3487,91.5099,91.8323,92.0473,92.1548,92.2085,92.316,92.4234,92.5846,92.6921,92.7996,93.0145,93.3369,93.6593,94.1429,94.2504,94.4653,94.5728,94.8952,95.2176,95.3251,95.3788,95.4863,95.7012,95.8624,96.2386,96.3998,96.561,96.7222,96.9371,97.0446,97.4745,97.5819,97.7431,97.9581,98.0118,98.173,98.388,98.5492,98.6566,98.8716,98.979,99.194,99.3015,99.5164,99.5701,99.8925,100.0],"y":[0.0,0.183824,1.28676,1.28676,1.65441,1.65441,2.02206,2.02206,2.38971,2.38971,2.94118,2.94118,3.125,3.125,3.30882,3.30882,4.04412,4.04412,5.69853,5.69853,6.25,6.25,7.35294,7.35294,7.72059,7.72059,7.90441,7.90441,8.45588,8.45588,8.63971,8.63971,8.82353,8.82353,9.00735,9.00735,9.55882,9.55882,9.74265,9.74265,10.6618,10.6618,10.8456,10.8456,10.8456,11.2132,11.2132,11.5809,11.5809,11.9485,11.9485,12.1324,12.1324,12.3162,12.3162,12.6838,12.6838,13.0515,13.0515,13.2353,13.2353,13.7868,13.7868,14.1544,14.1544,15.2574,15.2574,15.9926,15.9926,17.0956,17.0956,17.2794,17.2794,18.3824,18.75,19.8529,19.8529,20.0368,20.0368,20.2206,20.2206,20.5882,20.5882,20.9559,20.9559,21.3235,21.5074,21.5074,21.6912,21.6912,21.875,21.875,22.0588,22.0588,22.2426,22.2426,22.6103,22.6103,22.9779,22.9779,23.3456,23.3456,23.5294,23.5294,23.5294,24.0809,24.0809,24.2647,24.2647,24.6324,24.6324,24.6324,25.0,25.0,25.1838,25.1838,25.5515,25.5515,25.7353,25.7353,25.9191,25.9191,26.2868,26.2868,26.6544,26.6544,27.0221,27.0221,27.7574,27.7574,28.125,28.125,28.4926,28.4926,28.6765,28.6765,29.4118,29.4118,29.5956,29.5956,29.5956,29.9632,29.9632,30.5147,30.5147,30.6985,31.0662,31.25,31.25,31.6176,31.9853,31.9853,32.1691,32.1691,32.1691,32.7206,32.7206,32.9044,32.9044,33.2721,33.2721,33.6397,33.6397,34.1912,34.1912,35.1103,35.2941,35.2941,35.6618,35.6618,35.8456,36.2132,36.9485,36.9485,37.1324,37.1324,37.3162,37.3162,37.5,37.5,38.2353,38.2353,38.4191,38.4191,38.9706,38.9706,39.1544,39.1544,39.3382,39.3382,39.5221,39.5221,39.7059,39.7059,39.8897,39.8897,40.2574,40.2574,40.2574,40.2574,40.4412,40.4412,41.1765,41.1765,41.3603,41.3603,41.5441,41.5441,41.7279,41.7279,42.0956,42.0956,42.2794,42.2794,42.4632,42.4632,42.6471,42.6471,42.8309,42.8309,43.1985,43.1985,43.3824,43.3824,43.75,43.75,44.1176,44.1176,44.3015,44.3015,44.8529,44.8529,45.2206,45.2206,45.5882,45.5882,45.7721,45.7721,46.3235,46.3235,46.5074,46.5074,46.6912,46.6912,47.2426,47.2426,47.6103,47.9779,47.9779,48.3456,48.3456,49.0809,49.0809,49.2647,49.2647,49.8162,49.8162,50.1838,50.1838,50.3676,50.3676,50.9191,50.9191,51.1029,51.1029,51.2868,51.2868,51.4706,51.4706,51.6544,51.6544,51.8382,52.0221,52.0221,52.3897,52.3897,52.5735,52.5735,52.7574,52.7574,52.9412,52.9412,53.3088,53.3088,53.4926,53.4926,53.6765,53.6765,53.8603,53.8603,54.0441,54.0441,54.4118,54.4118,54.7794,54.7794,54.9632,54.9632,55.3309,55.3309,55.8824,55.8824,56.0662,56.0662,56.25,56.25,56.4338,56.4338,56.6176,56.6176,56.9853,56.9853,57.1691,57.1691,57.5368,57.5368,57.7206,57.7206,57.9044,57.9044,58.0882,58.0882,58.0882,58.0882,58.6397,58.6397,59.0074,59.0074,59.1912,59.1912,59.1912,59.7426,59.7426,59.9265,59.9265,60.1103,60.1103,60.2941,60.2941,60.2941,60.6618,60.6618,60.8456,60.8456,61.0294,61.0294,61.2132,61.2132,61.3971,61.3971,61.5809,61.5809,61.7647,61.7647,62.1324,62.1324,62.3162,62.6838,62.6838,62.8676,62.8676,63.0515,63.0515,63.0515,63.0515,63.2353,63.2353,63.4191,63.4191,63.6029,63.6029,63.7868,63.7868,63.9706,63.9706,64.1544,64.1544,64.3382,64.3382,64.3382,64.7059,64.7059,64.7059,64.8897,64.8897,65.0735,65.0735,65.2574,65.2574,65.2574,65.4412,65.4412,65.625,65.625,65.8088,65.8088,65.9926,65.9926,65.9926,66.1765,66.1765,66.3603,66.3603,66.5441,66.5441,66.7279,66.7279,66.7279,66.9118,66.9118,67.0956,67.0956,67.2794,67.2794,67.4632,67.4632,67.6471,67.6471,67.6471,68.0147,68.0147,68.1985,68.1985,68.1985,68.3824,68.3824,68.75,68.75,68.9338,68.9338,69.1176,69.1176,69.3015,69.4853,69.8529,70.2206,70.2206,70.4044,70.4044,70.7721,70.7721,70.9559,71.1397,71.1397,71.1397,71.1397,71.3235,71.3235,71.5074,71.875,72.0588,72.0588,72.2426,72.2426,72.2426,72.6103,72.6103,72.6103,72.7941,72.7941,73.1618,73.1618,73.3456,73.3456,73.5294,73.5294,73.7132,73.7132,74.0809,74.0809,74.4485,74.4485,74.6324,74.6324,74.8162,74.8162,75.0,75.0,75.3676,75.3676,75.5515,75.5515,75.7353,75.7353,76.1029,76.1029,76.2868,76.2868,76.2868,76.4706,76.4706,76.4706,76.4706,76.4706,76.6544,76.6544,77.0221,77.0221,77.0221,77.0221,77.2059,77.2059,77.5735,77.5735,77.7574,77.7574,78.125,78.125,78.4926,78.4926,78.4926,78.4926,78.4926,78.4926,78.8603,78.8603,79.4118,79.4118,79.4118,79.5956,79.5956,79.7794,79.7794,79.9632,79.9632,80.1471,80.1471,80.1471,80.5147,80.5147,80.6985,80.6985,80.6985,80.6985,81.0662,81.0662,81.0662,81.0662,81.0662,81.25,81.25,81.6176,81.6176,81.8015,81.8015,81.9853,81.9853,82.1691,82.1691,82.1691,82.1691,82.3529,82.3529,82.5368,82.5368,82.7206,82.7206,83.0882,83.0882,83.8235,83.8235,84.0074,84.0074,84.375,84.375,84.375,84.375,84.7426,84.7426,85.1103,85.1103,85.2941,85.2941,85.4779,85.4779,85.4779,85.6618,85.6618,85.8456,85.8456,85.8456,86.0294,86.0294,86.2132,86.2132,86.3971,86.3971,86.9485,86.9485,87.3162,87.5,87.5,88.0515,88.0515,88.0515,88.0515,88.0515,88.0515,88.0515,88.0515,88.2353,88.2353,88.4191,88.4191,88.6029,88.6029,88.6029,88.7868,88.7868,88.9706,88.9706,89.1544,89.1544,89.3382,89.3382,89.3382,89.3382,89.7059,89.8897,90.0735,90.0735,90.2574,90.2574,90.625,90.625,90.625,90.625,90.625,90.625,90.625,90.625,90.625,90.625,90.8088,90.8088,90.8088,90.8088,91.3603,91.5441,91.5441,91.9118,91.9118,92.0956,92.0956,92.0956,92.0956,92.2794,92.2794,92.6471,92.6471,92.8309,92.8309,92.8309,92.8309,93.1985,93.1985,93.3824,93.3824,93.3824,93.5662,93.5662,93.75,93.75,93.75,93.75,93.75,93.75,94.3015,94.3015,94.3015,94.3015,94.4853,94.4853,94.4853,94.4853,94.4853,94.4853,94.4853,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.6691,94.8529,95.0368,95.0368,95.0368,95.0368,95.0368,95.2206,95.2206,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.4044,95.5882,95.5882,95.5882,95.5882,95.5882,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.7721,95.9559,95.9559,95.9559,95.9559,96.1397,96.1397,96.1397,96.3235,96.3235,96.5074,96.5074,96.5074,96.5074,96.5074,96.5074,96.5074,96.5074,96.5074,96.5074,96.5074,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.6912,96.875,96.875,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.0588,97.2426,97.2426,97.4265,97.4265,97.4265,97.4265,97.6103,97.6103,97.6103,97.6103,97.6103,97.6103,97.6103,97.9779,97.9779,98.5294,98.5294,98.5294,98.5294,98.7132,98.7132,98.7132,98.7132,98.7132,98.7132,98.7132,98.7132,98.7132,98.7132,98.7132,98.8971,98.8971,98.8971,98.8971,99.0809,99.0809,99.0809,99.0809,99.0809,99.0809,99.0809,99.0809,99.0809,99.0809,99.2647,99.2647,99.2647,99.2647,99.2647,99.2647,99.4485,99.4485,99.6324,99.6324,99.6324,99.6324,99.6324,99.6324,99.6324,99.6324,99.6324,99.6324,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0],"sx":[75.6,75.6,75.6,75.85,75.85,76.1,76.1,76.35,76.35,76.6,76.6,76.85,76.85,77.1,77.1,77.35,77.35,77.6,77.6,77.85,77.85,78.1,78.1,79.1,79.1,79.36,79.36,79.61,79.61,79.86,79.86,80.11,80.11,80.61,80.61,81.86,81.86,82.11,82.11,82.61,82.61,82.86,82.86,83.36,83.87,83.87,84.37,84.37,84.62,84.62,84.87,84.87,85.12,85.12,85.62,85.62,85.87,85.87,86.12,86.12,87.12,87.12,87.37,87.37,87.62,87.62,88.12,88.12,88.38,88.38,88.88,88.88,89.63,89.63,89.63,89.63,90.13,90.13,90.88,90.88,91.38,91.38,91.63,91.63,91.88,91.88,91.88,92.38,92.38,93.39,93.39,94.39,94.39,94.89,94.89,95.39,95.39,95.64,95.64,96.39,96.39,96.64,96.64,97.14,97.9,97.9,98.15,98.15,98.4,98.4,98.9,99.15,99.15,99.65,99.65,99.9,99.9,100.9,100.9,101.4,101.4,101.65,101.65,101.91,101.91,102.16,102.16,102.41,102.41,102.91,102.91,103.16,103.16,103.41,103.41,103.91,103.91,104.66,104.66,105.16,105.91,105.91,106.92,106.92,107.17,107.17,107.17,107.17,107.42,107.42,107.42,107.67,107.67,108.17,108.42,108.42,108.67,108.67,109.17,109.17,109.42,109.42,109.67,109.67,109.92,109.92,109.92,110.17,110.17,110.67,110.67,110.67,110.67,110.93,110.93,111.18,111.18,111.43,111.43,111.68,111.68,111.93,111.93,112.68,112.68,112.93,112.93,113.68,113.68,114.18,114.18,115.69,115.69,116.19,116.19,116.44,116.44,116.69,117.19,117.44,117.44,118.44,118.44,119.19,119.19,119.44,119.44,119.95,119.95,120.45,120.45,120.7,120.7,120.95,120.95,121.95,121.95,122.95,122.95,123.2,123.2,123.7,123.7,123.95,123.95,124.21,124.21,124.96,124.96,126.21,126.21,127.46,127.46,128.72,128.72,129.22,129.22,129.47,129.47,129.72,129.72,130.72,130.72,130.97,130.97,131.22,131.22,131.22,131.72,131.72,131.97,131.97,132.47,132.47,132.97,132.97,133.73,133.73,133.98,133.98,134.48,134.48,135.23,135.23,135.48,135.48,135.73,135.73,137.23,137.23,137.74,137.99,137.99,138.49,138.49,138.99,138.99,140.24,140.24,140.74,140.74,140.99,140.99,141.49,141.49,141.74,141.74,141.99,141.99,142.25,142.25,142.75,142.75,143.75,143.75,144.0,144.0,144.75,144.75,145.75,145.75,146.25,146.25,146.5,146.5,147.01,147.01,147.51,147.51,148.76,148.76,149.01,149.01,149.76,150.01,150.51,150.51,150.76,150.76,151.01,151.01,152.02,152.52,153.52,153.52,153.77,153.77,154.02,154.02,154.27,154.77,154.77,155.27,155.27,155.52,155.52,155.78,155.78,156.78,157.78,158.03,158.53,158.53,159.28,159.28,160.03,160.03,160.54,160.54,161.04,161.04,161.29,161.29,162.54,162.54,163.29,163.29,163.29,164.04,164.04,165.05,165.05,166.05,166.55,166.8,166.8,167.3,167.3,167.55,167.55,169.56,169.56,169.81,169.81,170.06,170.06,170.56,170.56,171.06,171.56,171.56,172.56,172.81,172.81,173.31,173.31,173.57,173.57,174.57,175.07,175.07,175.57,175.57,176.57,176.57,176.82,176.82,177.32,178.08,178.08,178.33,178.33,178.58,178.58,179.83,179.83,180.08,180.58,180.58,180.83,180.83,181.08,181.08,181.33,181.33,182.33,182.33,182.84,184.09,184.09,184.34,184.34,185.09,185.84,185.84,186.09,186.09,186.84,186.84,187.1,187.1,187.35,187.6,188.35,188.35,188.35,188.85,188.85,189.1,189.1,189.6,190.1,190.1,190.6,191.35,192.11,192.11,192.36,192.36,192.36,192.36,192.61,192.61,193.36,193.86,193.86,194.36,194.61,194.61,194.86,194.86,196.12,196.12,196.87,196.87,197.12,197.12,197.62,197.62,197.87,197.87,198.12,198.12,199.12,199.12,199.37,199.37,199.87,199.87,200.63,200.63,201.13,201.13,202.88,202.88,203.13,203.13,203.63,204.13,204.13,204.38,204.88,205.64,206.14,206.14,206.64,206.64,207.39,207.89,209.14,209.14,209.39,209.39,210.15,210.15,210.4,210.4,210.9,210.9,212.15,212.65,212.9,213.4,213.9,213.9,214.41,214.41,215.66,216.16,216.16,216.66,216.66,217.16,217.16,218.16,218.16,218.67,218.92,218.92,220.67,220.67,221.17,221.67,221.92,221.92,222.42,223.93,224.68,225.18,225.18,225.43,225.43,226.93,226.93,227.69,227.69,229.94,229.94,230.19,230.69,231.95,231.95,233.45,233.45,233.7,233.95,234.45,234.45,235.2,235.2,235.45,235.45,235.7,235.7,235.95,236.46,237.21,237.21,237.46,237.46,239.46,239.46,241.97,241.97,242.22,242.72,242.72,243.72,243.72,243.97,244.47,244.47,245.98,245.98,246.73,246.73,248.48,248.48,248.98,248.98,248.98,249.99,249.99,250.99,252.74,252.99,253.49,255.0,255.5,256.0,256.0,256.25,256.25,258.0,258.0,258.5,259.01,259.01,259.76,259.76,260.51,260.51,261.01,261.01,261.26,262.01,262.26,262.26,262.51,262.51,263.52,263.52,264.27,264.27,265.02,265.52,266.27,266.77,267.02,267.52,270.03,270.78,271.28,271.28,271.78,272.28,273.54,273.54,273.54,274.29,274.29,274.54,274.54,275.29,275.79,276.04,276.04,277.05,277.05,279.05,279.05,281.56,282.06,283.31,283.31,283.81,283.81,284.81,285.31,285.31,285.82,286.32,288.32,288.82,289.07,289.57,293.08,293.08,295.09,295.59,295.84,295.84,297.59,298.59,300.85,301.35,301.85,302.35,302.35,303.1,304.11,306.61,307.36,310.12,310.87,312.37,312.88,313.13,314.13,315.38,316.38,316.88,316.88,317.39,318.39,319.14,319.89,319.89,328.16,328.16,332.67,333.17,334.42,334.92,339.69,340.44,341.19,341.69,342.19,342.94,343.44,343.44,344.2,344.7,346.2,346.7,346.7,348.45,349.21,350.71,351.21,352.71,353.22,353.47,353.97,354.47,355.47,356.22,356.72,357.98,357.98,358.23,358.73,362.24,362.24,362.74,364.74,364.99,365.49,365.49,368.5,369.0,369.25,369.75,371.26,371.76,373.26,374.01,374.51,374.76,375.01,376.27,376.77,377.52,378.52,379.02,379.52,379.77,380.28,382.03,382.53,383.53,383.53,386.04,386.04,388.29,388.79,390.55,391.05,392.55,393.81,395.56,396.31,397.06,397.56,398.57,398.57,400.82,401.07,403.08,403.83,404.83,404.83,409.09,409.59,411.6,412.1,412.85,413.85,413.85,415.35,416.86,417.11,417.61,418.61,418.61,419.11,419.61,420.36,420.87,421.62,422.37,422.87,424.12,424.62,424.87,424.87,425.88,426.88,427.88,428.38,429.64,430.89,434.65,436.4,436.9,439.41,439.91,441.41,441.91,443.67,445.92,446.67,448.18,448.68,449.68,449.93,450.43,450.43,451.43,451.94,453.19,453.69,454.19,454.69,454.94,455.44,455.69,457.45,458.2,462.21,462.71,462.96,463.46,466.22,467.72,471.23,471.73,471.98,472.98,475.74,476.49,476.74,477.24,478.24,479.0,479.5,481.5,482.0,482.25,482.75,483.0,483.51,484.76,485.26,486.76,487.26,489.02,489.52,490.02,490.52,493.28,494.03,495.03,496.28,496.79,497.04,497.54,497.79,498.79,499.54,501.55,502.3,503.8,504.8,505.3,505.55,506.06,506.56,507.31,507.81,508.31,509.31,510.82,512.32,514.57,515.08,516.08,516.58,518.08,519.59,520.09,520.34,520.84,521.84,522.59,524.35,525.1,525.85,526.6,527.6,528.1,530.11,530.61,531.36,532.36,532.61,533.37,534.37,535.12,535.62,536.62,537.12,538.13,538.63,539.63,539.88,541.38,541.89],"sy":[771.05,770.73,768.83,768.83,768.19,768.19,767.56,767.56,766.92,766.92,765.97,765.97,765.65,765.65,765.34,765.34,764.07,764.07,761.21,761.21,760.26,760.26,758.36,758.36,757.72,757.72,757.41,757.41,756.45,756.45,756.14,756.14,755.82,755.82,755.5,755.5,754.55,754.55,754.23,754.23,752.65,752.65,752.33,752.33,752.33,751.69,751.69,751.06,751.06,750.43,750.43,750.11,750.11,749.79,749.79,749.16,749.16,748.52,748.52,748.2,748.2,747.25,747.25,746.62,746.62,744.71,744.71,743.45,743.45,741.54,741.54,741.22,741.22,739.32,738.69,736.78,736.78,736.47,736.47,736.15,736.15,735.51,735.51,734.88,734.88,734.25,733.93,733.93,733.61,733.61,733.29,733.29,732.98,732.98,732.66,732.66,732.02,732.02,731.39,731.39,730.76,730.76,730.44,730.44,730.44,729.49,729.49,729.17,729.17,728.53,728.53,728.53,727.9,727.9,727.58,727.58,726.95,726.95,726.63,726.63,726.31,726.31,725.68,725.68,725.04,725.04,724.41,724.41,723.14,723.14,722.51,722.51,721.87,721.87,721.55,721.55,720.29,720.29,719.97,719.97,719.97,719.33,719.33,718.38,718.38,718.06,717.43,717.11,717.11,716.48,715.84,715.84,715.53,715.53,715.53,714.57,714.57,714.26,714.26,713.62,713.62,712.99,712.99,712.04,712.04,710.45,710.13,710.13,709.5,709.5,709.18,708.55,707.28,707.28,706.96,706.96,706.64,706.64,706.33,706.33,705.06,705.06,704.74,704.74,703.79,703.79,703.47,703.47,703.15,703.15,702.84,702.84,702.52,702.52,702.2,702.2,701.57,701.57,701.57,701.57,701.25,701.25,699.98,699.98,699.66,699.66,699.35,699.35,699.03,699.03,698.39,698.39,698.08,698.08,697.76,697.76,697.44,697.44,697.12,697.12,696.49,696.49,696.17,696.17,695.54,695.54,694.9,694.9,694.59,694.59,693.64,693.64,693.0,693.0,692.37,692.37,692.05,692.05,691.1,691.1,690.78,690.78,690.46,690.46,689.51,689.51,688.88,688.24,688.24,687.61,687.61,686.34,686.34,686.02,686.02,685.07,685.07,684.43,684.43,684.12,684.12,683.17,683.17,682.85,682.85,682.53,682.53,682.21,682.21,681.9,681.9,681.58,681.26,681.26,680.63,680.63,680.31,680.31,679.99,679.99,679.68,679.68,679.04,679.04,678.72,678.72,678.41,678.41,678.09,678.09,677.77,677.77,677.14,677.14,676.5,676.5,676.19,676.19,675.55,675.55,674.6,674.6,674.28,674.28,673.96,673.96,673.65,673.65,673.33,673.33,672.7,672.7,672.38,672.38,671.74,671.74,671.43,671.43,671.11,671.11,670.79,670.79,670.79,670.79,669.84,669.84,669.21,669.21,668.89,668.89,668.89,667.94,667.94,667.62,667.62,667.3,667.3,666.98,666.98,666.98,666.35,666.35,666.03,666.03,665.72,665.72,665.4,665.4,665.08,665.08,664.76,664.76,664.45,664.45,663.81,663.81,663.49,662.86,662.86,662.54,662.54,662.23,662.23,662.23,662.23,661.91,661.91,661.59,661.59,661.27,661.27,660.96,660.96,660.64,660.64,660.32,660.32,660.0,660.0,660.0,659.37,659.37,659.37,659.05,659.05,658.74,658.74,658.42,658.42,658.42,658.1,658.1,657.78,657.78,657.47,657.47,657.15,657.15,657.15,656.83,656.83,656.51,656.51,656.2,656.2,655.88,655.88,655.88,655.56,655.56,655.25,655.25,654.93,654.93,654.61,654.61,654.29,654.29,654.29,653.66,653.66,653.34,653.34,653.34,653.02,653.02,652.39,652.39,652.07,652.07,651.76,651.76,651.44,651.12,650.49,649.85,649.85,649.54,649.54,648.9,648.9,648.58,648.27,648.27,648.27,648.27,647.95,647.95,647.63,647.0,646.68,646.68,646.36,646.36,646.36,645.73,645.73,645.73,645.41,645.41,644.78,644.78,644.46,644.46,644.14,644.14,643.82,643.82,643.19,643.19,642.56,642.56,642.24,642.24,641.92,641.92,641.6,641.6,640.97,640.97,640.65,640.65,640.33,640.33,639.7,639.7,639.38,639.38,639.38,639.07,639.07,639.07,639.07,639.07,638.75,638.75,638.11,638.11,638.11,638.11,637.8,637.8,637.16,637.16,636.84,636.84,636.21,636.21,635.58,635.58,635.58,635.58,635.58,635.58,634.94,634.94,633.99,633.99,633.99,633.67,633.67,633.35,633.35,633.04,633.04,632.72,632.72,632.72,632.09,632.09,631.77,631.77,631.77,631.77,631.13,631.13,631.13,631.13,631.13,630.82,630.82,630.18,630.18,629.86,629.86,629.55,629.55,629.23,629.23,629.23,629.23,628.91,628.91,628.6,628.6,628.28,628.28,627.64,627.64,626.37,626.37,626.06,626.06,625.42,625.42,625.42,625.42,624.79,624.79,624.15,624.15,623.84,623.84,623.52,623.52,623.52,623.2,623.2,622.88,622.88,622.88,622.57,622.57,622.25,622.25,621.93,621.93,620.98,620.98,620.35,620.03,620.03,619.08,619.08,619.08,619.08,619.08,619.08,619.08,619.08,618.76,618.76,618.44,618.44,618.13,618.13,618.13,617.81,617.81,617.49,617.49,617.17,617.17,616.86,616.86,616.86,616.86,616.22,615.9,615.59,615.59,615.27,615.27,614.64,614.64,614.64,614.64,614.64,614.64,614.64,614.64,614.64,614.64,614.32,614.32,614.32,614.32,613.37,613.05,613.05,612.41,612.41,612.1,612.1,612.1,612.1,611.78,611.78,611.15,611.15,610.83,610.83,610.83,610.83,610.19,610.19,609.88,609.88,609.88,609.56,609.56,609.24,609.24,609.24,609.24,609.24,609.24,608.29,608.29,608.29,608.29,607.97,607.97,607.97,607.97,607.97,607.97,607.97,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.66,607.34,607.02,607.02,607.02,607.02,607.02,606.7,606.7,606.39,606.39,606.39,606.39,606.39,606.39,606.39,606.39,606.39,606.39,606.39,606.39,606.07,606.07,606.07,606.07,606.07,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.75,605.43,605.43,605.43,605.43,605.12,605.12,605.12,604.8,604.8,604.48,604.48,604.48,604.48,604.48,604.48,604.48,604.48,604.48,604.48,604.48,604.17,604.17,604.17,604.17,604.17,604.17,604.17,604.17,604.17,604.17,604.17,604.17,603.85,603.85,603.53,603.53,603.53,603.53,603.53,603.53,603.53,603.53,603.53,603.53,603.53,603.53,603.21,603.21,602.9,602.9,602.9,602.9,602.58,602.58,602.58,602.58,602.58,602.58,602.58,601.95,601.95,600.99,600.99,600.99,600.99,600.68,600.68,600.68,600.68,600.68,600.68,600.68,600.68,600.68,600.68,600.68,600.36,600.36,600.36,600.36,600.04,600.04,600.04,600.04,600.04,600.04,600.04,600.04,600.04,600.04,599.72,599.72,599.72,599.72,599.72,599.72,599.41,599.41,599.09,599.09,599.09,599.09,599.09,599.09,599.09,599.09,599.09,599.09,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46,598.46]}]} 2026-10-15T18:29:28.185152 image/svg+xml Matplotlib v3.11.2, https://matplotlib.org/ 1 2 3 4 5 Validation fold (1 to 5) 0.4 0.5 0.6 0.7 0.8 0.9 AUC on the validation fold (0.5 = coin flip) 1. Cross-validated AUC on 2019-2021, shuffled folds vs time-ordered folds KFold, shuffled (future rows leak into training) TimeSeriesSplit (train on the past, validate on what follows) the real test, 2022-2023 1 0 − 2 1 0 − 1 Learning rate (log scale) 0.73 0.74 0.75 0.76 0.77 0.78 0.79 Mean validation AUC over 5 time-ordered folds 2. Grid search: validation AUC for each learning rate and tree depth trees of depth 2 trees of depth 3 trees of depth 5 0 20 40 60 80 100 Calm months wrongly flagged as stress (% of calm months) 0 20 40 60 80 100 Stress months caught (% of stress months) 3. ROC curves on the 2022-2023 test months logistic regression (AUC 0.831) random forest (AUC 0.824) gradient boosting (AUC 0.819)

Cross-validation: do not shuffle time

Cross-validation is how a score is estimated without touching the test set: split the training rows into folds, fit on all but one, score on the held-out one, repeat. The default splitter, KFold with shuffling, assigns rows to folds at random. On a time series that is a leak. Rows from the same week share almost everything (the same market, nearly the same 20-day volatility), so a model validated on a random Tuesday has trained on the Monday and Wednesday around it. The honest splitter is TimeSeriesSplit: every fold trains on the past and validates on the block that follows.

from sklearn.model_selection import KFold, TimeSeriesSplit, cross_val_score

gb = models["gradient boosting"]
shuffled = KFold(5, shuffle=True, random_state=0)
cross_val_score(gb, X_train, y_train, cv=shuffled, scoring="roc_auc")
cross_val_score(gb, X_train, y_train, cv=TimeSeriesSplit(5), scoring="roc_auc")
SplitterFold AUCsMeanActual test AUC, 2022–2023
KFold, shuffled0.93, 0.90, 0.91, 0.92, 0.910.9120.819
TimeSeriesSplit0.90, 0.43, 0.79, 0.89, 0.670.7340.819

Panel 1 of the chart shows the two. The shuffled folds agree with each other and promise 0.91\key{0.91}; the model then delivers 0.82\key{0.82} on real future data. The time-ordered folds are noisier and less flattering, and that is useful information: fold 2 trained on a calm 2019 and was asked about early 2020, and scored 0.43\key{0.43}, worse than a coin flip. A model that has never seen a crash does not know what one looks like. Shuffling hides exactly that.

Note. The rule is older than scikit-learn: validate on data that comes after the data you trained on, the way the real test will. The library will happily shuffle time series for you, because KFold has no idea the rows are dated. Choosing the splitter is your job, and it is the single setting that most changes what a cross-validated score means.

Grid search, on the right splitter

GridSearchCV takes an estimator, a dictionary of settings to try, a splitter and a scoring rule, fits every combination on every fold, and keeps the best. The model__learning_rate syntax (double underscore) reaches into a pipeline step by name, which is why pipelines and grid search fit together. The search below tries 12 combinations for the boosting model, and a second search tries 11 values of the regularisation strength C for the logistic regression.

from sklearn.model_selection import GridSearchCV

settings = {"model__learning_rate": [0.01, 0.03, 0.1, 0.3],
            "model__max_depth": [2, 3, 5]}
grid = GridSearchCV(gb, settings, cv=TimeSeriesSplit(5), scoring="roc_auc", n_jobs=-1)
grid.fit(X_train, y_train)
grid.best_params_, grid.best_score_       # chosen on validation folds only
p = grid.best_estimator_.predict_proba(X_test)[:, 1]
roc_auc_score(y_test, p)                  # looked at once, after the choice
Model and searchChosen on validationValidation AUCTest AUC
Gradient boosting, 12 combinationsrate 0.01, depth 20.7920.822
Logistic regression, 11 values of CC = 0.0320.8170.832

Panel 2 shows the boosting grid: the shallowest, slowest-learning trees won, which is the usual answer on small noisy data, and the whole surface spans 0.73 to 0.79 with fold standard deviations around 0.1, so the differences between neighbours are inside the noise. The tuned boosting model reaches 0.822\key{0.822} on the test set, up from 0.819 untuned; the tuned logistic regression reaches 0.832\key{0.832}. The test numbers were looked at once, after the choice was made. That is what makes them test numbers. cv_results_ holds every combination’s mean and spread, and reading it is more useful than reading best_params_.

Two habits from the same section of the library. RandomizedSearchCV samples settings instead of trying all of them, and finds as good an answer in a fraction of the fits once the grid has more than two or three dimensions. And n_jobs=-1 runs the folds on every core; scikit-learn has no GPU support, and parallel folds is where its speed comes from.

Inspection: what did it learn?

The learned attributes with the trailing underscore are the first place to look (coef_ for a linear model, feature_importances_ for trees). The better tool is permutation importance: shuffle one column of the test set, score again, and see how much was lost. For the tuned boosting model, shuffling the 20-day volatility costs 0.215\risk{0.215} of AUC; no other column costs more than 0.004\risk{0.004}. The model is close to a function of one feature: this month’s volatility predicts next month’s. The random forests post got too. Panel 3 of the chart shows the three models’ ROC curves on the test months, close enough that the choice between them comes down to simplicity, and the simplest wins.

Saving the model

pickle and joblib write any fitted estimator to disk, and the library’s persistence guide gives the two warnings that matter. There is no supported way to load a model into a different version of scikit-learn, so record the version next to the file. And a pickle executes code when loaded, so never load one from a source you do not trust; skops is the format for that case, and ONNX for serving predictions without Python. Save the training script, the data snapshot and the cross-validation score with the model. Without them the file is a number with no history.

Where it stops

scikit-learn works on a table that fits in memory, on CPU, with classical methods. That covers more real problems than the attention paid to the alternatives suggests. The Python stack post says where to go when it is not enough: XGBoost and LightGBM for the last few points of accuracy on a table (both plug into pipelines and grid search unchanged), PyTorch when the input is images, text or audio, Dask or Spark when the table does not fit one machine. Two more limits are not in the manual: there is no time-series forecasting in the library (you build the lagged features yourself, as this example did, and then it is a table), and the defaults are tuned for independent rows, so every splitter, every shuffle and every importance measure needs a second look when the rows are dated.

Why banks use it

  • The interface is auditable: a pipeline is a list of named steps with stored settings, and get_params() prints the whole thing. A model-risk reviewer can read it.
  • Determinism: random_state everywhere, so a result reproduces.
  • Linear models and trees, the methods a regulator will accept an explanation for, are first-class, with the inspection tools beside them.
  • It runs on the machine the data is already on. No cluster, no GPU, no new infrastructure to approve.

Summary

HabitWhy
Preprocessing inside the Pipelinethe scaler, imputer and encoder learn from training rows only, in every fold
A fresh preprocessor per pipeline, or cloneestimators are stateful and Pipeline fits in place
TimeSeriesSplit on dated rowsshuffled folds leak neighbours and promised 0.91 where the test gave 0.82
AUC or average precision, and the confusion matrixaccuracy rewards saying “calm”; the cut-off is a decision, not a default
Grid search on validation folds, test oncethe test score is only a test score if the choice never saw it
Permutation importancethe model here is nearly one feature, and you should know that
Baseline firstDummyClassifier, then a scaled linear model, which won here

Next

The ML basics series walks through each model this post used, from linear regression to boosting, on the same data. The backtesting post covers the same leakage and look-ahead traps in their trading form.

References

  • Aurélien Géron, Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow (2nd ed., O’Reilly, 2019), ch. 2 (the estimator design, transformation pipelines, custom transformers, grid search) and ch. 3 (confusion matrix, precision and recall, ROC curves). The author’s companion notebooks are at github.com/ageron/handson-mlp.
  • James, Witten, Hastie, Tibshirani & Taylor, An Introduction to Statistical Learning, with Applications in Python (Springer, 2023), 5.1 on cross-validation.
  • Lars Buitinck et al., “API design for machine learning software: experiences from the scikit-learn project” (2013), arXiv:1309.0238.
  • scikit-learn user guide, the four pages this post leans on: pipelines and composite estimators, cross-validation, developing estimators and model persistence.