Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

PERF: models with multithreading being slower than the same model with a single thread #25822

Copy link
Copy link
Closed
@adrinjalali

Description

@adrinjalali
Issue body actions

While working on skops's persistence, I realized sometimes it's faster for me to set OMP_NUM_THREADS=1.

I tried to isolate the issue. The differences here aren't large, and couldn't reproduce a massive difference, but in terms of proportions, the diffs are sometimes significant.

Here's the code to run the relevant tests, w/o any skops dependency:

import warnings
from functools import partial
from time import perf_counter

import numpy as np
import pytest
from scipy import sparse, special
from sklearn.base import is_regressor
from sklearn.cluster import Birch
from sklearn.compose import ColumnTransformer
from sklearn.datasets import load_sample_images, make_classification, make_regression
from sklearn.decomposition import SparseCoder
from sklearn.exceptions import SkipTestWarning
from sklearn.experimental import enable_halving_search_cv  # noqa
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import (
    GridSearchCV,
    HalvingGridSearchCV,
    HalvingRandomSearchCV,
    RandomizedSearchCV,
)
from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
from sklearn.pipeline import FeatureUnion, Pipeline
from sklearn.preprocessing import (
    FunctionTransformer,
    MinMaxScaler,
    Normalizer,
    PolynomialFeatures,
    StandardScaler,
)
from sklearn.utils import all_estimators
from sklearn.utils._tags import _safe_tags
from sklearn.utils._testing import SkipTest, set_random_state
from sklearn.utils.estimator_checks import (
    _construct_instance,
    _enforce_estimator_tags_y,
    _get_check_estimator_ids,
)

UNSUPPORTED_TYPES = {Birch}

# Default settings for X
N_SAMPLES = 50
N_FEATURES = 20


def _tested_estimators(type_filter=None):
    for name, Estimator in all_estimators(type_filter=type_filter):
        if Estimator in UNSUPPORTED_TYPES:
            continue
        try:
            # suppress warnings here for skipped estimators.
            with warnings.catch_warnings():
                warnings.filterwarnings(
                    "ignore",
                    category=SkipTestWarning,
                    message="Can't instantiate estimator",
                )
                estimator = _construct_instance(Estimator)
                # with the kind of data we pass, it needs to be 1 for the few
                # estimators which have this.
                if "n_components" in estimator.get_params():
                    estimator.set_params(n_components=1)
                    # Then n_best needs to be <= n_components
                    if "n_best" in estimator.get_params():
                        estimator.set_params(n_best=1)
                if "patch_size" in estimator.get_params():
                    # set patch size to fix PatchExtractor test.
                    estimator.set_params(patch_size=(3, 3))
        except SkipTest:
            continue

        yield estimator

    # nested Pipeline & FeatureUnion
    # fmt: off
    yield Pipeline([
        ("features", FeatureUnion([
            ("scaler", StandardScaler()),
            ("scaled-poly", Pipeline([
                ("polys", FeatureUnion([
                    ("poly1", PolynomialFeatures()),
                    ("poly2", PolynomialFeatures(degree=3, include_bias=False))
                ])),
                ("scale", MinMaxScaler()),
            ])),
        ])),
        ("clf", LogisticRegression(random_state=0, solver="liblinear")),
    ])
    # fmt: on

    # FunctionTransformer with numpy functions
    yield FunctionTransformer(
        func=np.sqrt,
        inverse_func=np.square,
    )

    # FunctionTransformer with scipy functions - problem is that they look like
    # numpy ufuncs
    yield FunctionTransformer(
        func=special.erf,
        inverse_func=special.erfinv,
    )

    # partial functions should be supported
    yield FunctionTransformer(
        func=partial(np.add, 10),
        inverse_func=partial(np.add, -10),
    )

    yield KNeighborsClassifier(algorithm="kd_tree")
    yield KNeighborsRegressor(algorithm="ball_tree")

    yield ColumnTransformer(
        [
            ("norm1", Normalizer(norm="l1"), [0]),
            ("norm2", Normalizer(norm="l1"), [1, 2]),
            ("norm3", Normalizer(norm="l1"), [True] + (N_FEATURES - 1) * [False]),
            ("norm4", Normalizer(norm="l1"), np.array([1, 2])),
            ("norm5", Normalizer(norm="l1"), slice(3)),
            ("norm6", Normalizer(norm="l1"), slice(-10, -3, 2)),
        ],
    )

    yield GridSearchCV(
        LogisticRegression(random_state=0, solver="liblinear"),
        {"C": [1, 2, 3, 4, 5]},
    )

    yield HalvingGridSearchCV(
        LogisticRegression(random_state=0, solver="liblinear"),
        {"C": [1, 2, 3, 4, 5]},
    )

    yield HalvingRandomSearchCV(
        LogisticRegression(random_state=0, solver="liblinear"),
        {"C": [1, 2, 3, 4, 5]},
    )

    yield RandomizedSearchCV(
        LogisticRegression(random_state=0, solver="liblinear"),
        {"C": [1, 2, 3, 4, 5]},
        n_iter=3,
    )

    dictionary = np.random.randint(-2, 3, size=(5, N_FEATURES)).astype(float)
    yield SparseCoder(
        dictionary=dictionary,
        transform_algorithm="lasso_lars",
    )


def get_input(estimator):
    # Return a valid input for estimator.fit

    # TODO: make this a parameter and test with sparse data
    # TODO: try with pandas.DataFrame as well
    if is_regressor(estimator):
        # classifier data can lead to failure of certain regressors to fit, e.g.
        # RANSAC in sklearn 0.24, so regression data is needed
        X, y = make_regression(
            n_samples=N_SAMPLES, n_features=N_FEATURES, random_state=0
        )
    else:
        X, y = make_classification(
            n_samples=N_SAMPLES, n_features=N_FEATURES, random_state=0
        )
    y = _enforce_estimator_tags_y(estimator, y)
    tags = _safe_tags(estimator)

    if tags["pairwise"] is True:
        return np.random.rand(N_FEATURES, N_FEATURES), None

    if "2darray" in tags["X_types"]:
        # Some models require positive X
        return np.abs(X), y

    if "1darray" in tags["X_types"]:
        return X[:, 0], y

    if "3darray" in tags["X_types"]:
        return load_sample_images().images[1], None

    if "1dlabels" in tags["X_types"]:
        # model only expects y
        return y, None

    if "2dlabels" in tags["X_types"]:
        return [(1, 2), (3,)], None

    if "categorical" in tags["X_types"]:
        return [["Male", 1], ["Female", 3], ["Female", 2]], None

    if "dict" in tags["X_types"]:
        return [{"foo": 1, "bar": 2}, {"foo": 3, "baz": 1}], None

    if "string" in tags["X_types"]:
        return [
            "This is the first document.",
            "This document is the second document.",
            "And this is the third one.",
            "Is this the first document?",
        ], None

    if tags["X_types"] == "sparse":
        # TfidfTransformer in sklearn 0.24 needs this
        return sparse.csr_matrix(X), y

    raise ValueError(f"Unsupported X type for estimator: {tags['X_types']}")


class catchtime:
    def __init__(self, obj):
        self.obj = obj

    def __enter__(self):
        self.time = perf_counter()
        return self

    def __exit__(self, type, value, traceback):
        self.time = perf_counter() - self.time
        with open("/tmp/times.csv", "a") as f:
            f.write(f'"{str(self.obj)}",{self.time}\n')


@pytest.mark.parametrize(
    "estimator", _tested_estimators(), ids=_get_check_estimator_ids
)
def test_can_persist_fitted(estimator, request):
    """Check that fitted estimators can be persisted and return the right results."""
    set_random_state(estimator, random_state=0)

    with catchtime(request.node.name):
        X, y = get_input(estimator)
        tags = _safe_tags(estimator)
        if tags.get("requires_fit", True):
            with warnings.catch_warnings():
                warnings.filterwarnings("ignore", module="sklearn")
                if y is not None:
                    estimator.fit(X, y)
                else:
                    estimator.fit(X)

