Scikit-learn: Stellen Sie sicher, dass alle Attribute dokumentiert sind

Erstellt am 12. Juli 2019  ·  79Kommentare  ·  Quelle: scikit-learn/scikit-learn

Wie in # 13385 beschrieben, müssen wir sicherstellen, dass alle Attribute dokumentiert sind.

Wenn Sie daran arbeiten möchten, sollten Sie ein bestimmtes Submodul auswählen und alle Nichtübereinstimmungen der Attributdokumentation in diesem Submodul beheben.

Hier ist ein Skript, um die verbleibenden zu finden (es kann einige Fehlalarme geben):

import numpy as np
from sklearn.base import clone
from sklearn.utils.testing import all_estimators
from sklearn.utils.estimator_checks import pairwise_estimator_convert_X, enforce_estimator_tags_y
from numpydoc import docscrape

ests = all_estimators()

for name, Est in ests:
    try:
        estimator_orig = Est()
    except:
        continue
    rng = np.random.RandomState(0)
    X = pairwise_estimator_convert_X(rng.rand(40, 10), estimator_orig)
    X = X.astype(object)
    y = (X[:, 0] * 4).astype(np.int)
    est = clone(estimator_orig)
    y = enforce_estimator_tags_y(est, y)
    try:
        est.fit(X, y)
    except:
        continue
    fitted_attrs = [(x, getattr(est, x, None))
                    for x in est.__dict__.keys() if x.endswith("_")
                    and not x.startswith("_")]
    doc = docscrape.ClassDoc(type(est))
    doc_attributes = []
    incorrect = []
    for att_name, type_definition, param_doc in doc['Attributes']:
        if not type_definition.strip():
            if ':' in att_name and att_name[:att_name.index(':')][-1:].strip():
                incorrect += [name +
                              ' There was no space between the param name and '
                              'colon (%r)' % att_name]
            elif name.rstrip().endswith(':'):
                incorrect += [name +
                              ' Parameter %r has an empty type spec. '
                              'Remove the colon' % (att_name.lstrip())]

        if '*' not in att_name:
            doc_attributes.append(att_name.split(':')[0].strip('` '))
    assert incorrect == []
    fitted_attrs_names = [x[0] for x in fitted_attrs]

    bad = sorted(list(set(fitted_attrs_names) ^ set(doc_attributes)))
    if len(bad) > 0:
        msg = '{}\n'.format(name) + '\n'.join(bad)
        print("Docstring Error: Attribute mismatch in " + msg)


Documentation Easy good first issue help wanted

Hilfreichster Kommentar

Fehlende Attribut-Dokumentzeichenfolgen für jeden Schätzer

