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:
Kind Methods Examples Predictor fit, predict, predict_proba, scoreLogisticRegression, RandomForestClassifierTransformer fit, transform, fit_transformStandardScaler, OneHotEncoder, SimpleImputer, PCAMeta-estimator wraps estimators, exposes the same methods Pipeline, 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 ))
Model Accuracy AUC Average precision Always “calm” (DummyClassifier) 0.774 0.500 0.226 Logistic regression 0.795 0.831 0.562 Random forest 0.789 0.824 0.536 Gradient boosting 0.791 0.819 0.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} 0.83 to 0.77 \key{0.77} 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} 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:
Item Predicted calm Predicted stress Actually calm (1,861) 1,781 80 Actually stress (544) 412 132
TP, stress months caught FN, stress months missed FP, false alarms
precision = T P T P + F P = 132 132 + 80 = 0.62 recall = T P T P + F N = 132 132 + 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} precision recall = T P + F P T P = 132 + 80 132 = 0.62 = T P + F N T P = 132 + 412 132 = 0.24
When the model says “stress” it is right 62 % \key{62\%} 62% of the time, and it catches only
24 % \key{24\%} 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\%} 70% (381 of 544 caught) and precision falls to 45 % \key{45\%} 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" )
Splitter Fold AUCs Mean Actual test AUC, 2022–2023 KFold, shuffled0.93, 0.90, 0.91, 0.92, 0.91 0.912 0.819 TimeSeriesSplit0.90, 0.43, 0.79, 0.89, 0.67 0.734 0.819
Panel 1 of the chart shows the two. The shuffled folds agree with each other and promise
0.91 \key{0.91} 0.91 ; the model then delivers 0.82 \key{0.82} 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} 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 search Chosen on validation Validation AUC Test AUC Gradient boosting, 12 combinations rate 0.01, depth 2 0.792 0.822 Logistic regression, 11 values of C C = 0.032 0.817 0.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} 0.822 on the test set, up from 0.819 untuned; the tuned
logistic regression reaches 0.832 \key{0.832} 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} 0.215 of AUC; no other column
costs more than 0.004 \risk{0.004} 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
Habit Why Preprocessing inside the Pipeline the scaler, imputer and encoder learn from training rows only, in every fold A fresh preprocessor per pipeline, or clone estimators 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 matrix accuracy rewards saying “calm”; the cut-off is a decision, not a default Grid search on validation folds, test once the test score is only a test score if the choice never saw it Permutation importance the model here is nearly one feature, and you should know that Baseline first DummyClassifier, 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 .