The two compared runs are:

OMP_NUM_THREADS=1 /bin/time pytest -vv -s -x /tmp/test_persist.py

and

/bin/time pytest -vv -s -x /tmp/test_persist.py

And merging the outputs of the files, calculating the time diff and sorting them, on my system I get:

EDIT: report and sort based on multi / single times.

"test","time_single","time_multi","multi-single","multi / single"
"test_can_persist_fitted[LocalOutlierFactor()]","0.0010714689997257","0.0927494520001346",0.0916779830004089,86.56288891594512
"test_can_persist_fitted[GammaRegressor()]","0.0021223299991106","0.0836087440111441",0.08148641401203349,39.39478971045117
"test_can_persist_fitted[TweedieRegressor()]","0.0027183700003661","0.1029384389985352",0.10022006899816911,37.867707112965434
"test_can_persist_fitted[BisectingKMeans()]","0.0024171370023395","0.0770646570017561",0.0746475199994166,31.882618538860942
"test_can_persist_fitted[MiniBatchNMF(n_components=1)]","0.0018326569988857","0.0317566099984105",0.0299239529995248,17.328179805451477
"test_can_persist_fitted[SpectralCoclustering()]","0.008189896994736","0.1385050719982246",0.1303151750034886,16.911698900150732
"test_can_persist_fitted[GaussianMixture()]","0.0023726949875708","0.0248366449959576",0.022463950008386798,10.467693962377238
"test_can_persist_fitted[Isomap(n_components=1)]","0.0028434790001483","0.0244207729992922",0.0215772939991439,8.588343011507575
"test_can_persist_fitted[KMeans()]","0.0126020519965095","0.0913419629941927",0.0787399109976832,7.248181726237321
"test_can_persist_fitted[OPTICS()]","0.0183498749975115","0.1283333730098093",0.10998349801229779,6.993691947613436
"test_can_persist_fitted[HistGradientBoostingClassifier()]","0.0225414900050964","0.137676618003752",0.1151351279986556,6.107698203296443
"test_can_persist_fitted[SpectralBiclustering(n_best=1,n_components=1)]","0.0242698249930981","0.133240677008871",0.10897085201577289,5.489972714956216
"test_can_persist_fitted[LocallyLinearEmbedding(n_components=1)]","0.0047033659939188","0.0194478940102271",0.014744528016308302,4.134888510775514
"test_can_persist_fitted[QuantileRegressor()]","0.0140205890056677","0.057087950001005",0.0430673609953373,4.071722662858721
"test_can_persist_fitted[NuSVR()]","0.0007767990027787","0.0029766740044578",0.0021998750016791,3.8319745440067408
"test_can_persist_fitted[Nystroem(n_components=1)]","0.0009555270080454","0.0036264819937059",0.0026709549856605,3.79526895961228
"test_can_persist_fitted[SplineTransformer()]","0.0009607859974494","0.003511870992952",0.0025510849955026,3.6552062605772453
"test_can_persist_fitted[NuSVC()]","0.0012937059946125","0.0044799390016123",0.0031862330069998,3.462872569400255
"test_can_persist_fitted[Normalizer()]","0.0006453480018535","0.0022331239888444",0.0015877759869909,3.460340750154426
"test_can_persist_fitted[OAS()]","0.0009089880040846","0.0030464559968095",0.0021374679927249,3.3514809690777447
"test_can_persist_fitted[GaussianRandomProjection(n_components=1)]","0.0008345539972651","0.0027637859893729",0.0019292319921078,3.3116922313355963
"test_can_persist_fitted[NMF(n_components=1)]","0.0047911790024954","0.0157362389873014",0.010945059984806,3.2844189246750037
"test_can_persist_fitted[KBinsDiscretizer()]","0.0043756679951911","0.0142683290032437",0.0098926610080526,3.260834464343439
"test_can_persist_fitted[NeighborhoodComponentsAnalysis(n_components=1)]","0.0090429139963816","0.0284530789940617",0.0194101649976801,3.146450248829837
"test_can_persist_fitted[IsotonicRegression()]","0.0007055559981381","0.0021990679961163",0.0014935119979782,3.1167873307284557
"test_can_persist_fitted[LarsCV()]","0.0121437859925208","0.0369784909998998",0.024834705007379,3.0450545672226412
"test_can_persist_fitted[QuantileTransformer()]","0.0028861119935754","0.0087746539938962",0.0058885420003208,3.040302667889856
"test_can_persist_fitted[FeatureAgglomeration()]","0.0009043379977811","0.0027028719923691",0.001798533994588,2.988785165503291
"test_can_persist_fitted[BernoulliRBM(n_components=1)]","0.0033446660090703","0.0098701509996317",0.0065254849905614,2.9510124397668203
"test_can_persist_fitted[Binarizer()]","0.000752874999307","0.0022121270012576",0.0014592520019505997,2.9382394199485966
"test_can_persist_fitted[Lasso()]","0.0009258329955628","0.0027034779923269",0.0017776449967641002,2.9200493018543763
"test_can_persist_fitted[LinearSVR()]","0.0007726479962002","0.0022275270021054",0.0014548790059052,2.88297777650384
"test_can_persist_fitted[Lars()]","0.0027890229976037","0.0080353840021416",0.005246361004537901,2.8810748455805206
"test_can_persist_fitted[LogisticRegression()]","0.0034757880057441","0.0099455789895728",0.0064697909838287,2.861388258759366
"test_can_persist_fitted[GenericUnivariateSelect()]","0.0011314559960737","0.0032270969968521",0.0020956410007784,2.852163060738153
"test_can_persist_fitted[LinearSVC()]","0.0029173670045565","0.0082459510012995",0.005328583996743,2.8265045119179497
"test_can_persist_fitted[NearestCentroid()]","0.0010163379920413","0.0028491499979281",0.0018328120058868,2.803348905815893
"test_can_persist_fitted[FastICA(n_components=1)]","0.0015253439923981","0.0042679670004872",0.0027426230080890997,2.7980357360422223
"test_can_persist_fitted[SkewedChi2Sampler(n_components=1)]","0.0008273340063169","0.0022919409966561",0.0014646069903391998,2.770272923821048
"test_can_persist_fitted[FunctionTransformer()]","0.0007347120117628","0.0020166000031167",0.0012818879913538998,2.7447489231573288
"test_can_persist_fitted[LinearDiscriminantAnalysis(n_components=1)]","0.0013325559993973","0.0036443440039874",0.0023117880045901004,2.7348524231894915
"test_can_persist_fitted[GaussianProcessClassifier()]","0.003662921997602","0.0100116180110489",0.006348696013446899,2.733232653494448
"test_can_persist_fitted[GaussianNB()]","0.001269375992706","0.0034225059935124",0.0021531300008064,2.6962113772267364
"test_can_persist_fitted[SimpleImputer()]","0.0009062699973583","0.0024218929902417",0.0015156229928834,2.6723746756499853
"test_can_persist_fitted[NearestNeighbors()]","0.0009082900069188","0.002395991992671",0.0014877019857522,2.637915175131062
"test_can_persist_fitted[SpectralClustering(n_components=1)]","0.0127098130033118","0.0327692639984888",0.020059450995176996,2.5782648407140294
"test_can_persist_fitted[FactorAnalysis(n_components=1)]","0.0195348620036384","0.0497234249924076",0.030188562988769204,2.5453686329161953
"test_can_persist_fitted[TSNE(n_components=1)]","0.1255255159921944","0.317694390003453",0.19216887401125862,2.5309148302820628
"test_can_persist_fitted[LinearRegression()]","0.0009793620120035","0.002405147999525",0.0014257859875214998,2.455831418869047
"test_can_persist_fitted[GraphicalLasso()]","0.0086081100016599","0.0204216620040824",0.011813552002422501,2.3723746560097974
"test_can_persist_fitted[GaussianProcessRegressor()]","0.0004234910011291","0.0009836230019573",0.0005601320008282001,2.3226538446738934
"test_can_persist_fitted[KernelRidge()]","0.0008906929870136","0.0020350589911686",0.001144366004155,2.2848041029175934
"test_can_persist_fitted[FeatureHasher()]","0.0009295619965996","0.0020383999944897",0.0011088379978901,2.1928607257464305
"test_can_persist_fitted[HistGradientBoostingRegressor()]","0.0203921549982624","0.0434060730040073",0.0230139180057449,2.1285672361604693
"test_can_persist_fitted[MeanShift()]","0.0483692080015316","0.1026678279886255",0.054298619987093906,2.122586501424099
"test_can_persist_fitted[BayesianRidge()]","0.0014079749962547","0.0029236859991215",0.0015157110028668,2.0765184089907023
"test_can_persist_fitted[LabelBinarizer()]","0.0010816889989655","0.0022351079969666",0.0011534189980011,2.066312959736302
"test_can_persist_fitted[OneVsOneClassifier(estimator=LogisticRegression(C=1))]","0.0035561710101319","0.0072453939937986",0.0036892229836667,2.0374143912527605
"test_can_persist_fitted[EllipticEnvelope()]","0.0378726820053998","0.0719431110046571",0.034070428999257295,1.89960433735323
"test_can_persist_fitted[SGDRegressor()]","0.0010731799993664","0.0020019400108139",0.0009287600114474999,1.8654279915725553
"test_can_persist_fitted[RANSACRegressor(estimator=LinearRegression())]","0.0711863120086491","0.1266435039869975",0.055457191978348405,1.7790429144806714
"test_can_persist_fitted[MinCovDet()]","0.0332818409951869","0.0540667439927347",0.020784902997547802,1.624511817136367
"test_can_persist_fitted[DBSCAN()]","0.0011594509996939","0.0018382370035396",0.0006787860038457,1.5854374216977711
"test_can_persist_fitted[SpectralEmbedding(n_components=1)]","0.0044372770062182","0.0070096690033096",0.0025723919970913993,1.5797231034903985
"test_can_persist_fitted[GradientBoostingClassifier()]","0.0647526280081365","0.1017985090002184",0.037045880992081906,1.5721139377914808
"test_can_persist_fitted[BayesianGaussianMixture()]","0.0038830019911983","0.0060393379972083",0.00215633600601,1.5553270410104918
"test_can_persist_fitted[PowerTransformer()]","0.0224101670028176","0.0346972039988031",0.0122870369959855,1.5482795819611994
"test_can_persist_fitted[RidgeClassifierCV()]","0.0021108439977979","0.0031720449915155",0.0010612009937176,1.5027377650004825
"test_can_persist_fitted[VarianceThreshold()]","0.0008643930050311","0.0012846210011048",0.0004202279960737,1.4861538601397875
"test_can_persist_fitted[SparsePCA(n_components=1)]","0.0867362350109033","0.127830443001585",0.0410942079906817,1.4737836267105195
"test_can_persist_fitted[LassoCV()]","0.0380988410033751","0.0551571569958468",0.0170583159924717,1.4477384493391947
"test_can_persist_fitted[EmpiricalCovariance()]","0.0010117939964402","0.0014475229982053",0.00043572900176509994,1.4306499181633094
"test_can_persist_fitted[OneHotEncoder()]","0.0007435950101353","0.0010595619969535",0.00031596698681820006,1.4249181106805822
"test_can_persist_fitted[TfidfVectorizer()]","0.0013325569889275","0.0018945149931823",0.0005619580042548001,1.4217140496986087
"test_can_persist_fitted[MinMaxScaler()]","0.0007294279930647","0.0010341020097257",0.00030467401666099995,1.417688955671839
"test_can_persist_fitted[TfidfTransformer()]","0.0012206079991301","0.0017198150017065",0.0004992070025764,1.408982247316234
"test_can_persist_fitted[CCA(n_components=1)]","0.0010862969938898","0.001518039003713",0.00043174200982320013,1.3974438042742099
"test_can_persist_fitted[ARDRegression()]","0.0126483920030295","0.0176656460098456",0.0050172540068161,1.3966712927314702
"test_can_persist_fitted[OneVsRestClassifier(estimator=LogisticRegression(C=1))]","0.0039936749963089","0.0055577759922016",0.0015641009958926996,1.3916445372591157
"test_can_persist_fitted[HuberRegressor()]","0.0107131620025029","0.0145136320061283",0.003800470003625399,1.3547477395317555
"test_can_persist_fitted[Ridge()]","0.0006361050036503","0.0008559510024497",0.00021984599879940005,1.345612748740868
"test_can_persist_fitted[FunctionTransformer(func=<ufunc'erf'>,inverse_func=<ufunc'erfinv'>)]","0.0007440420013153","0.0009982040064642",0.0002541620051489,1.341596314051624
"test_can_persist_fitted[PoissonRegressor()]","0.0055465689947595","0.0073421239940216",0.0017955549992621006,1.3237235489107904
"test_can_persist_fitted[FunctionTransformer(func=functools.partial(<ufunc'add'>,10),inverse_func=functools.partial(<ufunc'add'>,-10))]","0.0006530280079459","0.0008636220009066",0.0002105939929607,1.322488454397421
"test_can_persist_fitted[KernelPCA(n_components=1)]","0.001298568007769","0.0017092789930757",0.00041071098530670006,1.316279919765096
"test_can_persist_fitted[GraphicalLassoCV()]","0.3661585500085493","0.481569366005715",0.11541081599716568,1.3151935575298488
"test_can_persist_fitted[VotingRegressor(estimators=[('est1',Ridge(alpha=0.1)),('est2',Ridge(alpha=1))])]","0.0016161160019692","0.0021203890064498",0.0005042730044806001,1.3120277281248098
"test_can_persist_fitted[MissingIndicator()]","0.0006886129995109","0.0008854990010149",0.000196886001504,1.2859167655037618
"test_can_persist_fitted[OneClassSVM()]","0.0011959840048803","0.0015293489996111",0.0003333649947308002,1.2787370009719863
"test_can_persist_fitted[DecisionTreeRegressor()]","0.0012525390047812","0.0015977739967638",0.00034523499198260005,1.2756281366606284
"test_can_persist_fitted[LabelEncoder()]","0.0016270780033664","0.0020700199966086",0.00044294199324220016,1.272231566234538
"test_can_persist_fitted[ShrunkCovariance()]","0.0010790710075525","0.0013700450072064",0.00029097399965389995,1.2696523190942495
"test_can_persist_fitted[SVR()]","0.0008788159902906","0.0011090990010416",0.0002302830107510001,1.2620378023331733
"test_can_persist_fitted[AdaBoostClassifier()]","0.050940952001838","0.0637439109996194",0.012802958997781402,1.2513294018792476
"test_can_persist_fitted[SelectPercentile()]","0.0009721020032884","0.0012072280078427",0.00023512600455430008,1.2418737990035225
"test_can_persist_fitted[KernelCenterer()]","0.0005867239960934","0.0007275149982888",0.00014079100219540003,1.2399612136759917
"test_can_persist_fitted[MultinomialNB()]","0.0012180370104033","0.0015100150048965",0.00029197799449320015,1.2397119233647296
"test_can_persist_fitted[RadiusNeighborsClassifier()]","0.0008196080016205","0.0010090029973071",0.00018939499568659997,1.2310799739779685
"test_can_persist_fitted[RadiusNeighborsTransformer()]","0.0006537840090459","0.0007985830015968",0.0001447989925509,1.2214783331305585
"test_can_persist_fitted[CalibratedClassifierCV(estimator=LogisticRegression(C=1))]","0.0218348740017972","0.0265728600061265",0.0047379860043293,1.2169916805537473
"test_can_persist_fitted[AdaBoostRegressor()]","0.0465619070018874","0.0561594290047651",0.009597522002877702,1.2061239030112891
"test_can_persist_fitted[VotingClassifier(estimators=[('est1',LogisticRegression(C=0.1)),('est2',LogisticRegression(C=1))])]","0.0065736309916246","0.0079231550043914",0.0013495240127668002,1.2052935454524625
"test_can_persist_fitted[HashingVectorizer()]","0.0007064819947117","0.0008509629988111",0.0001444810040994001,1.204507694719608
"test_can_persist_fitted[BernoulliNB()]","0.0016057890024967","0.0019301649881526",0.0003243759856559,1.2020041145826483
"test_can_persist_fitted[QuadraticDiscriminantAnalysis()]","0.001282765995711","0.0015390229964395",0.00025625700072850013,1.1997690939620396
"test_can_persist_fitted[LedoitWolf()]","0.0011327229876769","0.001345967000816",0.00021324401313910007,1.188257866626722
"test_can_persist_fitted[PLSCanonical(n_components=1)]","0.0008930790063459","0.0010565039992798",0.00016342499293390004,1.182990521300647
"test_can_persist_fitted[SVC()]","0.0013242099958006","0.0015611440030625",0.0002369340072618999,1.1789247989467506
"test_can_persist_fitted[OrdinalEncoder()]","0.0007790569943608","0.0009178610052913",0.00013880401093050007,1.1781692635265868
"test_can_persist_fitted[MiniBatchSparsePCA(n_components=1)]","0.5331204669928411","0.6277459029952297",0.0946254360023886,1.177493534502886
"test_can_persist_fitted[RidgeCV()]","0.0010370239906478","0.0012171739945188",0.0001801500038709999,1.173718260614651
"test_can_persist_fitted[LogisticRegressionCV()]","0.1866729580069659","0.2189319430035539",0.032258984996588,1.1728101667269033
"test_can_persist_fitted[ComplementNB()]","0.0012564180069603","0.0014726260124007",0.00021620800544039994,1.1720828611518233
"test_can_persist_fitted[StackingClassifier(estimators=[('est1',LogisticRegression(C=0.1)),('est2',LogisticRegression(C=1))])]","0.0341543770045973","0.0400117379904259",0.005857360985828598,1.1714966425837654
"test_can_persist_fitted[ExtraTreesClassifier()]","0.075037741989945","0.0878974350052885",0.012859693015343496,1.1713763324203796
"test_can_persist_fitted[KernelDensity()]","0.0007219630060717","0.0008428259898209",0.00012086298374919995,1.1674088322154235
"test_can_persist_fitted[ExtraTreeClassifier()]","0.0011761259956983","0.0013658559910254",0.00018972999532710006,1.1613177465858595
"test_can_persist_fitted[RidgeClassifier()]","0.0017092100024456","0.0019844030030071",0.0002751930005614998,1.161005961916759
"test_can_persist_fitted[LassoLarsCV()]","0.0119811650074552","0.0138928539963671",0.0019116889889119002,1.1595578549934304
"test_can_persist_fitted[MultiOutputClassifier(estimator=LogisticRegression(C=1))]","0.0032788190001156","0.0037978430045768",0.0005190240044612,1.1582960219648908
"test_can_persist_fitted[SelfTrainingClassifier(base_estimator=LogisticRegression(C=1))]","0.0034496400039643","0.0039106769982026",0.0004610369942382995,1.133647857083197
"test_can_persist_fitted[HalvingRandomSearchCV(estimator=LogisticRegression(random_state=0,solver='liblinear'),param_distributions={'C':[1,2,3,4,5]})]","0.0186055730009684","0.0209051120036747",0.0022995390027063,1.1235940974559941
"test_can_persist_fitted[RobustScaler()]","0.0028357779956422","0.0031639569933759",0.00032817899773370006,1.1157280288647489
"test_can_persist_fitted[RFE(estimator=LogisticRegression(C=1))]","0.0287706700037233","0.0319507169915596",0.003180046987836301,1.1105308631124948
"test_can_persist_fitted[RandomForestRegressor()]","0.1025792099972022","0.1136259829945629",0.011046772997360704,1.1076901742337653
"test_can_persist_fitted[KNeighborsRegressor()]","0.0005174600082682","0.0005709969991585",5.353699089030001e-05,1.1034611178349298
"test_can_persist_fitted[KNeighborsClassifier(algorithm='kd_tree')]","0.000879220009665","0.0009664180106483",8.719800098329995e-05,1.099176542872954
"test_can_persist_fitted[LassoLars()]","0.0025726489984663","0.0028255540091777",0.00025290501071139997,1.0983052918848124
"test_can_persist_fitted[MultiTaskElasticNet()]","0.0007665879966225","0.0008397030032938",7.311500667130002e-05,1.09537718695497
"test_can_persist_fitted[Pipeline(steps=[('features',FeatureUnion(transformer_list=[('scaler',StandardScaler()),('scaled-poly',Pipeline(steps=[('polys',FeatureUnion(transformer_list=[('poly1',PolynomialFeatures()),('poly2',PolynomialFeatures(degree=3,include_bias=False))])),('scale',MinMaxScaler())]))])),('clf',LogisticRegression(random_state=0,solver='liblinear'))])]","0.0157648290041834","0.0171720850048586",0.0014072560006751986,1.0892655416878778
"test_can_persist_fitted[HalvingGridSearchCV(estimator=LogisticRegression(random_state=0,solver='liblinear'),param_grid={'C':[1,2,3,4,5]})]","0.0417294619983295","0.0453058139974018",0.0035763519990723025,1.0857032855879012
"test_can_persist_fitted[PCA(n_components=1)]","0.0010547990095801","0.0011448959994595",9.009698987939982e-05,1.085416263251201
"test_can_persist_fitted[PLSSVD(n_components=1)]","0.0008858310029609","0.0009581610065652",7.233000360430003e-05,1.0816521473763463
"test_can_persist_fitted[IncrementalPCA(n_components=1)]","0.001100387002225","0.0011889339948538",8.854699262880001e-05,1.0804689554218259
"test_can_persist_fitted[RandomizedSearchCV(estimator=LogisticRegression(random_state=0,solver='liblinear'),n_iter=3,param_distributions={'C':[1,2,3,4,5]})]","0.0204526760062435","0.0220905689930077",0.0016378929867642,1.080082087364226
"test_can_persist_fitted[RBFSampler(n_components=1)]","0.0007984279945958","0.0008596959960414",6.12680014456e-05,1.0767357881490824
"test_can_persist_fitted[BaggingRegressor()]","0.0125537710118805","0.0134970329963834",0.0009432619845029001,1.0751377401746636
"test_can_persist_fitted[OutputCodeClassifier(estimator=LogisticRegression(C=1))]","0.0042471040069358","0.0045657730079256",0.0003186690009898,1.0750320690214774
"test_can_persist_fitted[MiniBatchKMeans()]","0.0078272259997902","0.0084100420062895",0.0005828160064992993,1.074460096912357
"test_can_persist_fitted[LatentDirichletAllocation(n_components=1)]","0.0174797929939813","0.0187050800013821",0.0012252870074008007,1.0700973408450944
"test_can_persist_fitted[ClassifierChain(base_estimator=LogisticRegression(C=1))]","0.003608583996538","0.0038580209948122",0.00024943699827419986,1.069123234629845
"test_can_persist_fitted[DictionaryLearning(n_components=1)]","0.0252839390013832","0.0269514709943905",0.0016675319930072978,1.0659522233824434
"test_can_persist_fitted[AdditiveChi2Sampler()]","0.0006624880043091","0.0007051800057524",4.2692001443300005e-05,1.0644419237263367
"test_can_persist_fitted[AffinityPropagation()]","0.003210470007616","0.003386052994756",0.00017558298714000003,1.0546907420793452
"test_can_persist_fitted[MultiTaskLassoCV()]","0.0190663599933031","0.020108753000386",0.0010423930070828993,1.054671841266452
"test_can_persist_fitted[SGDClassifier()]","0.0014912049955455","0.0015719160001026",8.071100455709994e-05,1.0541246876171944
"test_can_persist_fitted[DummyClassifier()]","0.0007533600000897","0.000793806000729",4.04460006393e-05,1.0536874809314063
"test_can_persist_fitted[StackingRegressor(estimators=[('est1',Ridge(alpha=0.1)),('est2',Ridge(alpha=1))])]","0.0102079740026965","0.010739988007117",0.0005320140044205012,1.0521174920978411
"test_can_persist_fitted[MiniBatchDictionaryLearning(n_components=1)]","5.44541486199887","5.713369516000967",0.2679546540020974,1.0492073902159473
"test_can_persist_fitted[DictVectorizer()]","0.0007831640104996","0.0008214319968828",3.826798638319998e-05,1.0488633107116194
"test_can_persist_fitted[SequentialFeatureSelector(estimator=LogisticRegression(C=1))]","1.5951796029985417","1.671207699997467",0.07602809699892532,1.0476611516697
"test_can_persist_fitted[RandomTreesEmbedding()]","0.0665871059900382","0.0697572490025777",0.0031701430125394975,1.0476089622067937
"test_can_persist_fitted[RFECV(estimator=LogisticRegression(C=1))]","0.2849091190000763","0.2977122179872822",0.012803098987205885,1.0449374840375063
"test_can_persist_fitted[IsolationForest()]","0.0864064729976235","0.0902635519887553",0.0038570789911318015,1.0446387736626848
"test_can_persist_fitted[MLPRegressor()]","0.0537431749980896","0.0561026689974824",0.002359493999392795,1.0439031374584153
"test_can_persist_fitted[KNNImputer()]","0.1559758450021036","0.1627859479922335",0.006810102990129907,1.043661266845761
"test_can_persist_fitted[ColumnTransformer(transformers=[('norm1',Normalizer(norm='l1'),[0]),('norm2',Normalizer(norm='l1'),[1,2]),('norm3',Normalizer(norm='l1'),[True,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]),('norm4',Normalizer(norm='l1'),array([1,2])),('norm5',Normalizer(norm='l1'),slice(None,3,None)),('norm6',Normalizer(norm='l1'),slice(-10,-3,2))])]","0.0029084190027788","0.0030230859993025",0.00011466699652370018,1.039425886165007
"test_can_persist_fitted[RegressorChain(base_estimator=Ridge())]","0.0012361900007817","0.0012826549937017",4.646499291999988e-05,1.0375872583426642
"test_can_persist_fitted[ElasticNetCV()]","0.0392434490058803","0.0406295399880036",0.001386090982123299,1.0353203150394759
"test_can_persist_fitted[SGDOneClassSVM()]","0.0011231740063522","0.0011595130054047",3.6338999052499925e-05,1.0323538461956756
"test_can_persist_fitted[CategoricalNB()]","0.0025532580038998","0.0026260879967594",7.282999285960004e-05,1.0285243374341178
"test_can_persist_fitted[RandomForestClassifier()]","0.0921416700002737","0.0944151160074397",0.0022734460071659884,1.0246733753269204
"test_can_persist_fitted[KNeighborsRegressor(algorithm='ball_tree')]","0.0005623739998554","0.00057624198962",1.3867989764600012e-05,1.0246597278113245
"test_can_persist_fitted[GridSearchCV(estimator=LogisticRegression(random_state=0,solver='liblinear'),param_grid={'C':[1,2,3,4,5]})]","0.03257500899781","0.0333471889898646",0.000772179992054603,1.023704674712646
"test_can_persist_fitted[SelectFpr()]","0.0012472069938667","0.0012763069971697",2.910000330300002e-05,1.0233321360817436
"test_can_persist_fitted[PLSRegression(n_components=1)]","0.0008168109925463","0.0008356059988727",1.879500632639996e-05,1.023010226965493
"test_can_persist_fitted[TheilSenRegressor()]","0.627523786999518","0.6413168939907337",0.013793106991215609,1.0219802137814837
"test_can_persist_fitted[TruncatedSVD(n_components=1)]","0.0022353439999278","0.0022775029938202",4.2158993892399844e-05,1.0188601816515765
"test_can_persist_fitted[MLPClassifier()]","0.0623257219995139","0.0634916169947246",0.0011658949952106923,1.018706481975769
"test_can_persist_fitted[MaxAbsScaler()]","0.0007455649902112","0.0007583139959024",1.2749005691199949e-05,1.0170997912436694
"test_can_persist_fitted[MultiTaskElasticNetCV()]","0.0171599489985965","0.0174205939983949",0.00026064499979840117,1.0151891476961685
"test_can_persist_fitted[FunctionTransformer(func=<ufunc'sqrt'>,inverse_func=<ufunc'square'>)]","0.0007868840039009","0.0007969470025273",1.0062998626400024e-05,1.012788414272642
"test_can_persist_fitted[OrthogonalMatchingPursuitCV()]","0.0035778960009338","0.0036197010049363",4.180500400249995e-05,1.0116842423568457
"test_can_persist_fitted[CountVectorizer()]","0.0009604619990568","0.0009688299905974",8.36799154060007e-06,1.0087124649895756
"test_can_persist_fitted[KNeighborsTransformer()]","0.000647385008051","0.0006524830096168",5.098001565800045e-06,1.0078747599996916
"test_can_persist_fitted[PolynomialFeatures()]","0.0009139189933193","0.0009180089982692",4.090004949900078e-06,1.00447523793662
"test_can_persist_fitted[PassiveAggressiveClassifier()]","0.0012273150059627","0.0012305720010772",3.256995114500009e-06,1.002653756451014
"test_can_persist_fitted[ExtraTreesRegressor()]","0.0723351300111971","0.0724053549929522",7.02249817551015e-05,1.0009708281680594
"test_can_persist_fitted[LabelSpreading()]","0.0034299719991395","0.0034272470074938",-2.724991645699972e-06,0.9992055353086312
"test_can_persist_fitted[SparseRandomProjection(n_components=1)]","0.0010185150022152","0.0010163560073124",-2.1589949028000526e-06,0.9978802522318234
"test_can_persist_fitted[LassoLarsIC()]","0.003475163000985","0.0034607590059749",-1.4403995010099993e-05,0.9958551598857327
"test_can_persist_fitted[OrthogonalMatchingPursuit()]","0.000884089997271","0.0008785029931459",-5.587004125099933e-06,0.9936805029551903
"test_can_persist_fitted[SelectFromModel(estimator=SGDRegressor(random_state=0))]","0.0013246059970697","0.0013142800016794",-1.0325995390299963e-05,0.9922044778499092
"test_can_persist_fitted[MultiLabelBinarizer()]","0.0006304230046225","0.0006242560048121",-6.166999810399993e-06,0.9902176796132419
"test_can_persist_fitted[StandardScaler()]","0.0008629170042695","0.0008531649946235",-9.752009645999952e-06,0.9886987860967515
"test_can_persist_fitted[SelectKBest()]","0.001191697010654","0.0011690020037349",-2.2695006919100152e-05,0.9809557238826627
"test_can_persist_fitted[BaggingClassifier()]","0.013520027991035","0.0131783289980376",-0.00034169899299739924,0.9747264581682836
"test_can_persist_fitted[MultiTaskLasso()]","0.0009197390027111","0.0008949609909905",-2.4778011720600008e-05,0.9730597358081344
"test_can_persist_fitted[ElasticNet()]","0.0009588749962858","0.0009323559934273",-2.6519002858500025e-05,0.9723436287720284
"test_can_persist_fitted[GradientBoostingRegressor()]","0.0507029959990177","0.0491985010012285",-0.0015044949977892005,0.9703272958896089
"test_can_persist_fitted[Perceptron()]","0.0013301419967319","0.0012839510018238",-4.619099490810012e-05,0.9652736361820097
"test_can_persist_fitted[SelectFdr()]","0.0012765760038746","0.0012155559961684",-6.10200077062e-05,0.9522002548058282
"test_can_persist_fitted[MultiOutputRegressor(estimator=Ridge())]","0.0010373830009484","0.0009802540007513",-5.7129000197100096e-05,0.9449296931366029
"test_can_persist_fitted[PatchExtractor(patch_size=(3,3))]","0.0252411669935099","0.0238435880019096",-0.0013975789916003019,0.9446309676585218
"test_can_persist_fitted[RadiusNeighborsRegressor()]","0.0006319329986581","0.0005849159933859",-4.7017005272199995e-05,0.9255981166167301
"test_can_persist_fitted[DecisionTreeClassifier()]","0.0020924089913023","0.0019315929966978",-0.0001608159946044998,0.9231431353655152
"test_can_persist_fitted[KNeighborsClassifier()]","0.0010117110068676","0.0009287019929615",-8.30090139061e-05,0.9179518525125988
"test_can_persist_fitted[DummyRegressor()]","0.0004487870028242","0.0004042410000693",-4.4546002754900004e-05,0.9007413261200221
"test_can_persist_fitted[LabelPropagation()]","0.0034579390048747","0.0031091869896044",-0.00034875201527030013,0.8991445439671839
"test_can_persist_fitted[AgglomerativeClustering()]","0.0040330769988941","0.0034665849962038",-0.0005664920026903003,0.8595385104609615
"test_can_persist_fitted[PassiveAggressiveRegressor()]","0.0009137890010606","0.0007824159984011",-0.00013137300265949996,0.8562326724145067
"test_can_persist_fitted[ExtraTreeRegressor()]","0.0013952790031908","0.0010076239996124",-0.00038765500357839993,0.722166675846272
"test_can_persist_fitted[TransformedTargetRegressor()]","0.0022386700002243","0.0015261009975802",-0.0007125690026441001,0.6816998474215916
"test_can_persist_fitted[MDS(n_components=1)]","0.0108395830029621","0.0067648569965967",-0.004074726006365399,0.6240883062335597
"test_can_persist_fitted[PolynomialCountSketch(n_components=1)]","0.0022807060013292","0.0012844319862779",-0.0009962740150513002,0.5631729760562433
"test_can_persist_fitted[SelectFwe()]","0.0018083500035572","0.0009522119944449",-0.0008561380091122999,0.5265639906941724
"test_can_persist_fitted[SparseCoder(dictionary=array([[-2.,-1.,2.,0.,2.,-2.,1.,-2.,0.,0.,-1.,0.,2.,-2.,1.,0.,2.,1.,0.,-2.],[2.,1.,-2.,1.,1.,0.,-2.,-2.,0.,1.,-2.,2.,0.,-2.,1.,-1.,0.,1.,0.,-1.],[1.,0.,-1.,0.,-2.,1.,-2.,1.,1.,-2.,1.,-2.,0.,1.,-1.,1.,-2.,2.,-1.,1.],[1.,-1.,-1.,0.,-2.,1.,-2.,2.,0.,0.,-2.,0.,0.,-1.,2.,2.,-2.,-1.,-2.,1.],[0.,1.,2.,-2.,-2.,-1.,2.,-1.,-2.,-2.,0.,1.,2.,0.,0.,2.,-1.,2.,-1.,1.]]),transform_algorithm='lasso_lars')]","0.0005894329951843","","",""
"test_can_persist_fitted[SparseCoder(dictionary=array([[2.,-1.,0.,1.,-2.,-1.,-2.,2.,-2.,2.,2.,2.,1.,0.,2.,2.,-1.,2.,0.,2.],[-2.,-1.,0.,-2.,-1.,2.,0.,-1.,1.,-1.,0.,-2.,-2.,-1.,0.,2.,-2.,-1.,0.,1.],[-1.,-1.,-1.,2.,0.,1.,1.,2.,-2.,-1.,2.,1.,1.,1.,-1.,0.,-1.,0.,0.,2.],[1.,1.,2.,0.,-2.,0.,2.,1.,-1.,-2.,1.,1.,-1.,2.,0.,-1.,0.,-1.,-2.,0.],[2.,-2.,0.,2.,0.,1.,-2.,2.,-1.,-1.,0.,-1.,-1.,0.,-1.,-1.,-1.,2.,-1.,-1.]]),transform_algorithm='lasso_lars')]","","0.000741170006222","",""