Verweisen Sie in Ihrer PR auf dieses Problem

  • [x] ARDRegression, [intercept_]
  • [x] AdaBoostClassifier, [base_estimator_]
  • [x] AdaBoostRegressor, [base_estimator_]
  • [x] AdditiveChi2Sampler, [sample_interval_]
  • [x] AgglomerativeClustering, [n_components_] (veraltet)
  • [x] BaggingClassifier, [n_features_]
  • [x] BaggingRegressor, [base_estimator_, n_features_]
  • [x] BayesianGaussianMixture, [mean_precision_prior, mean_precision_prior_]
  • [x] BayesianRidge, [X_offset_, X_scale_]
  • [x] BernoulliNB, [coef_, intercept_]
  • [x] BernoulliRBM, [h_samples_]
  • [] Birke, [fit_, teilweise_fit_]
  • [] CCA, [coef_, x_mean_, x_std_, y_mean_, y_std_]
  • [x] CheckingClassifier, [classes_]
  • [x] ComplementNB, [coef_, intercept_]
  • [x] CountVectorizer, [stop_words_, vocabulary_]
  • [] DecisionTreeRegressor, [classes_, n_classes_]
  • [x] DictVectorizer, [feature_names_, vocabulary_]
  • [] DummyClassifier, [output_2d_]
  • [] DummyRegressor, [output_2d_]
  • [] ElasticNet, [dual_gap_]
  • [] ElasticNetCV, [dual_gap_]
  • [] EllipticEnvelope, [dist_, raw_covariance_, raw_location_, raw_support_]
  • [x] ExtraTreeClassifier, [feature_importances_]
  • [] ExtraTreeRegressor, [classes_, feature_importances_, n_classes_]
  • [x] ExtraTreesClassifier, [base_estimator_]
  • [x] ExtraTreesRegressor, [base_estimator_]
  • [x] FactorAnalysis, [mean_]
  • [] FeatureAgglomeration, [n_components_]
  • [x] GaussianProcessClassifier, [base_estimator_]
  • [x] GaussianRandomProjection, [components_]
  • [x] GradientBoostingClassifier, [max_features_, n_classes_, n_features_, oob_improvement_]
  • [x] GradientBoostingRegressor, [max_features_, n_classes_, n_estimators_, n_features_, oob_improvement_]
  • [x] HistGradientBoostingClassifier, [bin_mapper_, classes_, do_early_stopping_, loss_, n_features_, scorer_]
  • [x] HistGradientBoostingRegressor, [bin_mapper_, do_early_stopping_, loss_, n_features_, scorer_]
  • [x] IncrementalPCA, [batch_size_]
  • [x] IsolationForest, [base_estimator_, Estimators_features_, n_features_]
  • [x] IsotonicRegression, [X_max_, X_min_, f_]
  • [x] IterativeImputer, [random_state_]
  • [x] KNeighborsClassifier, [Klassen_, effektive_metrische_, effektive_metrische_Params_, Ausgaben_2d_]
  • [x] KNeighborsRegressor, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] KernelCenterer, [K_fit_all_, K_fit_rows_]
  • [x] KernelDensity, [tree_]
  • [x] KernelPCA, [X_transformed_fit_, dual_coef_]
  • [x] LabelBinarizer, [classes_, sparse_input_, y_type_]
  • [x] LabelEncoder, [classes_]
  • [x] LarsCV, [active_]
  • [x] Lasso, [dual_gap_]
  • [x] LassoLarsCV, [active_]
  • [x] LassoLarsIC, [alphas_]
  • [x] LatentDirichletAllocation, [bound_, doc_topic_prior_, exp_dirichlet_component_, random_state_, topic_word_prior_]
  • [x] LinearDiscriminantAnalysis, [covariance_]
  • [x] LinearRegression, [rank_, singular_]
  • [x] LinearSVC, [classes_]
  • [x] LocalOutlierFactor, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] MDS, [Unähnlichkeitsmatrix_, n_iter_]
  • [x] MLPClassifier, [best_loss_, loss_curve_, t_]
  • [x] MLPRegressor, [best_loss_, loss_curve_, t_]
  • [x] MinMaxScaler, [n_samples_seen_]
  • [x] MiniBatchDictionaryLearning, [iter_offset_]
  • [x] MiniBatchKMeans, [zählt_, init_size_, n_iter_]
  • [x] MultiLabelBinarizer, [classes_]
  • [x] MultiTaskElasticNet, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskElasticNetCV, [dual_gap_]
  • [x] MultiTaskLasso, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskLassoCV, [dual_gap_]
  • [x] NearestCentroid, [classes_]
  • [x] NearestNeighbors, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] NeighborhoodComponentsAnalysis, [random_state_]
  • [x] NuSVC, [class_weight_, fit_status_, probA_, probB_, shape_fit_]
  • [] NuSVR, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] OAS, [location_]
  • [] OneClassSVM, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] OneVsOneClassifier, [n_classes_]
  • [x] OneVsRestClassifier, [coef_, intercept_, n_classes_]
  • [x] OrthogonalMatchingPursuit, [n_nonzero_coefs_]
  • [] PLSCanonical, [coef_, x_mean_, x_std_, y_mean_, y_std_]
  • [x] PLSRegression, [x_mean_, x_std_, y_mean_, y_std_]
  • [] PLSSVD, [x_mean_, x_std_, y_mean_, y_std_]
  • [x] PassiveAggressiveClassifier, [loss_function_, t_]
  • [x] PassiveAggressiveRegressor, [t_]
  • [x] Perceptron, [loss_function_]
  • [x] QuadraticDiscriminantAnalysis, [classes_, covariance_]
  • [x] RBFSampler, [random_offset_, random_weights_]
  • [] RFE, [classes_]
  • [] RFECV, [classes_]
  • [x] RadiusNeighborsClassifier, [Klassen_, effektive_metrische_, effektive_metrische_Params_, Ausgaben_2d_]
  • [x] RadiusNeighborsRegressor, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] RandomForestClassifier, [oob_decision_function_, oob_score_]
  • [x] RandomForestRegressor, [oob_prediction_, oob_score_]
  • [x] RandomTreesEmbedding, [base_estimator_, feature_importances_, n_features_, n_outputs_, one_hot_encoder_]
  • [x] RidgeCV, [cv_values_]
  • [x] RidgeClassifier, [classes_]
  • [x] RidgeClassifierCV, [cv_values_]
  • [x] SGDClassifier, [classes_, t_]
  • [x] SGDRegressor, [durchschnittliches_Koef_, durchschnittliches_Intercept_]
  • [x] SVC, [class_weight_, shape_fit_]
  • [] SVR, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] SelectKBest, [pvalues_, score_]
  • [x] ShrunkCovariance, [Schrumpfung]
  • [x] SkewedChi2Sampler, [random_offset_, random_weights_]
  • [x] SparseRandomProjection, [Komponenten_, Dichte_]
  • [x] SpectralEmbedding, [n_neighbors_]
  • [x] TfidfVectorizer, [stop_words_, vocabulary_]

Alle 79 Kommentare

Ich habe bereits mindestens eine Nichtübereinstimmung in der Attributdokumentation in der NMF-Klassenbeschreibung gefunden. Ich denke, ich kann etwas von dieser Arbeit übernehmen. Ich bin fast bereit, einige Änderungen innerhalb der Submodule decomposition und random_projection vorzuschlagen.

Fehlende Attribut-Dokumentzeichenfolgen für jeden Schätzer

