Version 0.21#
Legende für Changelogs
Hauptmerkmal etwas Großes, das Sie vorher nicht tun konnten.
Merkmal etwas, das Sie vorher nicht tun konnten.
Effizienz Ein bestehendes Merkmal erfordert nun möglicherweise weniger Rechenleistung oder Speicher.
Verbesserung eine sonstige kleinere Verbesserung.
Korrektur Etwas, das zuvor nicht wie dokumentiert – oder nach vernünftigen Erwartungen – funktionierte, sollte nun funktionieren.
API-Änderung Sie müssen Ihren Code ändern, um in Zukunft die gleiche Wirkung zu erzielen; oder ein Merkmal wird in Zukunft entfernt.
Version 0.21.3#
30. Juli 2019
Geänderte Modelle#
Die folgenden Schätzer und Funktionen können, wenn sie mit denselben Daten und Parametern angepasst werden, andere Modelle als in der vorherigen Version ergeben. Dies geschieht häufig aufgrund von Änderungen in der Modellierungslogik (Fehlerbehebungen oder Verbesserungen) oder in zufälligen Stichprobenverfahren.
Die Release Notes von v0.20.0 haben versäumt, eine Abwärtsinkompatibilität in
metrics.make_scorerzu erwähnen, wennneeds_proba=Trueundy_truebinär ist. Nun soll die Scorer-Funktion ein 1D-y_pred(d. h. Wahrscheinlichkeit der positiven Klasse, Form(n_samples,)) anstelle eines 2D-y_pred(d. h. Form(n_samples, 2)) akzeptieren.
Änderungsprotokoll#
sklearn.cluster#
Fix Fehler in
cluster.KMeansbehoben, bei dem die Berechnung mitinit='random'bein_jobs > 1odern_jobs = -1Single-Threaded war. #12955 von Prabakaran Kumaresshan.Fix Fehler in
cluster.OPTICSbehoben, bei dem Benutzer keine Float-Werte fürmin_samplesundmin_cluster_sizeübergeben konnten. #14496 von Fabian Klopfer und Hanmin Qin.Fix Fehler in
cluster.KMeansbehoben, bei dem die KMeans++-Initialisierung selten einen IndexError verursachen konnte. #11756 von Joel Nothman.
sklearn.compose#
Fix Problem in
compose.ColumnTransformerbehoben, bei dem die Verwendung von DataFrames mit unterschiedlicher Spaltenreihenfolge zwischenfitundtransformdazu führen konnte, dass falsche Spalten stillschweigend an denremainderTransformer übergeben wurden. #14237 vonAndreas Schuderer <schuderer>.
sklearn.datasets#
Fix
datasets.fetch_california_housing,datasets.fetch_covtype,datasets.fetch_kddcup99,datasets.fetch_olivetti_faces,datasets.fetch_rcv1unddatasets.fetch_species_distributionsversuchen, den zuvor zwischengespeicherten Zustand mit dem neuenjoblibzu persistieren, wenn die zwischengespeicherten Daten mit dem veraltetensklearn.externals.joblibpersistiert wurden. Dieses Verhalten wird in v0.23 als veraltet markiert und entfernt. #14197 von Adrin Jalali.
sklearn.ensemble#
Fix Fehler bei der Division durch Null in
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressorbehoben. #14024 vonNicolas Hug <NicolasHug>.
sklearn.impute#
Fix Fehler in
impute.SimpleImputerundimpute.IterativeImputerbehoben, sodass keine Fehler mehr ausgelöst werden, wenn fehlende Werte in den Trainingsdaten vorhanden sind. #13974 vonFrank Hoang <fhoang7>.
sklearn.inspection#
Fix Fehler in
inspection.plot_partial_dependencebehoben, bei dem der Parametertargetbei Multiklassenproblemen nicht berücksichtigt wurde. #14393 von Guillem G. Subies.
sklearn.linear_model#
Fix Fehler in
linear_model.LogisticRegressionCVbehoben, bei demrefit=Falseje nach Parametern'multiclass'und'penalty'fehlschlagen konnte (Regression eingeführt in 0.21). #14087 von Nicolas Hug.Fix Kompatibilitätsfix für
linear_model.ARDRegressionund Scipy>=1.3.0. Passt sich an Upstream-Änderungen des Standard-Cutoff-Schwellenwerts fürpinvhan, die andernfalls in einigen Fällen zu schlechter Genauigkeit führen. #14067 von Tim Staley.
sklearn.neighbors#
Fix Fehler in
neighbors.NeighborhoodComponentsAnalysisbehoben, bei dem die Validierung der Initialparametern_components,max_iterundtolzu strenge Datentypen erforderte. #14092 von Jérémie du Boisberranger.
sklearn.tree#
Fix Fehler in
tree.export_textbehoben, wenn der Baum nur ein Merkmal hat und ein einzelner Merkmalsname übergeben wird. #14053 vonThomas Fan.Fix Problem in
tree.plot_treebehoben, bei dem Entropieberechnungen auch für dasgini-Kriterium in DecisionTreeClassifiers angezeigt wurden. #13947 von Frank Hoang.
Version 0.21.2#
24. Mai 2019
Änderungsprotokoll#
sklearn.decomposition#
Fix Fehler in
cross_decomposition.CCAbehoben, wodurch die numerische Stabilität verbessert wird, wennYnahe Null ist. #13903 von Thomas Fan.
sklearn.metrics#
Fix Fehler in
metrics.pairwise.euclidean_distancesbehoben, bei der ein Teil der Distanzmatrix für ausreichend große float32- Datensätze nicht initialisiert wurde (Regression eingeführt in 0.21). #13910 von Jérémie du Boisberranger.
sklearn.preprocessing#
Fix Fehler in
preprocessing.OneHotEncoderbehoben, bei dem der neue Parameterdropnicht inget_feature_namesreflektiert wurde. #13894 von James Myatt.
sklearn.utils.sparsefuncs#
Fix Fehler behoben, bei dem
min_max_axisauf 32-Bit-Systemen für bestimmte große Eingaben fehlschlagen würde. Dies betrifftpreprocessing.MaxAbsScaler,preprocessing.normalizeundpreprocessing.LabelBinarizer. #13741 von Roddy MacSween.
Version 0.21.1#
17. Mai 2019
Dies ist ein Bugfix-Release, um hauptsächlich einige Paketprobleme in Version 0.21.0 zu beheben. Es enthält auch kleinere Dokumentationsverbesserungen und einige Bugfixes.
Änderungsprotokoll#
sklearn.inspection#
Fix Fehler in
inspection.partial_dependencebehoben, um nur den Klassifikator und nicht den Regressor für den Multiklassen-Multi-Output-Fall zu prüfen. #14309 von Guillaume Lemaitre.
sklearn.metrics#
Fix Fehler in
metrics.pairwise_distancesbehoben, bei derAttributeErrorfür boolesche Metriken ausgelöst wurde, wennXeinen booleschen Datentyp hatte undY == Nonewar. #13864 von Paresh Mathur.Fix Zwei Fehler in
metrics.pairwise_distancesbehoben, wennn_jobs > 1war. Erstens gab es eine Distanzmatrix mit demselben Datentyp wie die Eingabe zurück, auch für Ganzzahltypen. Dann war die Diagonale für die Euklidische Metrik nicht Null, wennYXwar. #13877 von Jérémie du Boisberranger.
sklearn.neighbors#
Fix Fehler in
neighbors.KernelDensitybehoben, der nicht aus einem Pickle wiederhergestellt werden konnte, wennsample_weightverwendet wurde. #13772 von Aditya Vyas.
Version 0.21.0#
Mai 2019
Geänderte Modelle#
Die folgenden Schätzer und Funktionen können, wenn sie mit denselben Daten und Parametern angepasst werden, andere Modelle als in der vorherigen Version ergeben. Dies geschieht häufig aufgrund von Änderungen in der Modellierungslogik (Fehlerbehebungen oder Verbesserungen) oder in zufälligen Stichprobenverfahren.
discriminant_analysis.LinearDiscriminantAnalysisfür Multiklassenklassifizierung. Fixdiscriminant_analysis.LinearDiscriminantAnalysismit 'eigen'-Solver. FixEntscheidungsbäume und abgeleitete Ensembles, wenn sowohl
max_depthals auchmax_leaf_nodesgesetzt sind. Fixlinear_model.LogisticRegressionundlinear_model.LogisticRegressionCVmit 'saga'-Solver. Fixsklearn.feature_extraction.text.HashingVectorizer,sklearn.feature_extraction.text.TfidfVectorizerundsklearn.feature_extraction.text.CountVectorizerFixsvm.SVC.decision_functionundmulticlass.OneVsOneClassifier.decision_function. Fixlinear_model.SGDClassifierund alle abgeleiteten Klassifikatoren. FixJedes Modell, das die Funktion
linear_model._sag.sag_solvermit dem Seed0verwendet, einschließlichlinear_model.LogisticRegression,linear_model.LogisticRegressionCV,linear_model.Ridgeundlinear_model.RidgeCVmit 'sag'-Solver. Fixlinear_model.RidgeCVbei Verwendung von Leave-One-Out-Kreuzvalidierung mit sparsen Eingaben. Fix
Details sind in der folgenden Changelog aufgeführt.
(Obwohl wir uns bemühen, Benutzer durch die Bereitstellung dieser Informationen besser zu informieren, können wir keine Vollständigkeit dieser Liste garantieren.)
Bekannte Hauptfehler#
Der Standardwert von
max_iterfürlinear_model.LogisticRegressionist für viele Solver bei dem Standardwert vontolzu gering. Insbesondere haben wir versehentlich den Standardwertmax_iterfür den liblinear-Solver von 1000 auf 100 Iterationen in #3591 (in Version 0.16 veröffentlicht) geändert. In einer zukünftigen Version hoffen wir, bessere Standardwerte fürmax_iterundtolheuristisch in Abhängigkeit vom Solver zu wählen (siehe #13317).
Änderungsprotokoll#
Die Unterstützung für Python 3.4 und darunter wurde offiziell eingestellt.
sklearn.base#
API-Änderung Der R2-Score, der beim Aufruf von
scoreauf einem Regressor verwendet wird, verwendet ab Version 0.23multioutput='uniform_average', um konsistent mitmetrics.r2_scorezu sein. Dies wird sich auf diescore-Methode aller Multi-Output-Regressor auswirken (mit Ausnahme vonmultioutput.MultiOutputRegressor). #13157 von Hanmin Qin.
sklearn.calibration#
Verbesserung Unterstützung hinzugefügt, um die an
calibration.calibration_curveübergebenen Daten nach Quantilen anstelle von gleichmäßig zwischen 0 und 1 zu binen. #13086 von Scott Cole.Verbesserung N-dimensionale Arrays als Eingabe für
calibration.CalibratedClassifierCVzulassen. #13485 von William de Vazelhes.
sklearn.cluster#
Hauptfunktion Ein neuer Clustering-Algorithmus:
cluster.OPTICS: ein Algorithmus, der mitcluster.DBSCANverwandt ist, einfachere Hyperparameter-Einstellungen hat und besser skaliert, von Shane, Adrin Jalali, Erich Schubert, Hanmin Qin und Assia Benbihi.Fix Fehler behoben, bei dem
cluster.Birchgelegentlich einen AttributeError auslösen konnte. #13651 von Joel Nothman.Fix Fehler in
cluster.KMeansbehoben, bei dem leere Cluster bei Verwendung von Stichprobengewichten nicht korrekt verschoben wurden. #13486 von Jérémie du Boisberranger.API-Änderung Das Attribut
n_components_incluster.AgglomerativeClusteringundcluster.FeatureAgglomerationwurde inn_connected_components_umbenannt. #13427 von Stephane Couvreur.Verbesserung
cluster.AgglomerativeClusteringundcluster.FeatureAgglomerationakzeptieren jetzt einen Parameterdistance_threshold, der verwendet werden kann, um die Cluster anstelle vonn_clusterszu finden. #9069 von Vathsala Achar und Adrin Jalali.
sklearn.compose#
API-Änderung
compose.ColumnTransformerist keine experimentelle Funktion mehr. #13835 von Hanmin Qin.
sklearn.datasets#
Korrektur Unterstützung für 64-Bit-Gruppen-IDs und Zeiger in SVMLight-Dateien hinzugefügt. #10727 von Bryan K Woods.
Korrektur
datasets.load_sample_imagesgibt Bilder in deterministischer Reihenfolge zurück. #13250 von Thomas Fan.
sklearn.decomposition#
Verbesserung
decomposition.KernelPCAhat nun deterministische Ausgaben (Lösung der Vorzeichenambiguität bei der Eigenwertzerlegung der Kernel-Matrix). #13241 von Aurélien Bellet.Korrektur Ein Fehler in
decomposition.KernelPCAwurde behoben,fit().transform()liefert nun das korrekte Ergebnis (dasselbe wiefit_transform()) im Falle von nicht entfernten Null-Eigenwerten (remove_zero_eig=False).fit_inverse_transformwurde ebenfalls beschleunigt, indem derselbe Trick wie beifit_transformverwendet wurde, um die Transformation vonXzu berechnen. #12143 von Sylvain MariéKorrektur Ein Fehler in
decomposition.NMFwurde behoben, bei deminit = 'nndsvd',init = 'nndsvda'undinit = 'nndsvdar'erlaubt waren, wennn_components < n_featuresstattn_components <= min(n_samples, n_features). #11650 von Hossein Pourbozorg und Zijie (ZJ) Poh.API-Änderung Der Standardwert des Arguments
initindecomposition.non_negative_factorizationwird in Version 0.23 vonrandomaufNonegeändert, um ihn mitdecomposition.NMFkonsistent zu machen. Eine FutureWarning wird ausgegeben, wenn der Standardwert verwendet wird. #12988 von Zijie (ZJ) Poh.
sklearn.discriminant_analysis#
Verbesserung
discriminant_analysis.LinearDiscriminantAnalysisbehält nunfloat32undfloat64dtypes bei. #8769 und #11000 von Thibault SejourneKorrektur Eine
ChangedBehaviourWarningwird nun ausgegeben, wenndiscriminant_analysis.LinearDiscriminantAnalysisder Parametern_components > min(n_features, n_classes - 1)übergeben wird undn_componentsaufmin(n_features, n_classes - 1)geändert wird. Zuvor erfolgte die Änderung, aber lautlos. #11526 von William de Vazelhes.Korrektur Ein Fehler in
discriminant_analysis.LinearDiscriminantAnalysiswurde behoben, bei dem die vorhergesagten Wahrscheinlichkeiten im Multiklassenfall falsch berechnet wurden. #6848, von Agamemnon Krasoulis undGuillaume Lemaitre <glemaitre>.Korrektur Ein Fehler in
discriminant_analysis.LinearDiscriminantAnalysiswurde behoben, bei dem die vorhergesagten Wahrscheinlichkeiten mit demeigenSolver falsch berechnet wurden. #11727, von Agamemnon Krasoulis.
sklearn.dummy#
Korrektur Ein Fehler in
dummy.DummyClassifierwurde behoben, bei dem die Methodepredict_probaein int32-Array anstelle eines float64-Arrays für diestratified-Strategie zurückgab. #13266 von Christos Aridas.Korrektur Ein Fehler in
dummy.DummyClassifierwurde behoben, bei dem zur Vorhersagezeit ein Dimensionskonflikt-Fehler auftrat, wenn währendfitein Spaltenvektorymitshape=(n, 1)übergeben wurde. #13545 von Nick Sorros und Adrin Jalali.
sklearn.ensemble#
Hauptfunktion Zwei neue Implementierungen von Gradient Boosting Trees hinzugefügt:
ensemble.HistGradientBoostingClassifierundensemble.HistGradientBoostingRegressor. Die Implementierung dieser Estimators ist inspiriert von LightGBM und kann um Größenordnungen schneller sein alsensemble.GradientBoostingRegressorundensemble.GradientBoostingClassifier, wenn die Anzahl der Samples größer als zehntausende ist. Die API dieser neuen Estimators ist leicht unterschiedlich und einige Features vonensemble.GradientBoostingClassifierundensemble.GradientBoostingRegressorwerden noch nicht unterstützt.Diese neuen Estimators sind experimentell, was bedeutet, dass ihre Ergebnisse oder ihre API ohne Deprecationszyklus geändert werden können. Um sie zu verwenden, müssen Sie explizit
enable_hist_gradient_boostingimportieren.>>> # explicitly require this experimental feature >>> from sklearn.experimental import enable_hist_gradient_boosting # noqa >>> # now you can import normally from sklearn.ensemble >>> from sklearn.ensemble import HistGradientBoostingClassifier
Hinweis
Update: Seit Version 1.0 sind diese Estimators nicht mehr experimentell und Sie müssen nicht mehr
from sklearn.experimental import enable_hist_gradient_boostingverwenden.#12807 von Nicolas Hug.
Funktion
ensemble.VotingRegressorhinzugefügt, die ein Äquivalent zuensemble.VotingClassifierfür Regressionsprobleme bietet. #12513 von Ramil Nugmanov und Mohamed Ali Jamaoui.Effizienz
ensemble.IsolationForestbevorzugt nun Threads gegenüber Prozessen, wenn mitn_jobs > 1gearbeitet wird, da die zugrunde liegenden Decision Tree-Fit-Aufrufe die GIL freigeben. Diese Änderung reduziert den Speicherverbrauch und den Kommunikationsaufwand. #12543 von Isaac Storch und Olivier Grisel.Effizienz
ensemble.IsolationForestist speichereffizienter, da die Vorhersagen jedes Baumes nicht mehr im Speicher gehalten werden. #13260 von Nicolas Goix.Effizienz
ensemble.IsolationForestverwendet nun Datenblöcke im Vorhersageschritt, wodurch die Speichernutzung begrenzt wird. #13283 von Nicolas Goix.Effizienz
sklearn.ensemble.GradientBoostingClassifierundsklearn.ensemble.GradientBoostingRegressorbehalten nun das Eingabe-alsyfloat64, um zu vermeiden, dass es intern von Bäumen kopiert wird. #13524 von Adrin Jalali.Verbesserung Die Validierung von X in
ensemble.AdaBoostClassifierundensemble.AdaBoostRegressorwurde minimiert. #13174 von Christos Aridas.Verbesserung
ensemble.IsolationForestexponiert nun den Parameterwarm_start, was die iterative Hinzufügung von Bäumen zu einem Isolation Forest ermöglicht. #13496 von Peter Marko.Korrektur Die Werte von
feature_importances_in allen auf Random Forest basierenden Modellen (d.h.ensemble.RandomForestClassifier,ensemble.RandomForestRegressor,ensemble.ExtraTreesClassifier,ensemble.ExtraTreesRegressor,ensemble.RandomTreesEmbedding,ensemble.GradientBoostingClassifierundensemble.GradientBoostingRegressor) summieren sich nunzu
1alle einzelnen Knoten in der Berechnung der Merkmalsbedeutsamkeit werden ignoriert
wenn alle Bäume nur einen einzigen Knoten haben (d.h. einen Wurzelknoten), sind die Merkmalsbedeutsamkeiten ein Array aus Nullen.
#13636 und #13620 von Adrin Jalali.
Korrektur Ein Fehler in
ensemble.GradientBoostingClassifierundensemble.GradientBoostingRegressorwurde behoben, die scikit-learn Estimators als initiale Estimators nicht unterstützten. Zusätzlich wurde die Unterstützung für initiale Estimators hinzugefügt, die keine Stichprobengewichte unterstützen. #12436 von Jérémie du Boisberranger und #12983 von Nicolas Hug.Korrektur Die Ausgabe der durchschnittlichen Pfadlänge, die in
ensemble.IsolationForestberechnet wurde, wurde korrigiert, wenn die Eingabe 0, 1 oder 2 war. #13251 von Albert Thomas und joshuakennethjones.Korrektur Ein Fehler in
ensemble.GradientBoostingClassifierwurde behoben, bei dem die Gradienten bei Multiklassen-Klassifizierungsproblemen falsch berechnet wurden. #12715 von Nicolas Hug.Korrektur Ein Fehler in
ensemble.GradientBoostingClassifierwurde behoben, bei dem Validierungsdatensätze für Early Stopping nicht mit Stratifizierung gestichprobt wurden. #13164 von Nicolas Hug.Korrektur Ein Fehler in
ensemble.GradientBoostingClassifierwurde behoben, bei dem die Standard-Initialvorhersage eines Multiklassen-Klassifikators die Klassenwahrscheinlichkeiten statt des Logarithmus der Wahrscheinlichkeiten vorhersagte. #12983 von Nicolas Hug.Korrektur Ein Fehler in
ensemble.RandomForestClassifierwurde behoben, bei dem die Methodepredictfür Multiklassen-Multi-Output-Random-Forest-Modelle fehlschlug, wenn Ziele Strings waren. #12834 von Elizabeth Sander.Korrektur Ein Fehler in
ensemble.gradient_boosting.LossFunctionundensemble.gradient_boosting.LeastSquaresErrorwurde behoben, bei dem der Standardwert vonlearning_rateinupdate_terminal_regionsnicht mit der Dokumentation und den aufrufenden Funktionen übereinstimmte. Beachten Sie jedoch, dass die direkte Verwendung dieser Verlustfunktionen veraltet ist. #6463 von movelikeriver.Korrektur
ensemble.partial_dependence(und folglich die neue Versionsklearn.inspection.partial_dependence) berücksichtigt nun Stichprobengewichte für die Berechnung der partiellen Abhängigkeit, wenn das Gradient Boosting-Modell mit Stichprobengewichten trainiert wurde. #13193 von Samuel O. Ronsin.API-Änderung
ensemble.partial_dependenceundensemble.plot_partial_dependencesind nun zugunsten voninspection.partial_dependenceundinspection.plot_partial_dependence<sklearn.inspection.plot_partial_dependence>veraltet. #12599 von Trevor Stephens und Nicolas Hug.Korrektur
ensemble.VotingClassifierundensemble.VotingRegressorschlug fehl währendfit, wenn einer der Estimators aufNonegesetzt war undsample_weightnichtNonewar. #13779 von Guillaume Lemaitre.API-Änderung
ensemble.VotingClassifierundensemble.VotingRegressorakzeptieren nun'drop', um einen Estimator zu deaktivieren, zusätzlich zuNone, um mit anderen Estimators (d.h.pipeline.FeatureUnionundcompose.ColumnTransformer) konsistent zu sein. #13780 von Guillaume Lemaitre.
sklearn.externals#
API-Änderung
externals.sixwurde veraltet, da die Unterstützung für Python 2.7 eingestellt wurde. #12916 von Hanmin Qin.
sklearn.feature_extraction#
Korrektur Wenn
input='file'oderinput='filename'und ein aufrufbares Objekt alsanalyzerübergeben wird, lesensklearn.feature_extraction.text.HashingVectorizer,sklearn.feature_extraction.text.TfidfVectorizerundsklearn.feature_extraction.text.CountVectorizerdie Daten nun aus der/den Datei(en) und übergeben sie an den gegebenenanalyzer, anstatt den/die Dateinamen oder das/die Datei-Objekt(e) an den analyzer zu übergeben. #13641 von Adrin Jalali.
sklearn.impute#
Hauptfunktion
impute.IterativeImputerhinzugefügt, eine Strategie zur Imputation fehlender Werte, indem jede Merkmal mit fehlenden Werten als Funktion anderer Merkmale in einer Round-Robin-Art modelliert wird. #8478 und #12177 von Sergey Feldman und Ben Lawson.Die API von IterativeImputer ist experimentell und kann ohne Deprecationszyklus geändert werden. Um sie zu verwenden, müssen Sie explizit
enable_iterative_imputerimportieren.>>> from sklearn.experimental import enable_iterative_imputer # noqa >>> # now you can import normally from sklearn.impute >>> from sklearn.impute import IterativeImputer
Feature Die Klassen
impute.SimpleImputerundimpute.IterativeImputerhaben einen neuen Parameter'add_indicator', der einfach eineimpute.MissingIndicatorTransformation an die Ausgabe des Imputers anhängt. Dies ermöglicht einem prädiktiven Schätzer, das Fehlen von Werten zu berücksichtigen. #12583, #13601 von Danylo Baibak.Fix In
impute.MissingIndicatorwird die implizite Verdichtung vermieden, indem eine Ausnahme ausgelöst wird, wenn die Eingabe spärlich ist und die Eigenschaftmissing_valuesauf 0 gesetzt ist. #13240 von Bartosz Telenczuk.Fix Zwei Fehler in
impute.MissingIndicatorbehoben. Erstens wurden bei spärlichemXalle nicht-Null-Werte, die nicht fehlten, in den transformierten Daten explizit zu False. Zweitens wurden beifeatures='missing-only'alle Merkmale beibehalten, auch wenn gar keine fehlenden Werte vorhanden waren. #13562 von Jérémie du Boisberranger.
sklearn.inspection#
(neues Unterpaket)
Feature Partielle Abhängigkeitsplots (
inspection.plot_partial_dependence) werden nun für jeden Regressor oder Klassifikator unterstützt (vorausgesetzt, sie haben einepredict_probaMethode). #12599 von Trevor Stephens und Nicolas Hug.
sklearn.isotonic#
Feature Zulassen unterschiedlicher Datentypen (wie float32) in
isotonic.IsotonicRegression. #8769 von Vlad Niculae
sklearn.linear_model#
Enhancement
linear_model.Ridgebehält nunfloat32undfloat64Datentypen bei. #8769 und #11000 von Guillaume Lemaitre und Joan MassichFeature
linear_model.LogisticRegressionundlinear_model.LogisticRegressionCVunterstützen nun die Elastic-Net-Strafe mit dem 'saga'-Solver. #11646 von Nicolas Hug.Feature
linear_model.lars_path_gramhinzugefügt, welcheslinear_model.lars_pathim Modus der hinreichenden Statistiken ist, was Benutzern die Berechnung vonlinear_model.lars_pathohne Angabe vonXundyermöglicht. #11699 von Kuai Yu.Efficiency
linear_model.make_datasetbehält nunfloat32undfloat64Datentypen bei und reduziert so den Speicherverbrauch bei stochastischen Gradienten-, SAG- und SAGA-Solvern. #8769 und #11000 von Nelle Varoquaux, Arthur Imbert, Guillaume Lemaitre und Joan MassichEnhancement
linear_model.LogisticRegressionunterstützt nun ein nicht-regularisiertes Ziel, wennpenalty='none'übergeben wird. Dies ist äquivalent zuC=np.infmit L2-Regularisierung. Nicht unterstützt vom liblinear-Solver. #12860 von Nicolas Hug.Enhancement Der
sparse_cgSolver inlinear_model.Ridgeunterstützt nun das Anpassen des Achsenabschnitts (d.h.fit_intercept=True), wenn die Eingaben spärlich sind. #13336 von Bartosz Telenczuk.Enhancement Der Koordinatenabstieg-Solver, der in
Lasso,ElasticNetusw. verwendet wird, gibt nun eineConvergenceWarningaus, wenn er ohne Erreichen der gewünschten Toleranz abgeschlossen wird. #11754 und #13397 von Brent Fagan und Adrin Jalali.Fix Fehler in
linear_model.LogisticRegressionundlinear_model.LogisticRegressionCVmit dem 'saga'-Solver behoben, bei dem die Gewichte in einigen Fällen nicht korrekt aktualisiert wurden. #11646 von Tom Dupre la Tour.Fix Der Posterior-Mittelwert, die Posterior-Kovarianz und die zurückgegebenen Regularisierungsparameter in
linear_model.BayesianRidgebehoben. Der Posterior-Mittelwert und die Posterior-Kovarianz wurden nicht mit der letzten Aktualisierung der Regularisierungsparameter berechnet, und die zurückgegebenen Regularisierungsparameter waren nicht die endgültigen. Formel für die marginale logarithmische Wahrscheinlichkeit zur Berechnung des Scores beicompute_score=Trueebenfalls behoben. #12174 von Albert Thomas.Fix Fehler in
linear_model.LassoLarsICbehoben, bei dem die Benutzereingabecopy_X=Falsebei der Instanzerstellung durch den Standardparameterwertcopy_X=Trueinfitüberschrieben wurde. #12972 von Lucio Fernandez-ArjonaFix Fehler in
linear_model.LinearRegressionbehoben, der nicht die gleichen Koeffizienten und Achsenabschnitte mitfit_intercept=Trueim spärlichen und dichten Fall zurückgab. #13279 von Alexandre GramfortFix Fehler in
linear_model.HuberRegressorbehoben, der bei booleschem dtype vonXkaputt war. #13328 von Alexandre Gramfort.Fix Leistungsproblem der
sagaundsagSolver behoben, wenn sie in einerjoblib.ParallelEinstellung mitn_jobs > 1undbackend="threading"aufgerufen wurden, was dazu führte, dass sie schlechter als im sequenziellen Fall liefen. #13389 von Pierre Glaser.Fix Fehler in
linear_model.stochastic_gradient.BaseSGDClassifierbehoben, der im Multiklassen-Setting auf mehreren Threads nicht deterministisch war. #13422 von Clément Doumouro.Fix Fehler in
linear_model.ridge_regression,linear_model.Ridgeundlinear_model.RidgeClassifierbehoben, der eine unbehandelte Ausnahme für die Argumentereturn_intercept=Trueundsolver=auto(Standard) oder jeden anderen Solver außersagverursachte. #13363 von Bartosz TelenczukFix
linear_model.ridge_regressionlöst nun eine Ausnahme aus, wennreturn_intercept=Trueist und der Solver vonsagabweicht. Zuvor wurde nur eine Warnung ausgegeben. #13363 von Bartosz TelenczukFix
linear_model.ridge_regressionwählt nun densparse_cgSolver für spärliche Eingaben, wennsolver=autoundsample_weightbereitgestellt wird (zuvor wurde dercholeskySolver ausgewählt). #13363 von Bartosz TelenczukAPI Change Die Verwendung von
linear_model.lars_pathmitX=Nonebei Übergabe vonGramist in Version 0.21 veraltet und wird in Version 0.23 entfernt. Verwenden Sie stattdessenlinear_model.lars_path_gram. #11699 von Kuai Yu.API Change
linear_model.logistic_regression_pathist in Version 0.21 veraltet und wird in Version 0.23 entfernt. #12821 von Nicolas Hug.Fix
linear_model.RidgeCVmit Leave-One-Out-Kreuzvalidierung passt nun korrekt einen Achsenabschnitt an, wennfit_intercept=Trueist und die Designmatrix spärlich ist. #13350 von Jérôme Dockès
sklearn.manifold#
Efficiency
manifold.trustworthinessverwendet nun einen invertierten Index anstelle einernp.where-Suche, um den Rang der Nachbarn im Eingaberaum zu finden. Dies verbessert die Effizienz insbesondere bei der Berechnung mit vielen Nachbarn und/oder kleinen Datensätzen. #9907 von William de Vazelhes.
sklearn.metrics#
Feature Die Metrik
metrics.max_errorund ein entsprechender'max_error'-Scorer für die Regression mit einzelnem Output hinzugefügt. #12232 von Krishna Sangeeth.Feature
metrics.multilabel_confusion_matrixhinzugefügt, die eine Konfusionsmatrix mit Zählungen von True Positive, False Positive, False Negative und True Negative für jede Klasse berechnet. Dies erleichtert die Berechnung von Set-basierten Metriken wie Recall, Spezifität, Fall-Out und Miss-Rate. #11179 von Shangwu Yao und Joel Nothman.Feature
metrics.jaccard_scorewurde hinzugefügt, um den Jaccard-Koeffizienten als Bewertungsmetrik für binäre, multilabel und multiklasse Aufgaben zu berechnen, mit einer Schnittstelle analog zumetrics.f1_score. #13151 von Gaurav Dhingra und Joel Nothman.Feature
metrics.pairwise.haversine_distanceshinzugefügt, die mitmetric='pairwise'übermetrics.pairwise_distancesund Schätzern zugänglich ist. (Haversine-Distanz war zuvor für die Berechnung von nächsten Nachbarn verfügbar.) #12568 von Wei Xue, Emmanuel Arias und Joel Nothman.Efficiency Schnellere
metrics.pairwise_distancesmitn_jobs> 1 durch Verwendung eines Thread-basierten Backends anstelle von Prozess-basierten Backends. #8216 von Pierre Glaser und Romuald MenuetEfficiency Die paarweisen Manhattan-Distanzen mit spärlicher Eingabe verwenden nun die von SciPy bereitgestellte BLAS anstelle der gebündelten BLAS. #12732 von Jérémie du Boisberranger
Enhancement Verwendung des Labels
accuracyanstelle vonmicro-averageinmetrics.classification_report, um Verwechslungen zu vermeiden.micro-averagewird nur für Multilabel- oder Multiklassen-Aufgaben mit einer Teilmenge von Klassen angezeigt, da es ansonsten identisch mit Genauigkeit ist. #12334 von Emmanuel Arias, Joel Nothman und Andreas MüllerEnhancement
beta-Parameter zumetrics.homogeneity_completeness_v_measureundmetrics.v_measure_scorehinzugefügt, um die Abwägung zwischen Homogenität und Vollständigkeit zu konfigurieren. #13607 von Stephane Couvreur und Ivan Sanchez.Fix Die Metrik
metrics.r2_scoreist bei einer einzelnen Stichprobe degeneriert und gibt nun NaN und eineexceptions.UndefinedMetricWarningaus. #12855 von Pawel Sendyk.Fix Fehler behoben, bei dem
metrics.brier_score_lossmanchmal ein falsches Ergebnis lieferte, wenn nur eine Klasse iny_truevorhanden war. #13628 von Hanmin Qin.Fix Fehler in
metrics.label_ranking_average_precision_scorebehoben, bei dersample_weightfür Stichproben mit degenerierten Labels nicht berücksichtigt wurde. #13447 von Dan Ellis.API Change Der Parameter
labelsinmetrics.hamming_lossist in Version 0.21 veraltet und wird in Version 0.23 entfernt. #10580 von Reshama Shaikh und Sandra Mitrovic.Fix Die Funktion
metrics.pairwise.euclidean_distancesund damit mehrere Schätzer mitmetric='euclidean'litten unter numerischen Präzisionsproblemen mitfloat32-Merkmalen. Die Präzision wurde auf Kosten eines geringen Leistungsabfalls erhöht. #13554 von @Celelibi und Jérémie du Boisberranger.API Change
metrics.jaccard_similarity_scoreist zugunsten des konsistenterenmetrics.jaccard_scoreveraltet. Das frühere Verhalten für binäre und multiklasse Ziele ist defekt. #13151 von Joel Nothman.
sklearn.mixture#
Fix Fehler in
mixture.BaseMixtureund damit in darauf basierenden Schätzern, d.h.mixture.GaussianMixtureundmixture.BayesianGaussianMixture, behoben, bei denenfit_predictundfit.predictnicht äquivalent waren. #13142 von Jérémie du Boisberranger.
sklearn.model_selection#
Feature Die Klassen
GridSearchCVundRandomizedSearchCVerlauben nunrefit=callable, um die Flexibilität bei der Identifizierung des besten Schätzers zu erhöhen. Siehe Modellkomplexität und kreuzvalidierter Score ausbalancieren. #11354 von Wenhao Zhang, Joel Nothman und Adrin Jalali.Enhancement Die Klassen
GridSearchCV,RandomizedSearchCVund die Methodencross_val_score,cross_val_predict,cross_validategeben nun Trainings-Scores aus, wennreturn_train_scoresauf True gesetzt ist undverbose> 2 ist. Fürlearning_curveundvalidation_curveist nur letzteres erforderlich. #12613 und #12669 von Marc Torrellas.Enhancement Einige CV-Splitter-Klassen und
model_selection.train_test_splitlösen nunValueErroraus, wenn die resultierende Trainingsmenge leer ist. #12861 von Nicolas Hug.Fix Behobene einen Fehler, bei dem
model_selection.StratifiedKFolddie Samples jeder Klasse mit demselbenrandom_statemischte, wasshuffle=Trueunwirksam machte. #13124 von Hanmin Qin.Fix Hinzugefügt Fähigkeit für
model_selection.cross_val_predict, Multi-Label-(und Multi-Output-Multiclass)-Ziele mit Methoden vom Typpredict_probazu verarbeiten. #8773 von Stephen Hoover.Fix Behobene ein Problem in
cross_val_predict, bei demmethod="predict_proba"immer0.0zurückgab, wenn eine der Klassen in einem Kreuzvalidierungs-Fold ausgeschlossen war. #13366 von Guillaume Fournier
sklearn.multiclass#
Fix Behobene ein Problem in
multiclass.OneVsOneClassifier.decision_function, bei dem derdecision_function-Wert eines gegebenen Samples davon abhing, ob diedecision_functionallein auf dem Sample oder auf einem Batch, das dieses Sample enthielt, ausgewertet wurde, aufgrund der Skalierung indecision_function. #10440 von Jonathan Ohayon.
sklearn.multioutput#
Fix Behobene ein Fehler in
multioutput.MultiOutputClassifier, bei dem die Methodepredict_probafälschlicherweise nach dempredict_proba-Attribut im Schätzerobjekt suchte. #12222 von Rebekah Kim
sklearn.neighbors#
Major Feature
neighbors.NeighborhoodComponentsAnalysisfür Metrik-Learning wurde hinzugefügt, die den Neighborhood Components Analysis Algorithmus implementiert. #10058 von William de Vazelhes und John Chiotellis.API Change Methoden in
neighbors.NearestNeighbors:kneighbors,radius_neighbors,kneighbors_graph,radius_neighbors_graphlösen nunNotFittedErroraus, anstattAttributeError, wenn sie vorfitaufgerufen werden. #12279 von Krishna Sangeeth.
sklearn.neural_network#
Fix Behobene ein Fehler in
neural_network.MLPClassifierundneural_network.MLPRegressor, bei dem die Optionshuffle=Falseignoriert wurde. #12582 von Sam Waterbury.Fix Behobene ein Fehler in
neural_network.MLPClassifier, bei dem Validierungssets für Early Stopping nicht stratifiziert abgeglichen wurden. Im Multi-Label-Fall werden die Splits jedoch weiterhin nicht stratifiziert. #13164 von Nicolas Hug.
sklearn.pipeline#
Feature
pipeline.Pipelinekann nun die Indexierungsnotation (z. B.my_pipeline[0:-1]) verwenden, um eine Teilsequenz von Schritten als eine weitere Pipeline-Instanz zu extrahieren. Eine Pipeline kann auch direkt indiziert werden, um einen bestimmten Schritt zu extrahieren (z. B.my_pipeline['svc']), anstatt aufnamed_stepszuzugreifen. #2568 von Joel Nothman.Feature Optionaler Parameter
verbosewurde inpipeline.Pipeline,compose.ColumnTransformerundpipeline.FeatureUnionsowie entsprechendemake_Helfer hinzugefügt, um den Fortschritt und die Zeitmessung jedes Schritts anzuzeigen. #11364 von Baze Petrushev, Karan Desai, Joel Nothman und Thomas Fan.Enhancement
pipeline.Pipelineunterstützt nun die Verwendung von'passthrough'als Transformator, mit demselben Effekt wieNone. #11144 von Thomas Fan.Enhancement
pipeline.Pipelineimplementiert__len__und daher gibtlen(pipeline)die Anzahl der Schritte in der Pipeline zurück. #13439 von Lakshya KD.
sklearn.preprocessing#
Feature
preprocessing.OneHotEncoderunterstützt nun das Weglassen eines Features pro Kategorie mit einem neuen Parameterdrop. #12908 von Drew Johnston.Efficiency
preprocessing.OneHotEncoderundpreprocessing.OrdinalEncoderverarbeiten Pandas DataFrames nun effizienter. #13253 von @maikia.Efficiency Caching von Klassen-Mappings in
preprocessing.MultiLabelBinarizer, anstatt sie jedes Mal on-the-fly zu berechnen. #12116 von Ekaterina Krivich und Joel Nothman.Efficiency
preprocessing.PolynomialFeaturesunterstützt nun komprimierte Sparse Row (CSR)-Matrizen als Eingabe für die Grade 2 und 3. Dies ist in der Regel wesentlich schneller als der dichte Fall, da es mit der Dichte der Matrix und dem Erweiterungsgrad skaliert (in der Größenordnung von Dichte^Grad) und viel, viel schneller als der komprimierte Sparse Column (CSC)-Fall. #12197 von Andrew Nystrom.Efficiency Geschwindigkeitsverbesserung in
preprocessing.PolynomialFeaturesim dichten Fall. Ein neuer Parameterorderwurde hinzugefügt, der die Ausgabereihenfolge für weitere Geschwindigkeitsverbesserungen steuert. #12251 von Tom Dupre la Tour.Fix Behobene ein Überlauf bei der Berechnung, wenn ein Float16-Datentyp mit
preprocessing.StandardScalerverwendet wurde. #13007 von Raffaello BaluyotFix Behobene ein Fehler in
preprocessing.QuantileTransformerundpreprocessing.quantile_transform, umn_quantilesauf höchstensn_sampleszu erzwingen. Werte vonn_quantiles, die größer alsn_sampleswaren, waren entweder nutzlos oder führten zu einer falschen Approximation des Schätzers für die kumulative Verteilungsfunktion. #13333 von Albert Thomas.API Change Der Standardwert für
copyinpreprocessing.quantile_transformwird vonFalseaufTruein Version 0.23 geändert, um ihn konsistenter mit den Standardwerten voncopyin anderen Funktionen vonsklearn.preprocessingzu machen und unerwartete Nebeneffekte durch Modifikation vonXinplace zu verhindern. #13459 von Hunter McGushion.
sklearn.svm#
Fix Behobene ein Problem in
svm.SVC.decision_functionwenndecision_function_shape='ovr'. Derdecision_function-Wert eines gegebenen Samples unterschied sich davon, ob diedecision_functionallein auf dem Sample oder auf einem Batch mit demselben Sample ausgewertet wurde, aufgrund der indecision_functionverwendeten Skalierung. #10440 von Jonathan Ohayon.
sklearn.tree#
Feature Entscheidungsbäume können nun mit matplotlib über
tree.plot_treegezeichnet werden, ohne auf diedot-Bibliothek angewiesen zu sein, wodurch eine schwer zu installierende Abhängigkeit entfällt. #8508 von Andreas Müller.Feature Entscheidungsbäume können nun mit
tree.export_textin einem menschenlesbaren Textformat exportiert werden. #6261 vonGiuseppe Vettigli <JustGlowing>.Feature
get_n_leaves()undget_depth()wurden zutree.BaseDecisionTreeund damit zu allen darauf basierenden Schätzern hinzugefügt, einschließlichtree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifierundtree.ExtraTreeRegressor. #12300 von Adrin Jalali.Fix Bäume und Wälder konnten zuvor keine Multi-Output-Klassifizierungsziele mit String-Labels
predict, obwohl sie infitakzeptiert wurden. #11458 von Mitar Milutinovic.Fix Behobene ein Problem mit
tree.BaseDecisionTreeund damit allen darauf basierenden Schätzern, einschließlichtree.DecisionTreeClassifier,tree.DecisionTreeRegressor,tree.ExtraTreeClassifierundtree.ExtraTreeRegressor, bei denen sie den angegebenenmax_depthum 1 überschritten, während sie den Baum erweiterten, wenn sowohlmax_leaf_nodesals auchmax_depthvom Benutzer angegeben wurden. Beachten Sie, dass dies auch alle Ensemble-Methoden betrifft, die Entscheidungsbäume verwenden. #12344 von Adrin Jalali.
sklearn.utils#
Feature
utils.resampleakzeptiert nun einen Parameterstratifyfür das Sampling gemäß Klassenverteilungen. #13549 von Nicolas Hug.API Change Der Parameter
warn_on_dtypevonutils.check_arrayundutils.check_X_ywurde als veraltet markiert. Eine explizite Warnung für die Datentypkonvertierung incheck_pairwise_arrayswurde hinzugefügt, wenn die übergebenemetriceine paarweise boolesche Metrik ist. #13382 von Prathmesh Savale.
Mehrere Module#
Major Feature Die Methode
__repr__()aller Schätzer (verwendet beim Aufrufen vonprint(estimator)) wurde komplett neu geschrieben und basiert auf der Pretty-Printing-Standardbibliothek von Python. Alle Parameter werden standardmäßig ausgegeben, dies kann jedoch mit der Optionprint_changed_onlyinsklearn.set_configgeändert werden. #11705 von Nicolas Hug.Major Feature Hinzugefügt: Estimator-Tags. Dies sind Annotationen von Schätzern, die eine programmatische Inspektion ihrer Fähigkeiten ermöglichen, wie z. B. Unterstützung für Sparse-Matrizen, unterstützte Ausgabetypen und unterstützte Methoden. Estimator-Tags bestimmen auch die Tests, die auf einem Schätzer ausgeführt werden, wenn
check_estimatoraufgerufen wird. Lesen Sie mehr im Benutzerhandbuch. #8022 von Andreas Müller.Efficiency Speicherkopien werden bei der Umwandlung von Arrays in einen anderen Datentyp in mehreren Schätzern vermieden. #11973 von Roman Yurchak.
Fix Behobene ein Fehler in der Implementierung der Hilfsfunktion
our_rand_r, die plattformübergreifend nicht konsistent funktionierte. #13422 von Madhura Parikh und Clément Doumouro.
Sonstiges#
Enhancement Joblib wird nicht mehr in scikit-learn mitgeliefert und wird zu einer Abhängigkeit. Die minimal unterstützte Version ist joblib 0.11, es wird jedoch dringend empfohlen, eine Version >= 0.13 zu verwenden. #13531 von Roman Yurchak.
Änderungen an Schätzerprüfungen#
Diese Änderungen betreffen hauptsächlich Bibliotheksentwickler.
Fügt
check_fit_idempotentzucheck_estimatorhinzu, die prüft, ob bei doppeltem Aufruf vonfitmit denselben Daten die Ausgabe vonpredict,predict_proba,transformunddecision_functionunverändert bleibt. #12328 von Nicolas HugViele Prüfungen können nun mit Estimator Tags deaktiviert oder konfiguriert werden. #8022 von Andreas Müller.
Code- und Dokumentationsbeitragende
Vielen Dank an alle, die seit Version 0.20 zur Wartung und Verbesserung des Projekts beigetragen haben, darunter
adanhawth, Aditya Vyas, Adrin Jalali, Agamemnon Krasoulis, Albert Thomas, Alberto Torres, Alexandre Gramfort, amourav, Andrea Navarrete, Andreas Mueller, Andrew Nystrom, assiaben, Aurélien Bellet, Bartosz Michałowski, Bartosz Telenczuk, bauks, BenjaStudio, bertrandhaut, Bharat Raghunathan, brentfagan, Bryan Woods, Cat Chenal, Cheuk Ting Ho, Chris Choe, Christos Aridas, Clément Doumouro, Cole Smith, Connossor, Corey Levinson, Dan Ellis, Dan Stine, Danylo Baibak, daten-kieker, Denis Kataev, Didi Bar-Zev, Dillon Gardner, Dmitry Mottl, Dmitry Vukolov, Dougal J. Sutherland, Dowon, drewmjohnston, Dror Atariah, Edward J Brown, Ekaterina Krivich, Elizabeth Sander, Emmanuel Arias, Eric Chang, Eric Larson, Erich Schubert, esvhd, Falak, Feda Curic, Federico Caselli, Frank Hoang, Fibinse Xavier, Finn O’Shea, Gabriel Marzinotto, Gabriel Vacaliuc, Gabriele Calvo, Gael Varoquaux, GauravAhlawat, Giuseppe Vettigli, Greg Gandenberger, Guillaume Fournier, Guillaume Lemaitre, Gustavo De Mari Pereira, Hanmin Qin, haroldfox, hhu-luqi, Hunter McGushion, Ian Sanders, JackLangerman, Jacopo Notarstefano, jakirkham, James Bourbeau, Jan Koch, Jan S, janvanrijn, Jarrod Millman, jdethurens, jeremiedbb, JF, joaak, Joan Massich, Joel Nothman, Jonathan Ohayon, Joris Van den Bossche, josephsalmon, Jérémie Méhault, Katrin Leinweber, ken, kms15, Koen, Kossori Aruku, Krishna Sangeeth, Kuai Yu, Kulbear, Kushal Chauhan, Kyle Jackson, Lakshya KD, Leandro Hermida, Lee Yi Jie Joel, Lily Xiong, Lisa Sarah Thomas, Loic Esteve, louib, luk-f-a, maikia, mail-liam, Manimaran, Manuel López-Ibáñez, Marc Torrellas, Marco Gaido, Marco Gorelli, MarcoGorelli, marineLM, Mark Hannel, Martin Gubri, Masstran, mathurinm, Matthew Roeschke, Max Copeland, melsyt, mferrari3, Mickaël Schoentgen, Ming Li, Mitar, Mohammad Aftab, Mohammed AbdelAal, Mohammed Ibraheem, Muhammad Hassaan Rafique, mwestt, Naoya Iijima, Nicholas Smith, Nicolas Goix, Nicolas Hug, Nikolay Shebanov, Oleksandr Pavlyk, Oliver Rausch, Olivier Grisel, Orestis, Osman, Owen Flanagan, Paul Paczuski, Pavel Soriano, pavlos kallis, Pawel Sendyk, peay, Peter, Peter Cock, Peter Hausamann, Peter Marko, Pierre Glaser, pierretallotte, Pim de Haan, Piotr Szymański, Prabakaran Kumaresshan, Pradeep Reddy Raamana, Prathmesh Savale, Pulkit Maloo, Quentin Batista, Radostin Stoyanov, Raf Baluyot, Rajdeep Dua, Ramil Nugmanov, Raúl García Calvo, Rebekah Kim, Reshama Shaikh, Rohan Lekhwani, Rohan Singh, Rohan Varma, Rohit Kapoor, Roman Feldbauer, Roman Yurchak, Romuald M, Roopam Sharma, Ryan, Rüdiger Busche, Sam Waterbury, Samuel O. Ronsin, SandroCasagrande, Scott Cole, Scott Lowe, Sebastian Raschka, Shangwu Yao, Shivam Kotwalia, Shiyu Duan, smarie, Sriharsha Hatwar, Stephen Hoover, Stephen Tierney, Stéphane Couvreur, surgan12, SylvainLan, TakingItCasual, Tashay Green, thibsej, Thomas Fan, Thomas J Fan, Thomas Moreau, Tom Dupré la Tour, Tommy, Tulio Casagrande, Umar Farouk Umar, Utkarsh Upadhyay, Vinayak Mehta, Vishaal Kapoor, Vivek Kumar, Vlad Niculae, vqean3, Wenhao Zhang, William de Vazelhes, xhan, Xing Han Lu, xinyuliu12, Yaroslav Halchenko, Zach Griffith, Zach Miller, Zayd Hammoudeh, Zhuyi Xue, Zijie (ZJ) Poh, ^__^