Scikit-learn: Убедитесь, что все атрибуты задокументированы

Созданный на 12 июл. 2019  ·  79Комментарии  ·  Источник: scikit-learn/scikit-learn

как обсуждалось в # 13385, мы должны убедиться, что все атрибуты задокументированы.

если вы хотите поработать над этим, вы должны выбрать конкретный подмодуль и исправить все несоответствия документации атрибутов в этом подмодуле.

Вот сценарий для поиска оставшихся (могут быть ложные срабатывания):

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

Самый полезный комментарий

Отсутствуют строки документации атрибутов для каждого оценщика

Укажите эту проблему в своем PR

  • [x] ARDRegression, [intercept_]
  • [x] AdaBoostClassifier, [base_estimator_]
  • [x] AdaBoostRegressor, [base_estimator_]
  • [x] AdditiveChi2Sampler, [sample_interval_]
  • [x] AgglomerativeClustering, [n_components_] (не рекомендуется)
  • [x] BaggingClassifier, [n_features_]
  • [x] BaggingRegressor, [base_estimator_, n_features_]
  • [x] Байесовская гауссовская смесь, [mean_precision_prior, mean_precision_prior_]
  • [x] Байесовский гребень, [X_offset_, X_scale_]
  • [x] BernoulliNB, [coef_, intercept_]
  • [x] BernoulliRBM, [h_samples_]
  • [] Береза, [fit_, partial_fit_]
  • [] CCA, [coef_, x_mean_, x_std_, y_mean_, y_std_]
  • [x] CheckingClassifier, [классы_]
  • [x] ComplementNB, [coef_, intercept_]
  • [x] CountVectorizer, [стоп_слова_, словарь_]
  • [] DecisionTreeRegressor, [классы_, n_classes_]
  • [x] DictVectorizer, [имена_компонентов_, словарь_]
  • [] 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, [классы_, feature_importances_, n_classes_]
  • [x] ExtraTreesClassifier, [base_estimator_]
  • [x] ExtraTreesRegressor, [base_estimator_]
  • [x] FactorAnalysis, [среднее_]
  • [] FeatureAgglomeration, [n_components_]
  • [x] GaussianProcessClassifier, [base_estimator_]
  • [x] GaussianRandomProjection, [компоненты_]
  • [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] Изотоническая регрессия, [X_max_, X_min_, f_]
  • [x] IterativeImputer, [random_state_]
  • [x] KNeighborsClassifier, [классы_, эффективная_метрика_, эффективная_метрика_парам_, выходы_2d_]
  • [x] KNeighborsRegressor, [эффективная_метрика_, эффективная_метрика_парам_]
  • [x] KernelCenterer, [K_fit_all_, K_fit_rows_]
  • [x] KernelDensity, [tree_]
  • [x] KernelPCA, [X_transformed_fit_, dual_coef_]
  • [x] LabelBinarizer, [классы_, sparse_input_, y_type_]
  • [x] LabelEncoder, [классы_]
  • [x] LarsCV, [active_]
  • [x] Лассо, [dual_gap_]
  • [x] LassoLarsCV, [active_]
  • [x] LassoLarsIC, [alphas_]
  • [x] LatentDirichletAllocation, [bound_, doc_topic_prior_, exp_dirichlet_component_, random_state_, topic_word_prior_]
  • [x] LinearDiscriminantAnalysis, [ковариация_]
  • [x] LinearRegression, [rank_, singular_]
  • [x] LinearSVC, [классы_]
  • [x] LocalOutlierFactor, [эффективная_метрика_, эффективная_метрика_парам_]
  • [x] MDS, [матрица различий_, 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, [counts_, init_size_, n_iter_]
  • [x] MultiLabelBinarizer, [классы_]
  • [x] MultiTaskElasticNet, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskElasticNetCV, [dual_gap_]
  • [x] MultiTaskLasso, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskLassoCV, [dual_gap_]
  • [x] NearestCentroid, [классы_]
  • [x] Ближайшие соседи, [эффективная_метрика_, эффективная_метрика_парам_]
  • [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] Персептрон, [loss_function_]
  • [x] QuadraticDiscriminantAnalysis, [классы_, ковариация_]
  • [x] RBFSampler, [random_offset_, random_weights_]
  • [] RFE, [классы_]
  • [] RFECV, [классы_]
  • [x] RadiusNeighborsClassifier, [классы_, эффективная_метрика_, эффективная_метрика_парам_, выходы_2d_]
  • [x] RadiusNeighborsRegressor, [эффективная_метрика_, эффективная_метрика_парам_]
  • [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, [классы_]
  • [x] RidgeClassifierCV, [cv_values_]
  • [x] SGDClassifier, [классы_, t_]
  • [x] SGDRegressor, [average_coef_, average_intercept_]
  • [x] SVC, [class_weight_, shape_fit_]
  • [] SVR, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] SelectKBest, [pvalues_, scores_]
  • [x] ShrunkCovariance, [усадка]
  • [x] SkewedChi2Sampler, [random_offset_, random_weights_]
  • [x] SparseRandomProjection, [компоненты_, плотность_]
  • [x] SpectralEmbedding, [n_neighbors_]
  • [x] TfidfVectorizer, [стоп_слова_, словарь_]

Все 79 Комментарий

Я уже нашел по крайней мере одно несоответствие в атрибутивной документации в описании класса NMF. Думаю, я смогу взять часть этой работы. Я почти готов предложить некоторые изменения в подмодулях decomposition и random_projection .

Отсутствуют строки документации атрибутов для каждого оценщика

Укажите эту проблему в своем PR

  • [x] ARDRegression, [intercept_]
  • [x] AdaBoostClassifier, [base_estimator_]
  • [x] AdaBoostRegressor, [base_estimator_]
  • [x] AdditiveChi2Sampler, [sample_interval_]
  • [x] AgglomerativeClustering, [n_components_] (не рекомендуется)
  • [x] BaggingClassifier, [n_features_]
  • [x] BaggingRegressor, [base_estimator_, n_features_]
  • [x] Байесовская гауссовская смесь, [mean_precision_prior, mean_precision_prior_]
  • [x] Байесовский гребень, [X_offset_, X_scale_]
  • [x] BernoulliNB, [coef_, intercept_]
  • [x] BernoulliRBM, [h_samples_]
  • [] Береза, [fit_, partial_fit_]
  • [] CCA, [coef_, x_mean_, x_std_, y_mean_, y_std_]
  • [x] CheckingClassifier, [классы_]
  • [x] ComplementNB, [coef_, intercept_]
  • [x] CountVectorizer, [стоп_слова_, словарь_]
  • [] DecisionTreeRegressor, [классы_, n_classes_]
  • [x] DictVectorizer, [имена_компонентов_, словарь_]
  • [] 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, [классы_, feature_importances_, n_classes_]
  • [x] ExtraTreesClassifier, [base_estimator_]
  • [x] ExtraTreesRegressor, [base_estimator_]
  • [x] FactorAnalysis, [среднее_]
  • [] FeatureAgglomeration, [n_components_]
  • [x] GaussianProcessClassifier, [base_estimator_]
  • [x] GaussianRandomProjection, [компоненты_]
  • [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] Изотоническая регрессия, [X_max_, X_min_, f_]
  • [x] IterativeImputer, [random_state_]
  • [x] KNeighborsClassifier, [классы_, эффективная_метрика_, эффективная_метрика_парам_, выходы_2d_]
  • [x] KNeighborsRegressor, [эффективная_метрика_, эффективная_метрика_парам_]
  • [x] KernelCenterer, [K_fit_all_, K_fit_rows_]
  • [x] KernelDensity, [tree_]
  • [x] KernelPCA, [X_transformed_fit_, dual_coef_]
  • [x] LabelBinarizer, [классы_, sparse_input_, y_type_]
  • [x] LabelEncoder, [классы_]
  • [x] LarsCV, [active_]
  • [x] Лассо, [dual_gap_]
  • [x] LassoLarsCV, [active_]
  • [x] LassoLarsIC, [alphas_]
  • [x] LatentDirichletAllocation, [bound_, doc_topic_prior_, exp_dirichlet_component_, random_state_, topic_word_prior_]
  • [x] LinearDiscriminantAnalysis, [ковариация_]
  • [x] LinearRegression, [rank_, singular_]
  • [x] LinearSVC, [классы_]
  • [x] LocalOutlierFactor, [эффективная_метрика_, эффективная_метрика_парам_]
  • [x] MDS, [матрица различий_, 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, [counts_, init_size_, n_iter_]
  • [x] MultiLabelBinarizer, [классы_]
  • [x] MultiTaskElasticNet, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskElasticNetCV, [dual_gap_]
  • [x] MultiTaskLasso, [dual_gap_, eps_, sparse_coef_]
  • [x] MultiTaskLassoCV, [dual_gap_]
  • [x] NearestCentroid, [классы_]
  • [x] Ближайшие соседи, [эффективная_метрика_, эффективная_метрика_парам_]
  • [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] Персептрон, [loss_function_]
  • [x] QuadraticDiscriminantAnalysis, [классы_, ковариация_]
  • [x] RBFSampler, [random_offset_, random_weights_]
  • [] RFE, [классы_]
  • [] RFECV, [классы_]
  • [x] RadiusNeighborsClassifier, [классы_, эффективная_метрика_, эффективная_метрика_парам_, выходы_2d_]
  • [x] RadiusNeighborsRegressor, [эффективная_метрика_, эффективная_метрика_парам_]
  • [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, [классы_]
  • [x] RidgeClassifierCV, [cv_values_]
  • [x] SGDClassifier, [классы_, t_]
  • [x] SGDRegressor, [average_coef_, average_intercept_]
  • [x] SVC, [class_weight_, shape_fit_]
  • [] SVR, [class_weight_, fit_status_, n_support_, probA_, probB_, shape_fit_]
  • [x] SelectKBest, [pvalues_, scores_]
  • [x] ShrunkCovariance, [усадка]
  • [x] SkewedChi2Sampler, [random_offset_, random_weights_]
  • [x] SparseRandomProjection, [компоненты_, плотность_]
  • [x] SpectralEmbedding, [n_neighbors_]
  • [x] TfidfVectorizer, [стоп_слова_, словарь_]

Я могу устранить несоответствия в документации по атрибутам подмодуля tree , в том числе:

  • DecisionTreeRegressor, [классы_, n_classes_]
  • ExtraTreeClassifier, [классы_, max_features_, n_classes_, n_features_, n_outputs_, tree_]
  • ExtraTreeRegressor, [классы_, max_features_, n_classes_, n_features_, n_outputs_, tree_]

Я работаю над LinearRegression, [rank_, singular_].

Я работаю над LinearSVC, [n_iter_] и LinearSVR, [n_iter_]

Я возьму Gradient boosting ie

  • GradientBoostingClassifier [base_estimator_, max_features_, n_classes_, n_features_]

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

неважно, неправильно прочитал, где атрибуты отсутствуют, а где нет

Похоже, есть также недокументированный атрибут classes_ для классификаторов подмодуля naive_bayes . Я начал это исправлять.

Я буду работать над TfidfVectorizer, [fixed_vocabulary_]

Буду работать над:

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

Я работаю на:

  • SGDClassifier, [средний_ коэффициент_, средний_ интервал_, стандартный_ коэффициент_, стандартный_ интервал_]
  • SGDRegressor, [standard_coef_, standard_intercept_]

РЕДАКТИРОВАТЬ: открыла проблему для изменения этих атрибутов с общедоступных на частные (ссылка: # 14364)

Я работаю над:
KernelCenterer, [K_fit_all_, K_fit_rows_]
MinMaxScaler, [n_samples_seen_]

Буду работать над:

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

Я также обнаружил, что модули KNeighborsClassifier , KNeighborsRegressor и, возможно, другие классы модуля neighbors вообще не имеют документации по атрибутам. В настоящее время работает над KNeighborsRegressor с двумя атрибутами:

  • effective_metric_
  • effective_metric_params_

Класс KNeighborsClassifier имеет четыре атрибута:

  • classes_
  • effective_metric_
  • effective_metric_params_
  • outputs_2d_

@alexitkes хороший улов. Благодаря!

Работа над QuadraticDiscriminantAnalysis, [классы_, ковариация_]

Работа над KNeighborsClassifier, [классы_, эффективная_метрика_, эффективная_метрика_парам_, выходы_2d_]
RadiusNeighborsClassifier, [классы_, эффективная_метрика_, эффективная_метрика_парам_, выходы_2d_]

Работа над:
LinearSVC, [классы_]
NuSVC, [class_weight_, classes_, fit_status_, probA_, probB_, shape_fit_]
SVC, [class_weight_, classes_, shape_fit_]

Работа над:

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

Работа над:

CountVectorizer, [стоп-слова_, словарь_]
DictVectorizer, [имена_компонентов_, словарь_]

Привет !! Я хотел бы помочь с этим .. Может кто-нибудь, пожалуйста, скажите мне, с чего мне начать ??

Работаем над функциями в dict_learning.py @spbail

Работа над LinearDiscriminantAnalysis с @ olgadk7

Работа над несовпадением атрибутов в RidgeClassifierCV @ npatta01

Работа над DecisionTreeRegressor с @ ingrid88 + @ npatta01

Работа над LinearDiscriminantAnalysis с @ olgadk7

Ложное срабатывание для сценария атрибута выше. Это было задокументировано.

Работа над AdditiveChi2Sampler с @ olgadk7

Работа над LabelEncoder с @eugeniaft

попробую поработать на randomtreeclassifier!

работа над

Перцептрон

работает над BernoulliRBM

Работа над ExtraTreeClassifer

Работа над LabelEncoder с @eugeniaft

LabelEncoder выглядит так, будто в нем нет несоответствий, мы работаем над OneClassSVM

Я думаю, что древовидные регрессоры должны вместо этого отказаться от своих классов.

работает над SVR

Работа над:

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

работает над LinearRegression, [rank_, singular_]

работает над LatentDirichletAllocation, [bound_, doc_topic_prior_, exp_dirichlet_component_, random_state_, topic_word_prior_]

работа над
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_ - это адрес в PR # 14779, n_features_ и base_estimator_ - ложные срабатывания.

работа над
AdaBoostClassifier, [base_estimator_]

Обновление: уже исправлено в https://github.com/scikit-learn/scikit-learn/pull/14477

Я думаю, что мы не должны рекомендовать эту проблему для следующих спринтов или использовать более тщательно подобранную версию.

Основываясь на моем опыте предыдущего спринта, все еще остается много ложных срабатываний, и в конечном итоге мы просим участников фактически отказаться от общедоступных атрибутов, чтобы сделать их закрытыми, что, возможно, намного сложнее (и может расстраивать, поскольку участники считают, что они работали на ничего).

Пинговать @amueller @thomasjpfan WDYT?

Я думаю, что мы не должны рекомендовать эту проблему для следующих спринтов или использовать более тщательно подобранную версию.

Может быть, если бы у нас был общий инструмент проверки для строки документации, такой как предложенный в https://github.com/numpy/numpydoc/issues/213, для участников было бы немного проще. Хотя я согласен с тем, что он не полностью учитывает тот факт, что некоторые атрибуты являются общедоступными, хотя этого не должно быть.

TfidfVectorizer, SpectralEmbedding, SparseRandomProjection обновляются.

Мне было интересно взять эту проблему в качестве своей первой, но после некоторого случайного выбора подмодулей, перечисленных скриптом, единственными классами, которые я обнаружил как неправильно задокументированные, являются классы PLS *. Но они живут в файле _pls_.py, который не является общедоступным. Должен ли я работать над ними или найти другой хороший первый выпуск?

Пока фактические классы являются общедоступными, они имеют право. Открытые классы перечислены в doc/modules/classes.rst . Классы PLS * есть, поэтому не стесняйтесь их документировать

Имеет ли смысл расположить все атрибуты в алфавитном порядке? Я думаю, это обеспечит структуру раздела и упростит его чтение.

@pwalchessen Я согласен, звучит как хорошая идея. Как упоминалось лично, я бы тоже добавил это к тесту.

Они все еще кажутся открытыми и очевидными:

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_

и еще много чего ...

Обновлен список выдающихся атрибутов, которые необходимо добавить.

  • [] Байесовская гауссовская смесь

    • [x] mean_precision_prior

    • [] mean_precision_prior_

  • [] Байесовский хребет

    • [] X_offset_

    • [] X_scale_

  • [] BernoulliNB

    • [] coef_ array

    • [] перехват_

  • [] Береза

    • [ ] поместиться_

    • [] partial_fit_

  • [] CCA

    • [] coef_ array, shape (1, n_features) или (n_classes, n_features); Коэффициент признаков в решающей функции.

    • [] x_mean_: array, shape (n_features,) Среднее по характеристикам.

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [x] КатегориальныйNB

    • [x] classes_ (классы_: массив, форма (n_classes,)

      Список меток классов, известных классификатору.

  • [] ComplementNB

    • [] coef_: массив, форма (1, n_features) или (n_classes, n_features); Коэффициент признаков в решающей функции.

    • [] перехват_

  • [x] CountVectorizer

    • [x] stop_words_

    • [x] словарь_

  • [x] DecisionTreeClassifier

    • [x] feature_importances_

  • [] DecisionTreeRegressor

    • [] классы_: массив, форма (n_classes,); Уникальные метки классов

    • [] n_classes_: int; Количество уникальных меток классов

    • [x] feature_importances_

  • [] DictVectorizer

    • [] feature_names_

    • [ ] запас слов_

  • [] 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

    • [] классы_: массив, форма (n_classes,); Уникальные метки классов

    • [] feature_importances_

    • [] n_classes_: int; Количество уникальных меток классов

  • [] FeatureAgglomeration

    • [] n_components_

    • [x] расстояния_

  • [] GaussianProcessClassifier

    • [] base_estimator_

    • [x] ядро_

  • [x] GaussianRandomProjection

    • [x] компоненты_

  • [] GradientBoostingClassifier

    • [] max_features_

    • [] n_classes_: int; Количество уникальных классов.

    • [] n_features_: int; Количество используемых функций.

    • [x] oob_improvement_

    • [x] feature_importances_

  • [] GradientBoostingRegressor

    • [] max_features_

    • [] n_classes_: int; Количество уникальных классов.

    • [] n_estimators_

    • [] n_features_: int; Количество используемых функций.

    • [x] oob_improvement_

    • [x] feature_importances_

  • [] HistGradientBoostingClassifier

    • [] bin_mapper_

    • [] классы_

    • [] do_early_stopping_

    • [] loss_

    • [] n_features_: int; Количество выбранных функций.

    • [x] n_iter_

    • [] бомбардир_

  • [] HistGradientBoostingRegressor

    • [] bin_mapper_

    • [] do_early_stopping_

    • [] loss_

    • [] n_features_: int; Количество выбранных функций.

    • []

    • [] бомбардир_

  • [] IncrementalPCA

    • [ ] размер партии_

  • [] IsolationForest

    • [] base_estimator_

    • [] Estimators_features_

    • [x] Estimators_samples_

    • [] n_features_: int; Количество выбранных функций.

  • [] KernelCenterer

    • [] K_fit_all_

    • [] K_fit_rows_

  • [] KernelDensity

    • [] дерево_

  • [] LarsCV

    • [] active_

  • [] Лассо

    • [] dual_gap_

    • [x] sparse_coef_

  • [] LassoLarsCV

    • [] active_

  • [] LassoLarsIC

    • [] alphas_

  • [] LatentDirichletAllocation

    • [x] bound_

    • [x] doc_topic_prior_

    • [] exp_dirichlet_component_

    • [] random_state_

  • [] LocalOutlierFactor

    • [] эффективная_метрика_

    • [] effective_metric_params_

    • [] n_samples_fit_: int; Количество выборок в подобранных данных.

  • [] MDS

    • [] матрица различий_

    • [] n_iter_: int; Количество итераций.

  • [] MLPClassifier

    • [] best_loss_

    • [] кривая_ потери_

    • [] t_

  • [] MLPRegressor

    • [] best_loss_

    • [] кривая_ потери_

    • [] t_

  • [] MiniBatchKMeans

    • [] counts_

    • [] init_size_

    • [] n_iter_: int; Количество итераций.

  • [] MultiTaskElasticNet

    • [] dual_gap_

    • [] eps_

    • [] sparse_coef_

  • [] MultiTaskElasticNetCV

    • [] dual_gap_

  • [] MultiTaskLasso

    • [] dual_gap_

    • [] eps_

    • [] sparse_coef_

  • [] MultiTaskLassoCV

    • [] dual_gap_

  • [] OAS

    • [ ] расположение_

  • [] OneVsRestClassifier

    • [] coef_: массив, форма (1, n_features) или (n_classes, n_features); Коэффициент признаков в решающей функции.

    • [] перехват_

    • [] n_classes_: int; Количество уникальных классов.

  • [] OrthogonalMatchingPursuit

    • [] n_nonzero_coefs_

  • [] PLSCanonical

    • [] coef_: массив, форма (1, n_features) или (n_classes, n_features); Коэффициент признаков в решающей функции.

    • [] x_mean_: float ???; Среднее значение

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [] PLSRegression

    • [] x_mean_

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [] ПЛССВД

    • [] x_mean_

    • [] x_std_

    • [] y_mean_

    • [] y_std_

  • [] PassiveAggressiveClassifier

    • [] loss_function_

  • [] RBFSampler

    • [] random_offset_

    • [] random_weights_

  • [] ShrunkCovariance

    • [] усадка

  • [] SkewedChi2Sampler

    • [] random_offset_

    • [] random_weights_

  • [] _BaseRidgeCV

    • [] альфа_

    • [] coef_

    • [] перехват_

  • [] _ConstantPredictor

    • [] y_

  • [] _RidgeGCV

    • [] альфа_

    • [] coef_

    • [] dual_coef_

    • [] перехват_

Я собираюсь добавить feature_importances_ в документацию для ExtraTreeRegressor

Мы с группой специалистов по науке о данных начнем работу над документацией по атрибутам BayesianRidge, [X_offset_, X_scale_].

Привет, наша группа участников будет работать над:

  • ПЛССВД
  • CCA
  • Инкрементальный PCA
  • MiniBatchKMeans
  • Лассо

Возможные исправления в # 16826

Тест был добавлен в # 16286.
В настоящее время есть еще несколько пропущенных занятий:
https://github.com/scikit-learn/scikit-learn/blob/753da1de06a764f264c3f5f4817c9190dbe5e021/sklearn/tests/test_docstring_parameters.py#L180

У некоторых из них уже есть PR, поэтому обязательно проверьте их, прежде чем начинать работу над этим.

У некоторых из них уже есть PR, поэтому обязательно проверьте их, прежде чем начинать работу над этим.

Хорошим вариантом было бы также попытаться посмотреть на открытые PR, которые не были объединены, и попытаться завершить их.

Как показывает практика, если PR не проявляет активности более 2-3 недель, можно попытаться взять его на себя и попытаться закончить.

Если вы заинтересованы в таком решении, есть способ реализовать расширение для sphinx, которое проверяет, все ли параметры задокументированы или не указаны неправильно (вы можете увидеть пример здесь: https://github.com/sdpython/pyquickhelper/blob /master/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py). Может быть, будет полезно добавить собственный в документацию scikit-learn.

@sdpython , это было бы замечательно! Если вы не работаете над чем-то другим, возможно, вы могли бы предложить проект PR? Благодаря!

Интересно!

IIRC у нас есть общие тесты, которые проверяют, что все атрибуты задокументированы. Он был добавлен в https://github.com/scikit-learn/scikit-learn/pull/16286. Также я, кажется, помню, что у меня-питона было нечто подобное.

У меня нет информированного мнения о том, какой подход предпочтительнее, но я бы сказал, что документирование недостающих параметров, вероятно, является более приоритетным, чем решение, как мы хотим проводить проверку.

Проблема с выполнением этого в sphinx, что в нашем случае создание документации занимает много времени (из-за генерации всех примеров), поэтому будет проще использовать модульный тест или автономный инструмент. Обратите внимание, что ранее мы использовали проверку numpydoc в https://github.com/scikit-learn/scikit-learn/issues/15440, а некоторая проверка строки документации с аннотациями типов могла быть выполнена с помощью https://github.com/terrencepreilly / дарглинт. Поэтому нам, вероятно, следует избегать ситуации использования 5 различных инструментов проверки для строк документации :)

Мне нравится возможность использовать pytest для проверки результатов, например:

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

так что, возможно, нет необходимости менять нашу сборку sphinx для этого.

Я проверил, какие строки документации атрибутов все еще отсутствуют (список выше устарел). Вот те, которые я нашел:

Байесовско-гауссовское смешение, [mean_precision_prior]
Байесовский гребень, [X_offset_, X_scale_]
БернуллиNB, [coef_, intercept_]
Береза, [fit_, partial_fit_]
CCA, [x_mean_, x_std_, y_mean_, y_std_]
DecisionTreeRegressor, [классы_, n_classes_]
DummyClassifier, [output_2d_]
DummyRegressor, [output_2d_]
ElasticNet, [dual_gap_]
ElasticNetCV, [dual_gap_]
ExtraTreeRegressor, [классы_, n_classes_]
FeatureAgglomeration, [n_components_]
LarsCV, [active_]
Лассо, [dual_gap_]
LassoLarsCV, [active_]
LassoLarsIC, [alphas_]
MiniBatchKMeans, [counts_, 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_]

Спасибо, @marenwestermann!

Я работаю над MiniBatchKMeans

Я работаю над Лассо.

Сейчас я работаю над добавлением атрибута sparse_coef_ в MultiTaskElasticNet и MultiTaskLasso.

Я работаю над LarsCV.

@thomasjpfan в классах SVR и OneClassSVM сказано:
«Атрибут probA_ устарел в версии 0.23 и будет удален в версии 0.25». и
«Атрибут probB_ устарел в версии 0.23 и будет удален в версии 0.25».

Следовательно, эти атрибуты, вероятно, больше не нуждаются в документации, верно?
Исходя из этого, будут ли эти два атрибута устаревшими в классе NuSVR ?

Атрибуты classes_ и n_classes_ для ExtraTreeRegressor являются ложными срабатываниями.

Следовательно, эти атрибуты, вероятно, больше не нуждаются в документации, верно?
Будут ли эти два атрибута устаревшими в классе NuSVR?

Поскольку мы осуждаем их, я бы сказал, что нам не нужно их документировать.

Атрибуты classes_ и n_classes_ для ExtraTreeRegressor являются ложными срабатываниями.

Да, они должны быть устаревшими, а затем удалены, если они еще не были.

Класс DecisionTreeRegressor говорит:
«Атрибут n_classes_ не рекомендуется использовать в версии 0.22 и будет удален в версии 0.24».
«Атрибут classes_ устарел с версии 0.22 и будет удален в версии 0.24».

Значит, эти атрибуты тоже не нуждаются в документации?

Значит, эти атрибуты тоже не нуждаются в документации?

Правильно, @Abilityguy , спасибо, что указали на это.

Я вижу ниже несоответствие в _RidgeGCV:
Ошибка строки документации: несоответствие атрибутов в _RidgeGCV
альфа_
лучший результат_
coef_
dual_coef_
intercept_
n_features_in_

и в _BaseRidgeCV:
Ошибка строки документации: несоответствие атрибутов в _BaseRidgeCV
альфа_
лучший результат_
coef_
intercept_
n_features_in_

Могу я поднять это? Я новичок и хочу внести свой вклад.

@marenwestermann в классе FeatureAgglomeration, говорят, что в версии 0.21 n_connected_components_ был добавлен для замены n_components_, тогда n_components_ будет ложноположительным, верно ..?

@ srivathsa729, насколько я понимаю, да. Однако было бы хорошо, если бы один из основных разработчиков мог дважды проверить.

Возьмусь за ElasticNet

Документация по атрибутам X_offset_ и X_scale_ для BayesianRidge была добавлена ​​в # 18607.

Атрибут output_2d_ устарел в DummyClassifier и DummyRegressor (см. №14933).

Я запустил сценарий, предоставленный @amueller в верхней части этого PR (код нужно немного изменить, потому что все изменилось). Мне не удалось найти никаких других атрибутов, которые необходимо документировать, за исключением n_features_in_ который, как я вижу, был введен в # 16112. Этот атрибут недокументирован, я думаю, во всех классах, в которых он был представлен. Следует ли это задокументировать?
пинг @NicolasHug

Была ли эта страница полезной?
0 / 5 - 0 рейтинги