Verweisen Sie in Ihrer PR auf dieses Problem

  • [x] ARDRegression, [intercept_]
  • [x] AdaBoostClassifier, [base_estimator_]
  • [x] AdaBoostRegressor, [base_estimator_]
  • [x] AdditiveChi2Sampler, [sample_interval_]
  • [x] AgglomerativeClustering, [n_components_] (veraltet)
  • [x] BaggingClassifier, [n_features_]
  • [x] BaggingRegressor, [base_estimator_, n_features_]
  • [x] BayesianGaussianMixture, [mean_precision_prior, mean_precision_prior_]
  • [x] BayesianRidge, [X_offset_, X_scale_]
  • [x] BernoulliNB, [coef_, intercept_]
  • [x] BernoulliRBM, [h_samples_]
  • [] Birke, [fit_, teilweise_fit_]
  • [] CCA, [coef_, x_mean_, x_std_, y_mean_, y_std_]
  • [x] CheckingClassifier, [classes_]
  • [x] ComplementNB, [coef_, intercept_]
  • [x] CountVectorizer, [stop_words_, vocabulary_]
  • [] DecisionTreeRegressor, [classes_, n_classes_]
  • [x] DictVectorizer, [feature_names_, vocabulary_]
  • [] DummyClassifier, [output_2d_]
  • [] DummyRegressor, [output_2d_]
  • [] ElasticNet, [dual_gap_]
  • [] ElasticNetCV, [dual_gap_]
  • [] EllipticEnvelope, [dist_, raw_covariance_, raw_location_, raw_support_]
  • [x] ExtraTreeClassifier, [feature_importances_]
  • [] ExtraTreeRegressor, [classes_, feature_importances_, n_classes_]
  • [x] ExtraTreesClassifier, [base_estimator_]
  • [x] ExtraTreesRegressor, [base_estimator_]
  • [x] FactorAnalysis, [mean_]
  • [] FeatureAgglomeration, [n_components_]
  • [x] GaussianProcessClassifier, [base_estimator_]
  • [x] GaussianRandomProjection, [components_]
  • [x] GradientBoostingClassifier, [max_features_, n_classes_, n_features_, oob_improvement_]
  • [x] GradientBoostingRegressor, [max_features_, n_classes_, n_estimators_, n_features_, oob_improvement_]
  • [x] HistGradientBoostingClassifier, [bin_mapper_, classes_, do_early_stopping_, loss_, n_features_, scorer_]
  • [x] HistGradientBoostingRegressor, [bin_mapper_, do_early_stopping_, loss_, n_features_, scorer_]
  • [x] IncrementalPCA, [batch_size_]
  • [x] IsolationForest, [base_estimator_, Estimators_features_, n_features_]
  • [x] IsotonicRegression, [X_max_, X_min_, f_]
  • [x] IterativeImputer, [random_state_]
  • [x] KNeighborsClassifier, [Klassen_, effektive_metrische_, effektive_metrische_Params_, Ausgaben_2d_]
  • [x] KNeighborsRegressor, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] KernelCenterer, [K_fit_all_, K_fit_rows_]
  • [x] KernelDensity, [tree_]
  • [x] KernelPCA, [X_transformed_fit_, dual_coef_]
  • [x] LabelBinarizer, [classes_, sparse_input_, y_type_]
  • [x] LabelEncoder, [classes_]
  • [x] LarsCV, [active_]
  • [x] Lasso, [dual_gap_]
  • [x] LassoLarsCV, [active_]
  • [x] LassoLarsIC, [alphas_]
  • [x] LatentDirichletAllocation, [bound_, doc_topic_prior_, exp_dirichlet_component_, random_state_, topic_word_prior_]
  • [x] LinearDiscriminantAnalysis, [covariance_]
  • [x] LinearRegression, [rank_, singular_]
  • [x] LinearSVC, [classes_]
  • [x] LocalOutlierFactor, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] MDS, [Unähnlichkeitsmatrix_, n_iter_]
  • [x] MLPClassifier, [best_loss_, loss_curve_, t_]
  • [x] MLPRegressor, [best_loss_, loss_curve_, t_]
  • [x] MinMaxScaler, [n_samples_seen_]
  • [x] MiniBatchDictionaryLearning, [iter_offset_]
  • [x] MiniBatchKMeans, [zählt_, init_size_, n_iter_]
  • [x] MultiLabelBinarizer, [classes_]
  • [x] MultiTaskElasticNet, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskElasticNetCV, [dual_gap_]
  • [x] MultiTaskLasso, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskLassoCV, [dual_gap_]
  • [x] NearestCentroid, [classes_]
  • [x] NearestNeighbors, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] NeighborhoodComponentsAnalysis, [random_state_]
  • [x] NuSVC, [class_weight_, fit_status_, probA_, probB_, shape_fit_]
  • [] NuSVR, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] OAS, [location_]
  • [] OneClassSVM, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] OneVsOneClassifier, [n_classes_]
  • [x] OneVsRestClassifier, [coef_, intercept_, n_classes_]
  • [x] OrthogonalMatchingPursuit, [n_nonzero_coefs_]
  • [] PLSCanonical, [coef_, x_mean_, x_std_, y_mean_, y_std_]
  • [x] PLSRegression, [x_mean_, x_std_, y_mean_, y_std_]
  • [] PLSSVD, [x_mean_, x_std_, y_mean_, y_std_]
  • [x] PassiveAggressiveClassifier, [loss_function_, t_]
  • [x] PassiveAggressiveRegressor, [t_]
  • [x] Perceptron, [loss_function_]
  • [x] QuadraticDiscriminantAnalysis, [classes_, covariance_]
  • [x] RBFSampler, [random_offset_, random_weights_]
  • [] RFE, [classes_]
  • [] RFECV, [classes_]
  • [x] RadiusNeighborsClassifier, [Klassen_, effektive_metrische_, effektive_metrische_Params_, Ausgaben_2d_]
  • [x] RadiusNeighborsRegressor, [effektiv_metrisch_, effektiv_metrisch_params_]
  • [x] RandomForestClassifier, [oob_decision_function_, oob_score_]
  • [x] RandomForestRegressor, [oob_prediction_, oob_score_]
  • [x] RandomTreesEmbedding, [base_estimator_, feature_importances_, n_features_, n_outputs_, one_hot_encoder_]
  • [x] RidgeCV, [cv_values_]
  • [x] RidgeClassifier, [classes_]
  • [x] RidgeClassifierCV, [cv_values_]
  • [x] SGDClassifier, [classes_, t_]
  • [x] SGDRegressor, [durchschnittliches_Koef_, durchschnittliches_Intercept_]
  • [x] SVC, [class_weight_, shape_fit_]
  • [] SVR, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] SelectKBest, [pvalues_, score_]
  • [x] ShrunkCovariance, [Schrumpfung]
  • [x] SkewedChi2Sampler, [random_offset_, random_weights_]
  • [x] SparseRandomProjection, [Komponenten_, Dichte_]
  • [x] SpectralEmbedding, [n_neighbors_]
  • [x] TfidfVectorizer, [stop_words_, vocabulary_]