I have a Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz with hyperthreading enabled.

cc @jjerphan @ogrisel

Environment details:

$ mmamba list
List of packages in environment: "/home/adrin/miniforge3/envs/skops"

  Name                           Version      Build                Channel    
────────────────────────────────────────────────────────────────────────────────
  _libgcc_mutex                  0.1          conda_forge          conda-forge
  _openmp_mutex                  4.5          2_gnu                conda-forge
  _py-xgboost-mutex              2.0          cpu_0                conda-forge
  alabaster                      0.7.12       py_0                 conda-forge
  argon2-cffi                    21.3.0       pyhd8ed1ab_0         conda-forge
  argon2-cffi-bindings           21.2.0       py310h5764c6d_2      conda-forge
  asttokens                      2.0.8        pyhd8ed1ab_0         conda-forge
  attrs                          22.1.0       pyh71513ae_1         conda-forge
  babel                          2.10.3       pyhd8ed1ab_0         conda-forge
  backcall                       0.2.0        pyh9f0ad1d_0         conda-forge
  backports                      1.0          py_2                 conda-forge
  backports.functools_lru_cache  1.6.4        pyhd8ed1ab_0         conda-forge
  beautifulsoup4                 4.11.1       pyha770c72_0         conda-forge
  binutils                       2.36.1       hdd6e379_2           conda-forge
  binutils_impl_linux-64         2.36.1       h193b22a_2           conda-forge
  binutils_linux-64              2.36         hf3e587d_10          conda-forge
  black                          22.8.0       py310hff52083_0      conda-forge
  bleach                         5.0.1        pyhd8ed1ab_0         conda-forge
  brotli                         1.0.9        h166bdaf_7           conda-forge
  brotli-bin                     1.0.9        h166bdaf_7           conda-forge
  brotlipy                       0.7.0        py310h5764c6d_1004   conda-forge
  bzip2                          1.0.8        h7f98852_4           conda-forge
  c-compiler                     1.5.2        h0b41bf4_0           conda-forge
  ca-certificates                2022.12.7    ha878542_0           conda-forge
  certifi                        2022.12.7    pyhd8ed1ab_0         conda-forge
  cffi                           1.15.1       py310h255011f_0      conda-forge
  cfgv                           3.3.1        pyhd8ed1ab_0         conda-forge
  charset-normalizer             2.1.1        pyhd8ed1ab_0         conda-forge
  click                          8.1.3        py310hff52083_0      conda-forge
  cmarkgfm                       0.8.0        py310h5764c6d_1      conda-forge
  colorama                       0.4.5        pyhd8ed1ab_0         conda-forge
  commonmark                     0.9.1        py_0                 conda-forge
  compilers                      1.5.2        ha770c72_0           conda-forge
  contourpy                      1.0.5        py310hbf28c38_0      conda-forge
  cryptography                   38.0.4       py310h600f1e7_0      conda-forge
  cxx-compiler                   1.5.2        hf52228f_0           conda-forge
  cycler                         0.11.0       pyhd8ed1ab_0         conda-forge
  cython                         0.29.33      py310heca2aa9_0      conda-forge
  daal4py                        2023.0.2     py310hd3e5ea5_0      conda-forge
  dal                            2023.0.1     ha770c72_26648       conda-forge
  dataclasses                    0.8          pyhc8e2a94_3         conda-forge
  dbus                           1.13.6       h5008d03_3           conda-forge
  debugpy                        1.6.3        py310hd8f1fbe_0      conda-forge
  decorator                      5.1.1        pyhd8ed1ab_0         conda-forge
  defusedxml                     0.7.1        pyhd8ed1ab_0         conda-forge
  distlib                        0.3.5        pyhd8ed1ab_0         conda-forge
  docutils                       0.19         py310hff52083_0      conda-forge
  entrypoints                    0.4          pyhd8ed1ab_0         conda-forge
  execnet                        1.9.0        pyhd8ed1ab_0         conda-forge
  executing                      1.1.0        pyhd8ed1ab_0         conda-forge
  expat                          2.4.9        h27087fc_0           conda-forge
  filelock                       3.8.0        pyhd8ed1ab_0         conda-forge
  flaky                          3.7.0        pyh9f0ad1d_0         conda-forge
  flit-core                      3.7.1        pyhd8ed1ab_0         conda-forge
  fonttools                      4.37.3       py310h5764c6d_0      conda-forge
  fortran-compiler               1.5.2        hdb1a99f_0           conda-forge
  freetype                       2.12.1       hca18f0e_0           conda-forge
  future                         0.18.2       py310hff52083_5      conda-forge
  gcc                            11.3.0       h02d0930_11          conda-forge
  gcc_impl_linux-64              11.3.0       haf7caf2_17          conda-forge
  gcc_linux-64                   11.3.0       he6f903b_10          conda-forge
  gettext                        0.19.8.1     h27087fc_1009        conda-forge
  gfortran                       11.3.0       ha859ce3_11          conda-forge
  gfortran_impl_linux-64         11.3.0       he34c6f7_19          conda-forge
  gfortran_linux-64              11.3.0       h3c55166_10          conda-forge
  giflib                         5.2.1        h36c2ea0_2           conda-forge
  gxx                            11.3.0       h02d0930_11          conda-forge
  gxx_impl_linux-64              11.3.0       haf7caf2_17          conda-forge
  gxx_linux-64                   11.3.0       hc203a17_10          conda-forge
  huggingface_hub                0.12.1       pyhd8ed1ab_0         conda-forge
  icu                            70.1         h27087fc_0           conda-forge
  identify                       2.5.5        pyhd8ed1ab_0         conda-forge
  idna                           3.4          pyhd8ed1ab_0         conda-forge
  imagesize                      1.4.1        pyhd8ed1ab_0         conda-forge
  importlib-metadata             4.11.4       py310hff52083_0      conda-forge
  importlib_metadata             4.11.4       hd8ed1ab_0           conda-forge
  importlib_resources            5.9.0        pyhd8ed1ab_0         conda-forge
  iniconfig                      1.1.1        pyh9f0ad1d_0         conda-forge
  ipykernel                      6.16.0       pyh210e3f2_0         conda-forge
  ipython                        8.5.0        pyh41d4057_1         conda-forge
  ipython_genutils               0.2.0        py_1                 conda-forge
  ipywidgets                     8.0.2        pyhd8ed1ab_1         conda-forge
  jaraco.classes                 3.2.2        pyhd8ed1ab_0         conda-forge
  jbig                           2.1          h7f98852_2003        conda-forge
  jedi                           0.18.1       pyhd8ed1ab_2         conda-forge
  jeepney                        0.8.0        pyhd8ed1ab_0         conda-forge
  jinja2                         3.1.2        pyhd8ed1ab_1         conda-forge
  joblib                         1.2.0        pyhd8ed1ab_0         conda-forge
  jpeg                           9e           h166bdaf_2           conda-forge
  jsonschema                     4.16.0       pyhd8ed1ab_0         conda-forge
  jupyter_client                 7.3.5        pyhd8ed1ab_0         conda-forge
  jupyter_core                   4.11.1       py310hff52083_0      conda-forge
  jupyterlab_pygments            0.2.2        pyhd8ed1ab_0         conda-forge
  jupyterlab_widgets             3.0.3        pyhd8ed1ab_0         conda-forge
  kernel-headers_linux-64        2.6.32       he073ed8_15          conda-forge
  keyring                        23.9.3       py310hff52083_0      conda-forge
  kiwisolver                     1.4.4        py310hbf28c38_0      conda-forge
  lcms2                          2.12         hddcbb42_0           conda-forge
  ld_impl_linux-64               2.36.1       hea4e1c9_2           conda-forge
  lerc                           4.0.0        h27087fc_0           conda-forge
  libblas                        3.9.0        16_linux64_openblas  conda-forge
  libbrotlicommon                1.0.9        h166bdaf_7           conda-forge
  libbrotlidec                   1.0.9        h166bdaf_7           conda-forge
  libbrotlienc                   1.0.9        h166bdaf_7           conda-forge
  libcblas                       3.9.0        16_linux64_openblas  conda-forge
  libdeflate                     1.14         h166bdaf_0           conda-forge
  libffi                         3.4.2        h7f98852_5           conda-forge
  libgcc-devel_linux-64          11.3.0       h16e4278_17          conda-forge
  libgcc-ng                      12.1.0       h8d9b700_16          conda-forge
  libgfortran-ng                 12.1.0       h69a702a_16          conda-forge
  libgfortran5                   12.1.0       hdcd56e2_16          conda-forge
  libglib                        2.74.0       h7a41b64_0           conda-forge
  libgomp                        12.1.0       h8d9b700_16          conda-forge
  libhwloc                       2.8.0        h32351e8_1           conda-forge
  libiconv                       1.17         h166bdaf_0           conda-forge
  liblapack                      3.9.0        16_linux64_openblas  conda-forge
  libnsl                         2.0.0        h7f98852_0           conda-forge
  libopenblas                    0.3.21       pthreads_h78a6416_3  conda-forge
  libpng                         1.6.38       h753d276_0           conda-forge
  libsanitizer                   11.3.0       hd8f1017_17          conda-forge
  libsodium                      1.0.18       h36c2ea0_1           conda-forge
  libsqlite                      3.39.3       h753d276_0           conda-forge
  libstdcxx-devel_linux-64       11.3.0       h16e4278_17          conda-forge
  libstdcxx-ng                   12.1.0       ha89aaad_16          conda-forge
  libtiff                        4.4.0        h55922b4_4           conda-forge
  libuuid                        2.32.1       h7f98852_1000        conda-forge
  libwebp                        1.2.4        h522a892_0           conda-forge
  libwebp-base                   1.2.4        h166bdaf_0           conda-forge
  libxcb                         1.13         h7f98852_1004        conda-forge
  libxgboost                     1.7.1        cpu_ha3b9936_0       conda-forge
  libxml2                        2.10.2       h4c7fe37_1           conda-forge
  libxslt                        1.1.35       h8affb1d_0           conda-forge
  libzlib                        1.2.12       h166bdaf_3           conda-forge
  lxml                           4.9.1        py310h5764c6d_0      conda-forge
  lz4-c                          1.9.3        h9c3ff4c_1           conda-forge
  markupsafe                     2.1.1        py310h5764c6d_1      conda-forge
  matplotlib-base                3.6.0        py310h8d5ebf3_0      conda-forge
  matplotlib-inline              0.1.6        pyhd8ed1ab_0         conda-forge
  mistune                        2.0.4        pyhd8ed1ab_0         conda-forge
  more-itertools                 8.14.0       pyhd8ed1ab_0         conda-forge
  mpi                            1.0          mpich                conda-forge
  mpich                          4.0.3        h846660c_100         conda-forge
  munkres                        1.1.4        pyh9f0ad1d_0         conda-forge
  mypy_extensions                0.4.3        py310hff52083_5      conda-forge
  nbclient                       0.6.8        pyhd8ed1ab_0         conda-forge
  nbconvert                      7.0.0        pyhd8ed1ab_0         conda-forge
  nbconvert-core                 7.0.0        pyhd8ed1ab_0         conda-forge
  nbconvert-pandoc               7.0.0        pyhd8ed1ab_0         conda-forge
  nbformat                       5.6.1        pyhd8ed1ab_0         conda-forge
  ncurses                        6.3          h27087fc_1           conda-forge
  nest-asyncio                   1.5.5        pyhd8ed1ab_0         conda-forge
  nodeenv                        1.7.0        pyhd8ed1ab_0         conda-forge
  notebook                       6.4.12       pyha770c72_0         conda-forge
  numpy                          1.23.3       py310h53a5b5f_0      conda-forge
  numpydoc                       1.4.0        pyhd8ed1ab_1         conda-forge
  openjpeg                       2.5.0        h7d73246_1           conda-forge
  openssl                        3.0.7        h0b41bf4_1           conda-forge
  packaging                      21.3         pyhd8ed1ab_0         conda-forge
  pandas                         1.5.0        py310h769672d_0      conda-forge
  pandoc                         2.19.2       ha770c72_0           conda-forge
  pandocfilters                  1.5.0        pyhd8ed1ab_0         conda-forge
  parso                          0.8.3        pyhd8ed1ab_0         conda-forge
  pathspec                       0.10.1       pyhd8ed1ab_0         conda-forge
  pcre                           8.45         h9c3ff4c_0           conda-forge
  pcre2                          10.37        hc3806b6_1           conda-forge
  pexpect                        4.8.0        pyh9f0ad1d_2         conda-forge
  pickleshare                    0.7.5        py_1003              conda-forge
  pillow                         9.2.0        py310hbd86126_2      conda-forge
  pip                            22.2.2       pyhd8ed1ab_0         conda-forge
  pkginfo                        1.8.3        pyhd8ed1ab_0         conda-forge
  pkgutil-resolve-name           1.3.10       pyhd8ed1ab_0         conda-forge
  platformdirs                   2.5.2        pyhd8ed1ab_1         conda-forge
  pluggy                         1.0.0        py310hff52083_3      conda-forge
  pre-commit                     2.20.0       py310hff52083_0      conda-forge
  prometheus_client              0.14.1       pyhd8ed1ab_0         conda-forge
  prompt-toolkit                 3.0.31       pyha770c72_0         conda-forge
  psutil                         5.9.2        py310h5764c6d_0      conda-forge
  pthread-stubs                  0.4          h36c2ea0_1001        conda-forge
  ptyprocess                     0.7.0        pyhd3deb0d_0         conda-forge
  pure_eval                      0.2.2        pyhd8ed1ab_0         conda-forge
  py                             1.11.0       pyh6c4a22f_0         conda-forge
  py-xgboost                     1.7.1        cpu_py310hd1aba9c_0  conda-forge
  pycparser                      2.21         pyhd8ed1ab_0         conda-forge
  pygments                       2.13.0       pyhd8ed1ab_0         conda-forge
  pyopenssl                      22.0.0       pyhd8ed1ab_1         conda-forge
  pyparsing                      3.0.9        pyhd8ed1ab_0         conda-forge
  pyrsistent                     0.18.1       py310h5764c6d_1      conda-forge
  pysocks                        1.7.1        pyha2e5f31_6         conda-forge
  pytest                         7.1.3        py310hff52083_0      conda-forge
  pytest-forked                  1.4.0        pyhd8ed1ab_0         conda-forge
  pytest-xdist                   2.5.0        pyhd8ed1ab_0         conda-forge
  python                         3.10.6       ha86cf86_0_cpython   conda-forge
  python-dateutil                2.8.2        pyhd8ed1ab_0         conda-forge
  python-fastjsonschema          2.16.2       pyhd8ed1ab_0         conda-forge
  python_abi                     3.10         2_cp310              conda-forge
  pytz                           2022.2.1     pyhd8ed1ab_0         conda-forge
  pyyaml                         6.0          py310h5764c6d_4      conda-forge
  pyzmq                          24.0.1       py310h330234f_0      conda-forge
  readline                       8.1.2        h0f457ee_0           conda-forge
  readme_renderer                37.2         pyhd8ed1ab_0         conda-forge
  requests                       2.28.1       pyhd8ed1ab_1         conda-forge
  requests-toolbelt              0.9.1        py_0                 conda-forge
  rfc3986                        2.0.0        pyhd8ed1ab_0         conda-forge
  rich                           12.5.1       pyhd8ed1ab_0         conda-forge
  scikit-learn                   1.1.2        py310h0c3af53_0      conda-forge
  scikit-learn-intelex           2023.0.2     py310hff52083_0      conda-forge
  scipy                          1.9.1        py310hdfbd76f_0      conda-forge
  secretstorage                  3.3.3        py310hff52083_0      conda-forge
  send2trash                     1.8.0        pyhd8ed1ab_0         conda-forge
  setuptools                     65.4.0       pyhd8ed1ab_0         conda-forge
  six                            1.16.0       pyh6c4a22f_0         conda-forge
  snowballstemmer                2.2.0        pyhd8ed1ab_0         conda-forge
  soupsieve                      2.3.2.post1  pyhd8ed1ab_0         conda-forge
  sphinx                         5.2.2        pyhd8ed1ab_0         conda-forge
  sphinx-gallery                 0.11.1       pyhd8ed1ab_0         conda-forge
  sphinxcontrib-applehelp        1.0.2        py_0                 conda-forge
  sphinxcontrib-devhelp          1.0.2        py_0                 conda-forge
  sphinxcontrib-htmlhelp         2.0.0        pyhd8ed1ab_0         conda-forge
  sphinxcontrib-jsmath           1.0.1        py_0                 conda-forge
  sphinxcontrib-qthelp           1.0.3        py_0                 conda-forge
  sphinxcontrib-serializinghtml  1.1.5        pyhd8ed1ab_2         conda-forge
  sqlite                         3.39.3       h4ff8645_0           conda-forge
  stack_data                     0.5.1        pyhd8ed1ab_0         conda-forge
  sysroot_linux-64               2.12         he073ed8_15          conda-forge
  tbb                            2021.7.0     h924138e_1           conda-forge
  terminado                      0.16.0       pyh41d4057_0         conda-forge
  threadpoolctl                  3.1.0        pyh8a188c0_0         conda-forge
  tinycss2                       1.1.1        pyhd8ed1ab_0         conda-forge
  tk                             8.6.12       h27826a3_0           conda-forge
  toml                           0.10.2       pyhd8ed1ab_0         conda-forge
  tomli                          2.0.1        pyhd8ed1ab_0         conda-forge
  tornado                        6.2          py310h5764c6d_0      conda-forge
  tqdm                           4.64.1       pyhd8ed1ab_0         conda-forge
  traitlets                      5.4.0        pyhd8ed1ab_0         conda-forge
  twine                          4.0.1        pyhd8ed1ab_1         conda-forge
  typed-ast                      1.5.4        py310h5764c6d_0      conda-forge
  typing-extensions              4.3.0        hd8ed1ab_0           conda-forge
  typing_extensions              4.3.0        pyha770c72_0         conda-forge
  tzdata                         2022d        h191b570_0           conda-forge
  ukkonen                        1.0.1        py310hbf28c38_2      conda-forge
  unicodedata2                   14.0.0       py310h5764c6d_1      conda-forge
  urllib3                        1.26.11      pyhd8ed1ab_0         conda-forge
  virtualenv                     20.16.5      py310hff52083_0      conda-forge
  wcwidth                        0.2.5        pyh9f0ad1d_2         conda-forge
  webencodings                   0.5.1        py_1                 conda-forge
  wheel                          0.37.1       pyhd8ed1ab_0         conda-forge
  widgetsnbextension             4.0.3        pyhd8ed1ab_0         conda-forge
  xgboost                        1.7.1        cpu_py310hd1aba9c_0  conda-forge
  xorg-libxau                    1.0.9        h7f98852_0           conda-forge
  xorg-libxdmcp                  1.1.3        h7f98852_0           conda-forge
  xz                             5.2.6        h166bdaf_0           conda-forge
  yaml                           0.2.5        h7f98852_2           conda-forge
  zeromq                         4.3.4        h9c3ff4c_1           conda-forge
  zipp                           3.8.1        pyhd8ed1ab_0         conda-forge
  zlib                           1.2.12       h166bdaf_3           conda-forge
  zstd                           1.5.2        h6239696_4           conda-forge

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.