#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)
NMFクラス記述の属性ドキュメントに少なくとも1つの不一致がすでに見つかりました。 私はこの仕事のいくつかを取ることができると思います。 decomposition
およびrandom_projection
サブモジュール内でいくつかの変更を提案する準備がほぼ整いました。
tree
サブモジュール属性のドキュメントの不一致を取り上げることができます。これには次のものが含まれます。
私はLinearRegression、[rank_、singular_]に取り組んでいます。
私はLinearSVC [n_iter_]とLinearSVR [n_iter_]に取り組んでいます
Gradient boosting
を取り上げます。
気にしないで、属性が欠落している場所と欠落している場所を読み間違えます
naive_bayes
サブモジュールの分類子について文書化されていないclasses_
属性もあるようです。 私はそれを修正し始めました。
TfidfVectorizer、[fixed_vocabulary_]に取り組みます
私は取り組みます:
私は取り組んでいます:
編集:これらの属性をパブリックからプライベートに変更する問題を開きました(参照:#14364)
私は取り組んでいます:
KernelCenterer、[K_fit_all_、K_fit_rows_]
MinMaxScaler、[n_samples_seen_]
私は取り組みます:
また、 KNeighborsClassifier
、 KNeighborsRegressor
、およびおそらく他のクラスのneighbors
モジュールには、属性のドキュメントがまったくないことも発見しました。 現在、2つの属性を持つKNeighborsRegressor
取り組んでいます。
effective_metric_
effective_metric_params_
KNeighborsClassifier
クラスには、次の4つの属性があります。
classes_
effective_metric_
effective_metric_params_
outputs_2d_
@alexitkes良いキャッチ。 ありがとう!
QuadraticDiscriminantAnalysis、[classes_、covariance_]に取り組んでいます
KNeighborsClassifier、[classes_、effective_metric_、effective_metric_params_、outputs_2d_]での作業
RadiusNeighborsClassifier、[classes_、effective_metric_、effective_metric_params_、outputs_2d_]
取りかかっている:
LinearSVC、[classes_]
NuSVC、[class_weight_、classes_、fit_status_、probA_、probB_、shape_fit_]
SVC、[class_weight_、classes_、shape_fit_]
取りかかっている:
取りかかっている:
CountVectorizer、[stop_words_、vocabulary_]
DictVectorizer、[feature_names_、vocabulary_]
ひい!! 私はこれを手伝いたいです..誰かplzは私がどこから始めるべきか教えてもらえますか?
dict_learning.py
@ spbailの関数に取り組んでいます
@ olgadk7を使用したLinearDiscriminantAnalysisの作業
RidgeClassifierCV @ npatta01での属性の不一致に関する作業
@ ingrid88 + @ npatta01を
@ olgadk7を使用したLinearDiscriminantAnalysisの作業
上記の属性スクリプトの誤検知。 これは文書化されています。
@ olgadk7でAdditiveChi2Samplerに取り組んでいます
@eugeniaftでLabelEncoderに取り組んでいます
randomtreeclassifierで作業しようとします!
取りかかっている
パーセプトロン
BernoulliRBMに取り組んでいます
ExtraTreeClassiferに取り組んでいます
@eugeniaftでLabelEncoderに取り組んでいます
LabelEncoderには不一致がないようです。現在、OneClassSVMに取り組んでいます。
ツリーリグレッサは、代わりにクラスを非推奨にする必要があると思います。
SVRに取り組んでいます
取りかかっている:
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ですでに修正されてい
次のスプリントでこの問題を推奨したり、より厳選されたバージョンを使用したりするべきではないと思います。
以前のスプリントでの私の経験に基づくと、まだ多くの誤検知があり、実際にパブリック属性を非推奨にして非公開にするように寄稿者に依頼することになります。これは間違いなくはるかに困難です(寄稿者は彼らが働いていると感じているのでイライラする可能性があります何も)。
Ping @amueller @thomasjpfan WDYT?
次のスプリントでこの問題を推奨したり、より厳選されたバージョンを使用したりするべきではないと思います。
https://github.com/numpy/numpydoc/issues/213で提案されているようなdocstringの一般的な検証ツールがあれば、寄稿者にとっては少し簡単になるでしょう。 一部の属性は公開されるべきではないのに公開されているという事実に完全には対処していないことに同意します。
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_
そしてもっとたくさん...
追加する必要のある未解決の属性のリストを更新しました。
ExtraTreeRegressor
ドキュメントにfeature_importances_
を追加します
データサイエンス専攻のグループと私は、BayesianRidge、[X_offset_、X_scale_]属性のドキュメントの作成を開始します。
こんにちは、私たちの貢献者グループは以下に取り組んでいます:
#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に追加されました
どのアプローチが望ましいかについての情報に基づく意見はありませんが、不足しているパラメータを文書化することは、チェックをどのように行うかを決定するよりもおそらく優先度が高いと思います。
スフィンクスでこれを行う際の問題は、この場合、ドキュメントの作成に長い時間がかかるため(すべての例を生成するため)、単体テストまたはスタンドアロンツールの方が使いやすいでしょう。 以前はhttps://github.com/scikit-learn/scikit-learn/issues/15440でnumpydoc検証を使用しており、型アノテーションを使用したdocstringの検証はhttps://github.com/terrencepreillyで実行できることに注意してください。 / darglint。 したがって、docstringにも5つの異なる検証ツールを使用する状況を回避する必要があります:)
たとえば、pytestを使用して結果を確認する機能が気に入っています。
pytest -v --runxfail -k IsolationForest sklearn/tests/test_docstring_parameters.py
したがって、このためにスフィンクスのビルドを変更する必要はないかもしれません。
どの属性のdocstringがまだ欠落しているかを確認しました(上記のリストは古くなっています)。 これらは私が見つけたものです:
BayesianGaussianMixture、[mean_precision_prior]
BayesianRidge、[X_offset_、X_scale_]
BernoulliNB、[coef_、intercept_]
バーチ、[fit_、partial_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_]
なげなわ、[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に取り組んでいます
私はなげなわに取り組んでいます。
現在、MultiTaskElasticNetとMultiTaskLassoに属性sparse_coef_
を追加する作業を行っています。
私はLarsCVに取り組んでいます。
@thomasjpfanクラスSVR
とOneClassSVM
言われています:
「probA_属性はバージョン0.23で非推奨になり、バージョン0.25で削除されます。」 そして
「probB_属性はバージョン0.23で非推奨になり、バージョン0.25で削除されます。」
したがって、これらの属性はおそらくもうドキュメントを必要としませんよね?
ここから先、これら2つの属性もクラスNuSVR
で非推奨になりますか?
ExtraTreeRegressorの属性classes_
およびn_classes_
は誤検知です。
したがって、これらの属性はおそらくもうドキュメントを必要としませんよね?
ここから先、これら2つの属性もNuSVRクラスで非推奨になりますか?
それらは非推奨になっているので、文書化する必要はないと思います。
ExtraTreeRegressorの属性classes_およびn_classes_は誤検知です。
うん、それらは非推奨になり、まだ削除されていない場合は削除する必要があります。
DecisionTreeRegressor
クラスは次のように述べています。
「n_classes_属性はバージョン0.22から非推奨になり、0.24で削除されます。」
「classes_属性はバージョン0.22から非推奨になり、0.24で削除されます。」
したがって、これらの属性にもドキュメントは必要ありませんか?
したがって、これらの属性にもドキュメントは必要ありませんか?
右@Abilityguy 、それを指摘してくれてありがとう。
_RidgeGCVで以下の不一致を確認できます。
Docstringエラー:_RidgeGCVの属性の不一致
アルファ_
最高のスコア_
coef_
dual_coef_
インターセプト_
n_features_in_
および_BaseRidgeCV内:
Docstringエラー:_BaseRidgeCVの属性の不一致
アルファ_
最高のスコア_
coef_
インターセプト_
n_features_in_
取り上げてもいいですか? 私は初めてのタイマーで、貢献したいと思っています。
@marenwestermannクラスFeatureAgglomerationで、その後n_components_偽陽性右だろう、バージョン0.21で、n_connected_components_がn_components_を交換するために追加されました、と言われて...?
私の理解から@ srivathsa729はい。 ただし、コア開発者の1人が再確認できればよいでしょう。
ElasticNetを取り上げます
BayesianRidgeの属性X_offset_およびX_scale_のドキュメントが#18607で追加されました。
属性output_2d_は、DummyClassifierおよびDummyRegressorで非推奨になりました(#14933を参照)。
このPRの上部にある@amuellerによって提供されたスクリプトを実行しました(n_features_in_
を除いて、文書化する必要のある属性はこれ以上見つかりませんでした。 この属性は、導入されたすべてのクラスで文書化されていないと思います。 文書化する必要がありますか?
ping @NicolasHug
最も参考になるコメント
各推定量の属性docstringがありません
PRでこの問題を参照してください