Ich kann die Nichtübereinstimmung der Dokumentation der Submodulattribute tree aufgreifen, einschließlich:

  • DecisionTreeRegressor, [classes_, n_classes_]
  • ExtraTreeClassifier, [classes_, max_features_, n_classes_, n_features_, n_outputs_, tree_]
  • ExtraTreeRegressor, [classes_, max_features_, n_classes_, n_features_, n_outputs_, tree_]

Ich arbeite an LinearRegression, [rank_, singular_].

Ich arbeite an LinearSVC, [n_iter_] und LinearSVR, [n_iter_]

Ich werde Gradient boosting dh

  • GradientBoostingClassifier [base_estimator_, max_features_, n_classes_, n_features_]

    • GradientBoostingRegressor [base_estimator_, classes_, max_features_, n_estimators_, n_features_]

Vergiss nicht, wo Attribute fehlen und wo nicht

Es sieht so aus, als ob es auch ein classes_ -Attribut gibt, das für Klassifizierer des Submoduls naive_bayes dokumentiert ist. Ich habe begonnen, es zu reparieren.

Ich werde an TfidfVectorizer arbeiten, [fixed_vocabulary_]

Ich werde arbeiten an:

  • RandomForestClassifier, [base_estimator_]
  • RandomForestRegressor, [base_estimator_, n_classes_]
  • ExtraTreesClassifier, [base_estimator_]
  • ExtraTreesRegressor, [base_estimator_, n_classes_]

Ich arbeite an:

  • SGDClassifier, [durchschnittliches_Koef_, durchschnittliches_Intercept_, Standard_Koef_, Standard_Interzept_]
  • SGDRegressor, [standard_coef_, standard_intercept_]

BEARBEITEN: Es wurde ein Problem geöffnet, um diese Attribute von öffentlich in privat zu ändern (Referenz: # 14364).

Ich arbeite an:
KernelCenterer, [K_fit_all_, K_fit_rows_]
MinMaxScaler, [n_samples_seen_]

Ich werde arbeiten an:

  • RandomTreesEmbedding, [base_estimator_, classes_, feature_importances_, n_classes_, n_features_, n_outputs_, one_hot_encoder_]

Ich habe auch festgestellt, dass KNeighborsClassifier , KNeighborsRegressor und möglicherweise andere Klassen des Moduls neighbors überhaupt keine Attributdokumentation haben. Derzeit wird an KNeighborsRegressor mit zwei Attributen gearbeitet:

  • effective_metric_
  • effective_metric_params_

Die KNeighborsClassifier -Klasse hat vier Attribute:

  • classes_
  • effective_metric_
  • effective_metric_params_
  • outputs_2d_

@alexitkes guter Fang. Vielen Dank!

Arbeiten an QuadraticDiscriminantAnalysis, [classes_, covariance_]

Arbeiten an KNeighborsClassifier, [classes_, effektive_metric_, effektive_metric_params_, output_2d_]
RadiusNeighborsClassifier, [Klassen_, effektiv_metrisch_, effektiv_metrisch_params_, Ausgaben_2d_]

Arbeiten an:
LinearSVC, [classes_]
NuSVC, [class_weight_, classes_, fit_status_, probA_, probB_, shape_fit_]
SVC, [class_weight_, classes_, shape_fit_]

Arbeiten an:

  • [] BaggingClassifier, [n_features_, oob_decision_function_, oob_score_]
  • [] BaggingRegressor, [base_estimator_, n_features_, oob_prediction_, oob_score_]
  • [] AdaBoostClassifier, [base_estimator_]
  • [] AdaBoostRegressor, [base_estimator_]

Arbeiten an:

CountVectorizer, [stop_words_, vocabulary_]
DictVectorizer, [feature_names_, vocabulary_]

Hallo ich!! Ich würde gerne dabei helfen. Kann mir bitte jemand sagen, wo ich anfangen soll?

Wir arbeiten an den Funktionen in dict_learning.py @spbail

Arbeiten an LinearDiscriminantAnalysis mit @ olgadk7

Arbeiten an der Nichtübereinstimmung von Attributen in RidgeClassifierCV @ npatta01

Arbeiten an DecisionTreeRegressor mit @ ingrid88 + @ npatta01

Arbeiten an LinearDiscriminantAnalysis mit @ olgadk7

Falsch positiv für das obige Attributskript. Dies wurde dokumentiert.

Arbeiten an AdditiveChi2Sampler mit @ olgadk7

Arbeiten an LabelEncoder mit @eugeniaft

werde versuchen, an randomtreeclassifier zu arbeiten!

arbeiten an

Perceptron

Arbeiten an BernoulliRBM

Arbeiten an ExtraTreeClassifer

Arbeiten an LabelEncoder mit @eugeniaft

LabelEncoder scheint keine Nichtübereinstimmung zu haben. Wir arbeiten an OneClassSVM

Ich denke, die Baumregressoren sollten stattdessen ihre Klassen ablehnen.

Arbeiten an SVR

Arbeiten an:

  • OneVsOneClassifier, [n_classes_]
  • OneVsRestClassifier, [coef_, intercept_, n_classes_]

Arbeiten an LinearRegression, [rank_, singular_]

Arbeiten an LatentDirichletAllocation, [bound_, doc_topic_prior_, exp_dirichlet_component_, random_state_, topic_word_prior_]

arbeiten an
BaggingClassifier, [n_features_, oob_decision_function_, oob_score_]
BaggingRegressor, [base_estimator_, n_features_, oob_prediction_, oob_score_]

BaggingClassifier, [n_features_, oob_decision_function_, oob_score_]
BaggingRegressor, [base_estimator_, n_features_, oob_prediction_, oob_score_]
oob_ Attribute sind Adresse in PR # 14779, n_features_ & base_estimator_ sind falsch positiv.

arbeiten an
AdaBoostClassifier, [base_estimator_]

Update: wurde bereits in https://github.com/scikit-learn/scikit-learn/pull/14477 behoben

Ich denke, wir sollten dieses Problem nicht für die nächsten Sprints empfehlen oder eine viel kuratiertere Version verwenden.

Basierend auf meinen Erfahrungen mit dem vorherigen Sprint gibt es immer noch viele Fehlalarme, und am Ende bitten wir die Mitwirkenden, öffentliche Attribute tatsächlich zu verwerfen, um sie privat zu machen, was wohl viel schwieriger ist (und frustrierend sein kann, da die Mitwirkenden das Gefühl haben, für sie gearbeitet zu haben nichts).

Ping @amueller @thomasjpfan WDYT?

Ich denke, wir sollten dieses Problem nicht für die nächsten Sprints empfehlen oder eine viel kuratiertere Version verwenden.

Wenn wir ein allgemeines Validierungswerkzeug für Docstring hätten, wie es in https://github.com/numpy/numpydoc/issues/213 vorgeschlagen wird, wäre es für die Mitwirkenden möglicherweise etwas einfacher. Obwohl ich damit einverstanden bin, dass die Tatsache, dass einige Attribute öffentlich sind, obwohl sie nicht sein sollten, nicht vollständig angesprochen wird.

TfidfVectorizer, SpectralEmbedding, SparseRandomProjection werden aktualisiert.

Ich habe mich gefragt, ob ich dieses Problem als mein erstes annehmen soll, aber nach einer zufälligen Auswahl von Submodulen, die per Skript aufgelistet sind, sind die einzigen Klassen, die ich als nicht korrekt dokumentiert fand, PLS * -Klassen. Aber sie leben in der Datei _pls_.py, die nicht öffentlich zu sein scheint. Soll ich daran arbeiten oder eine andere gute erste Ausgabe finden?

Solange die eigentlichen Klassen öffentlich sind, qualifizieren sie sich. Die öffentlichen Klassen sind in doc/modules/classes.rst . Die PLS * -Klassen sind da, also zögern Sie nicht, sie zu dokumentieren

Ist es sinnvoll, auch alle Attribute zu alphabetisieren? Ich denke, es würde dem Abschnitt Struktur verleihen und das Lesen des Abschnitts erleichtern.

@pwalchessen Ich stimme zu, klingt nach einer guten Idee. Wie persönlich erwähnt, würde ich das auch dem Test hinzufügen.

Diese scheinen immer noch offen und offensichtlich zu sein:

Docstring Error: Attribute mismatch in RidgeCV
cv_values_
Docstring Error: Attribute mismatch in RidgeClassifier
classes_
Docstring Error: Attribute mismatch in RidgeClassifierCV
classes_
cv_values_
Docstring Error: Attribute mismatch in SkewedChi2Sampler
random_offset_
random_weights_
Docstring Error: Attribute mismatch in PLSCanonical
coef_
x_mean_
x_std_
y_mean_
y_std_
Docstring Error: Attribute mismatch in PLSRegression
x_mean_
x_std_
y_mean_
y_std_
Docstring Error: Attribute mismatch in PLSSVD
x_mean_
x_std_
y_mean_
y_std_
Docstring Error: Attribute mismatch in PassiveAggressiveClassifier
loss_function_
Docstring Error: Attribute mismatch in Perceptron
loss_function_
Docstring Error: Attribute mismatch in PolynomialFeatures
powers_
Docstring Error: Attribute mismatch in QuadraticDiscriminantAnalysis
covariance_
Docstring Error: Attribute mismatch in RBFSampler
random_offset_
random_weights_
Docstring Error: Attribute mismatch in RadiusNeighborsClassifier
n_samples_fit_
outlier_label_
Docstring Error: Attribute mismatch in RadiusNeighborsRegressor
n_samples_fit_
Docstring Error: Attribute mismatch in RadiusNeighborsTransformer
effective_metric_
effective_metric_params_
n_samples_fit_
Docstring Error: Attribute mismatch in ElasticNet
dual_gap_
sparse_coef_
Docstring Error: Attribute mismatch in ElasticNetCV
dual_gap_
Docstring Error: Attribute mismatch in EllipticEnvelope
dist_
raw_covariance_
raw_location_
raw_support_

und ein paar mehr ...

Aktualisierte Liste der ausstehenden Attribute, die hinzugefügt werden müssen.

  • [] BayesianGaussianMixture

    • [x] mean_precision_prior

    • [] mean_precision_prior_

  • [] BayesianRidge

    • [] X_offset_

    • [] X_scale_

  • [] BernoulliNB

    • [] coef_ array

    • [] intercept_

  • [] Birke

    • [ ] passen_

    • [] partielle_Fassung_

  • [] CCA

    • [] coef_ array, shape (1, n_features) oder (n_classes, n_features); Koeffizient der Merkmale in der Entscheidungsfunktion.

    • [] x_mean_: Array, Form (n_Features,) Der Mittelwert über Features.

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [x] CategoricalNB

    • [x] classes_ (classes_: array, shape (n_classes,)

      Eine Liste von Klassenbezeichnungen, die dem Klassifizierer bekannt sind.

  • [] ComplementNB

    • [] coef_: Array, Form (1, n_features) oder (n_classes, n_features); Koeffizient der Merkmale in der Entscheidungsfunktion.

    • [] intercept_

  • [x] CountVectorizer

    • [x] stop_words_

    • [x] Vokabular_

  • [x] DecisionTreeClassifier

    • [x] feature_importances_

  • [] DecisionTreeRegressor

    • [] classes_: array-like, shape (n_classes,); Einzigartige Klassenbezeichnungen

    • [] n_classes_: int; Anzahl der eindeutigen Klassenbezeichnungen

    • [x] feature_importances_

  • [] DictVectorizer

    • [] feature_names_

    • [ ] Wortschatz_

  • [] DummyClassifier

    • [] output_2d_

  • [] DummyRegressor

    • [] output_2d_

  • [] ElasticNet

    • [] dual_gap_

    • [] sparse_coef_

  • [] ElasticNetCV

    • [] dual_gap_

  • [] EllipticEnvelope

    • [] dist_

    • [] raw_covariance_

    • [] raw_location_

    • [] raw_support_

  • [] ExtraTreeClassifier

    • [] feature_importances_

  • [] ExtraTreeRegressor

    • [] classes_: array-like, shape (n_classes,); Einzigartige Klassenbezeichnungen

    • [] feature_importances_

    • [] n_classes_: int; Anzahl der eindeutigen Klassenbezeichnungen

  • [] FeatureAgglomeration

    • [] n_components_

    • [x] Entfernungen_

  • [] GaussianProcessClassifier

    • [] base_estimator_

    • [x] kernel_

  • [x] GaussianRandomProjection

    • [x] components_

  • [] GradientBoostingClassifier

    • [] max_features_

    • [] n_classes_: int; Anzahl der eindeutigen Klassen.

    • [] n_features_: int; Anzahl der verwendeten Funktionen.

    • [x] oob_improvement_

    • [x] feature_importances_

  • [] GradientBoostingRegressor

    • [] max_features_

    • [] n_classes_: int; Anzahl der eindeutigen Klassen.

    • [] n_estimators_

    • [] n_features_: int; Anzahl der verwendeten Funktionen.

    • [x] oob_improvement_

    • [x] feature_importances_

  • [] HistGradientBoostingClassifier

    • [] bin_mapper_

    • [ ] Klassen_

    • [] do_early_stopping_

    • [ ] Verlust_

    • [] n_features_: int; Die Anzahl der ausgewählten Funktionen.

    • [x] n_iter_

    • [] scorer_

  • [] HistGradientBoostingRegressor

    • [] bin_mapper_

    • [] do_early_stopping_

    • [ ] Verlust_

    • [] n_features_: int; Die Anzahl der ausgewählten Funktionen.

    • []

    • [] scorer_

  • [] IncrementalPCA

    • [] batch_size_

  • [] IsolationForest

    • [] base_estimator_

    • [] Estimators_features_

    • [x] Estimators_samples_

    • [] n_features_: int; Die Anzahl der ausgewählten Funktionen.

  • [] KernelCenterer

    • [] K_fit_all_

    • [] K_fit_rows_

  • [] KernelDensity

    • [ ] Baum_

  • [] LarsCV

    • [] active_

  • [] Lasso

    • [] dual_gap_

    • [x] sparse_coef_

  • [] LassoLarsCV

    • [] active_

  • [] LassoLarsIC

    • [] alphas_

  • [] LatentDirichletAllocation

    • [x] bound_

    • [x] doc_topic_prior_

    • [] exp_dirichlet_component_

    • [] random_state_

  • [] LocalOutlierFactor

    • [] effektiv_metrisch_

    • [] effektiv_metric_params_

    • [] n_samples_fit_: int; Anzahl der Proben in den angepassten Daten.

  • [] MDS

    • [] dissimilarity_matrix_

    • [] n_iter_: int; Anzahl der Iterationen.

  • [] MLPClassifier

    • [] best_loss_

    • [] loss_curve_

    • [] t_

  • [] MLPRegressor

    • [] best_loss_

    • [] loss_curve_

    • [] t_

  • [] MiniBatchKMeans

    • [] zählt_

    • [] init_size_

    • [] n_iter_: int; Anzahl der Iterationen.

  • [] MultiTaskElasticNet

    • [] dual_gap_

    • [] eps_

    • [] sparse_coef_

  • [] MultiTaskElasticNetCV

    • [] dual_gap_

  • [] MultiTaskLasso

    • [] dual_gap_

    • [] eps_

    • [] sparse_coef_

  • [] MultiTaskLassoCV

    • [] dual_gap_

  • [] OAS

    • [ ] Standort_

  • [] OneVsRestClassifier

    • [] coef_: Array, Form (1, n_features) oder (n_classes, n_features); Koeffizient der Merkmale in der Entscheidungsfunktion.

    • [] intercept_

    • [] n_classes_: int; Anzahl der eindeutigen Klassen.

  • [] OrthogonalMatchingPursuit

    • [] n_nonzero_coefs_

  • [] PLSCanonical

    • [] coef_: Array, Form (1, n_features) oder (n_classes, n_features); Koeffizient der Merkmale in der Entscheidungsfunktion.

    • [] x_mean_: float ???; Bedeutung von

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [] PLSRegression

    • [] x_mean_

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [] PLSSVD

    • [] x_mean_

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [] PassiveAggressiveClassifier

    • [ ] verlustfunktion_

  • [] RBFSampler

    • [] random_offset_

    • [] random_weights_

  • [] ShrunkCovariance

    • [] Schrumpfung

  • [] SkewedChi2Sampler

    • [] random_offset_

    • [] random_weights_

  • [] _BaseRidgeCV

    • [] alpha_

    • [] coef_

    • [] intercept_

  • [] _ConstantPredictor

    • [] y_

  • [] _RidgeGCV

    • [] alpha_

    • [] coef_

    • [] dual_coef_

    • [] intercept_

Ich werde feature_importances_ zur Dokumentation für ExtraTreeRegressor hinzufügen

Eine Gruppe von Data Science-Majors und ich werden mit der Arbeit an der Attributdokumentation BayesianRidge [X_offset_, X_scale_] beginnen.

Hallo, unsere Gruppe von Mitwirkenden wird arbeiten an:

  • PLSSVD
  • CCA
  • Inkrementelle PCA
  • MiniBatchKMeans
  • Lasso

Mögliche Korrekturen in # 16826

Der Test wurde in # 16286 hinzugefügt.
Derzeit werden noch einige Klassen übersprungen:
https://github.com/scikit-learn/scikit-learn/blob/753da1de06a764f264c3f5f4817c9190dbe5e021/sklearn/tests/test_docstring_parameters.py#L180

Einige davon haben bereits PRs. Überprüfen Sie dies daher, bevor Sie mit der Arbeit beginnen.

Einige davon haben bereits PRs. Überprüfen Sie dies daher, bevor Sie mit der Arbeit beginnen.

Eine gute Option wäre auch, zu versuchen, offene PRs, die nicht zusammengeführt wurden, zu betrachten und zu beenden.

Als Faustregel gilt: Wenn eine PR länger als 2-3 Wochen keine Aktivität mehr hat, ist es in Ordnung, zu versuchen, sie zu übernehmen und zu beenden.

Wenn Sie an einer solchen Lösung interessiert sind, können Sie eine Erweiterung für Sphinx implementieren, die überprüft, ob alle Parameter dokumentiert oder nicht falsch geschrieben sind (ein Beispiel finden Sie hier: https://github.com/sdpython/pyquickhelper/blob /master/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py). Vielleicht kann es nützlich sein, eine benutzerdefinierte Dokumentation zur Scikit-Lerndokumentation hinzuzufügen.

@sdpython , das wäre wunderbar! Wenn Sie nicht an etwas anderem arbeiten, könnten Sie vielleicht einen PR-Entwurf vorschlagen? Vielen Dank!

Interessant!

IIRC haben wir gemeinsame Tests, die überprüfen, ob alle Attribute dokumentiert sind. Es wurde in https://github.com/scikit-learn/scikit-learn/pull/16286 hinzugefügt

Ich habe keine fundierte Meinung darüber, welcher Ansatz vorzuziehen ist, aber ich würde sagen, dass die Dokumentation der fehlenden Parameter wahrscheinlich eine höhere Priorität hat als die Entscheidung, wie wir die Überprüfung durchführen möchten.

Das Problem dabei in Sphinx, dass in unserem Fall das Erstellen einer Dokumentation lange dauert (da alle Beispiele generiert wurden), sodass ein Komponententest oder ein eigenständiges Tool einfacher zu verwenden wäre. Beachten Sie, dass wir zuvor die numpydoc-Validierung in https://github.com/scikit-learn/scikit-learn/issues/15440 verwendet haben und eine Validierung des Dokumentstrings mit Typanmerkungen unter https://github.com/terrencepreilly erfolgen kann / Darglint. Daher sollten wir wahrscheinlich vermeiden, dass 5 verschiedene Validierungswerkzeuge auch für Dokumentzeichenfolgen verwendet werden :)

Ich mag die Möglichkeit, mit pytest die Ergebnisse zu überprüfen, zum Beispiel:

pytest -v  --runxfail -k IsolationForest sklearn/tests/test_docstring_parameters.py

Vielleicht ist es nicht notwendig, unseren Sphinx-Build dafür zu ändern.

Ich habe überprüft, welche Attribut-Dokumentzeichenfolgen noch fehlen (die Liste oben ist veraltet). Dies sind die, die ich gefunden habe:

BayesianGaussianMixture, [mean_precision_prior]
BayesianRidge, [X_offset_, X_scale_]
BernoulliNB, [coef_, intercept_]
Birke, [fit_, teilweise_fit_]
CCA, [x_mean_, x_std_, y_mean_, y_std_]
DecisionTreeRegressor, [classes_, n_classes_]
DummyClassifier, [output_2d_]
DummyRegressor, [output_2d_]
ElasticNet, [dual_gap_]
ElasticNetCV, [dual_gap_]
ExtraTreeRegressor, [classes_, n_classes_]
FeatureAgglomeration, [n_components_]
LarsCV, [active_]
Lasso, [dual_gap_]
LassoLarsCV, [active_]
LassoLarsIC, [alphas_]
MiniBatchKMeans, [zählt_, init_size_, n_iter_]
MultiTaskElasticNet, [dual_gap_, eps_, sparse_coef_]
MultiTaskElasticNetCV, [dual_gap_]
MultiTaskLasso, [dual_gap_, eps_, sparse_coef_]
MultiTaskLassoCV, [dual_gap_]
NuSVR, [probA_, probB_]
OneClassSVM, [probA_, probB_]
OneVsRestClassifier, [coef_, intercept_]
OrthogonalMatchingPursuit, [n_nonzero_coefs_]
PLSCanonical, [x_mean_, x_std_, y_mean_, y_std_]
PLSSVD, [x_mean_, x_std_, y_mean_, y_std_]
SVR, [probA_, probB_]

Danke @marenwestermann!

Ich arbeite an MiniBatchKMeans

Ich arbeite an Lasso.

Ich arbeite jetzt daran, MultiTaskElasticNet und MultiTaskLasso das Attribut sparse_coef_ hinzuzufügen.

Ich arbeite an LarsCV.

@thomasjpfan heißt es in den Klassen SVR und OneClassSVM :
"Das probA_-Attribut ist in Version 0.23 veraltet und wird in Version 0.25 entfernt." und
"Das probB_-Attribut ist in Version 0.23 veraltet und wird in Version 0.25 entfernt."

Daher benötigen diese Attribute wahrscheinlich keine Dokumentation mehr, oder?
Werden diese beiden Attribute von hier aus auch in der Klasse NuSVR veraltet sein?

Die Attribute classes_ und n_classes_ für ExtraTreeRegressor sind falsch positiv.

Daher benötigen diese Attribute wahrscheinlich keine Dokumentation mehr, oder?
Werden diese beiden Attribute von hier aus auch in der Klasse NuSVR veraltet sein?

Da wir sie ablehnen, würde ich sagen, wir müssten sie nicht dokumentieren.

Die Attribute classes_ und n_classes_ für ExtraTreeRegressor sind falsch positiv.

Ja, diese sollten veraltet sein und dann entfernt werden, wenn sie nicht bereits vorhanden sind.

Die DecisionTreeRegressor Klasse sagt:
"Das Attribut n_classes_ ist ab Version 0.22 veraltet und wird in Version 0.24 entfernt."
"Das Attribut classes_ ist ab Version 0.22 veraltet und wird in Version 0.24 entfernt."

Diese Attribute benötigen also auch keine Dokumentation, oder?

Diese Attribute benötigen also auch keine Dokumentation, oder?

Richtig @Abilityguy , danke, dass hast .

Ich kann unten eine Nichtübereinstimmung in _RidgeGCV sehen:
Docstring-Fehler: Attribut-Nichtübereinstimmung in _RidgeGCV
Alpha_
bestes Ergebnis_
coef_
dual_coef_
abfangen_
n_features_in_

und in _BaseRidgeCV:
Docstring-Fehler: Nicht übereinstimmende Attribute in _BaseRidgeCV
Alpha_
bestes Ergebnis_
coef_
abfangen_
n_features_in_

Kann ich es aufnehmen? Ich bin Anfänger und möchte dazu beitragen.

@marenwestermann in der Klasse FeatureAgglomeration heißt es, dass in Version 0.21 n_connected_components_ hinzugefügt wurde, um n_components_ zu ersetzen, dann wäre n_components_ falsch positiv, oder?

@ srivathsa729 nach meinem Verständnis ja. Es wäre jedoch gut, wenn einer der Kernentwickler dies noch einmal überprüfen könnte.

Ich werde ElasticNet aufnehmen

Die Dokumentation der Attribute X_offset_ und X_scale_ für BayesianRidge wurde mit # 18607 hinzugefügt.

Das Attribut output_2d_ ist in DummyClassifier und DummyRegressor veraltet (siehe # 14933).

Ich habe das von @amueller oben in dieser PR bereitgestellte Skript ausgeführt (der Code muss leicht geändert werden, da sich die Dinge verschoben haben). Ich konnte keine weiteren Attribute finden, die dokumentiert werden müssen, mit Ausnahme von n_features_in_ das in # 16112 eingeführt wurde. Dieses Attribut ist in allen Klassen, in die es eingeführt wurde, nicht dokumentiert. Sollte es dokumentiert werden?
ping @NicolasHug

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen