كما تمت مناقشته في # 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. أعتقد أنه يمكنني أخذ بعض من هذا العمل. أنا جاهز تقريبًا لاقتراح بعض التغييرات ضمن الوحدات الفرعية decomposition
و random_projection
.
يمكنني تناول التوثيق غير المتطابق لسمة الوحدة الفرعية tree
، والذي يتضمن:
أنا أعمل على الانحدار الخطي ، [رتبة_ ، مفرد_].
أنا أعمل على LinearSVC و [n_iter_] و LinearSVR ، [n_iter_]
سآخذ Gradient boosting
ie
لا يهم ، أخطأ في القراءة حيث تكون السمات مفقودة وأينما لا
يبدو أن هناك أيضًا سمة classes_
غير موثقة للمصنفات للوحدة الفرعية naive_bayes
. لقد بدأت في إصلاحه.
سأعمل على TfidfVectorizer، [fixed_vocabulary_]
سأعمل على:
أنا أعمل على:
تحرير: فتح قضية لتغيير هذه السمات من عام إلى خاص (المرجع: # 14364)
اعمل على ذلك:
KernelCenterer، [K_fit_all_، K_fit_rows_]
MinMaxScaler ، [n_samples_seen_]
سأعمل على:
لقد اكتشفت أيضًا أن الوحدات KNeighborsClassifier
و KNeighborsRegressor
وربما فئات أخرى من الوحدة النمطية neighbors
لا تحتوي على أي وثائق سمات على الإطلاق. أعمل حاليًا على KNeighborsRegressor
الذي يحتوي على سمتين:
effective_metric_
effective_metric_params_
فئة KNeighborsClassifier
لها أربع سمات:
classes_
effective_metric_
effective_metric_params_
outputs_2d_
تضمين التغريدة شكر!
العمل على QuadraticDiscriminantAnalysis، [classes_، covariance_]
العمل على KNeighboursClassifier ، [classes_، dynamic_metric_، Effective_metric_params_، outputs_2d_]
RadiusNeighboursClassifier ، [الفئات_ ، مقياس_فعالية_الفعالية ، مقياس_المعايير_الفعالة_ ، المخرجات_2 د_]
يعمل على:
LinearSVC ، [فئات_]
NuSVC، [class_weight_، classes_، fit_status_، probA_، probB_، shape_fit_]
SVC ، [class_weight_، classes_، shape_fit_]
يعمل على:
يعمل على:
CountVectorizer ، [stop_words_، vocabulary_]
DictVectorizer ، [feature_names_، vocabulary_]
مرحبا انا!! أود المساعدة في هذا .. هل يمكن لأي شخص أن يخبرني من أين أبدأ ؟؟
نحن نعمل على الوظائف في dict_learning.py
spbail
العمل على LinearDiscriminantAnalysis مع @ olgadk7
العمل على عدم تطابق السمة في RidgeClassifierCV @ npatta01
العمل على DecisionTreeRegressor باستخدام @ ingrid88 + @ npatta01
العمل على LinearDiscriminantAnalysis مع @ olgadk7
خطأ موجب لنصوص السمة أعلاه. تم توثيق هذا.
العمل على AdditiveChi2Sampler مع @ olgadk7
العمل على LabelEncoder معeugeniaft
سيحاول العمل على تصنيف عشوائي!
يعمل على
بيرسبترون
تعمل في BernoulliRBM
العمل على ExtraTreeClassifer
العمل على LabelEncoder معeugeniaft
يبدو أن LabelEncoder لا يوجد به أي عدم تطابق ، فنحن نعمل على OneClassSVM
أعتقد أن رجالات الشجرة يجب أن تستبعد فئاتهم بدلاً من ذلك.
العمل على SVR
يعمل على:
العمل على الانحدار الخطي ، [رتبة_ ، مفرد_]
العمل على LatentDirichletAllocation، [bound_، doc_topic_prior_، exp_dirichlet_component_، random_state_، topic_word_prior_]
يعمل على
تصنيف التعبئة ، [n_features_، oob_decision_function_، oob_score_]
سجل التعبئة ، [base_estimator_، n_features_، oob_prediction_، oob_score_]
تصنيف التعبئة ، [n_features_، oob_decision_function_، oob_score_]
سجل التعبئة ، [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
أعتقد أننا لا يجب أن نوصي بهذه المشكلة للسباقات التالية ، أو نستخدم إصدارًا أكثر تنسيقًا.
استنادًا إلى تجربتي في السباق السابق ، لا يزال هناك الكثير من الإيجابيات الخاطئة ، وينتهي بنا الأمر إلى مطالبة المساهمين بإهمال السمات العامة فعليًا لجعلها خاصة ، وهو أمر يمكن القول إنه أصعب بكثير (ويمكن أن يكون محبطًا لأن المساهمين يشعرون أنهم عملوا من أجلها لا شيئ).
بينغamuellerthomasjpfan WDYT؟
أعتقد أننا لا يجب أن نوصي بهذه المشكلة للسباقات التالية ، أو نستخدم إصدارًا أكثر تنسيقًا.
ربما إذا كان لدينا أداة عامة للتحقق من صحة docstring كما هو مقترح في 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_
ومجموعة أخرى ...
قائمة محدثة من السمات البارزة التي يجب إضافتها.
سأقوم بإضافة feature_importances_
إلى وثائق ExtraTreeRegressor
سأبدأ أنا ومجموعة من تخصصات علوم البيانات في العمل على BayesianRidge ، [X_offset_، X_scale_] وثائق السمات.
مرحبًا ، ستعمل مجموعتنا من المساهمين على:
الإصلاحات المحتملة في # 16826
تمت إضافة الاختبار في # 16286.
لا يزال هناك فصلان تم تخطيهما حاليًا:
https://github.com/scikit-learn/scikit-learn/blob/753da1de06a764f264c3f5f4817c9190dbe5e021/sklearn/tests/test_docstring_parameters.py#L180
بعض هؤلاء لديهم بالفعل علاقات عامة ، لذا تأكد من التحقق من ذلك قبل البدء في العمل عليه.
بعض هؤلاء لديهم بالفعل علاقات عامة ، لذا تأكد من التحقق من ذلك قبل البدء في العمل عليه.
قد يكون الخيار الجيد أيضًا هو محاولة إلقاء نظرة على العلاقات العامة المفتوحة التي لم يتم دمجها ومحاولة إنهاءها.
كقاعدة عامة ، إذا لم يكن للعلاقات العامة بعض النشاط لأكثر من 2-3 أسابيع ، فلا بأس من محاولة تولي الأمر ومحاولة إنهاءه.
إذا كنت مهتمًا بمثل هذا الحل ، فهناك طريقة لتنفيذ امتداد لأبو الهول يتحقق من أن جميع المعلمات موثقة أو غير مخطئة (يمكنك الاطلاع على مثال هنا: https://github.com/sdpython/pyquickhelper/blob /master/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py). ربما يكون من المفيد إضافة واحدة مخصصة لتوثيق scikit-Learn.
sdpython ، سيكون ذلك رائعًا! إذا كنت لا تعمل على شيء آخر ، فربما يمكنك اقتراح مسودة علاقات عامة؟ شكر!
مثير للإعجاب!
IIRC لدينا اختبارات مشتركة تتحقق من توثيق جميع السمات. تمت إضافته في https://github.com/scikit-learn/scikit-learn/pull/16286. كما يبدو أنني أتذكر أن mne-python كان لديه شيء مشابه.
ليس لدي رأي مستنير حول النهج الأفضل ولكن أود أن أقول إن توثيق المعلمات المفقودة ربما يكون أولوية أعلى من تحديد الطريقة التي نريد إجراء الفحص بها.
المشكلة في القيام بذلك في 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
لذلك ربما ليس من الضروري تغيير بناء أبو الهول لهذا الغرض.
لقد تحققت من سلاسل مستندات السمة التي لا تزال مفقودة (القائمة أعلاه قديمة). هؤلاء هم الذين وجدتهم:
مزيج بايزيان غاوسي ، [mean_precision_prior]
بايزيان ريدج ، [X_offset_، X_scale_]
BernoulliNB، [coef_، intercept_]
بيرش [fit_، جزئي_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_]
تكتل الميزة ، [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_]
PLSC متعارف عليه ، [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؟
نظرًا لأننا نهملهم ، أود أن أقول إننا لن نحتاج إلى توثيقهم.
السمتان class_ و n_classes_ for ExtraTreeRegressor هي صفات إيجابية خاطئة.
نعم ، يجب إهمال هذه الأشياء ثم إزالتها إذا لم تكن كذلك بالفعل.
تقول فئة DecisionTreeRegressor
:
"السمة n_classes_ سيتم إهمالها من الإصدار 0.22 وستتم إزالتها في 0.24."
"سيتم إهمال السمة class_uae من الإصدار 0.22 وستتم إزالتها في 0.24."
إذن هذه السمات أيضًا لا تحتاج إلى وثائق ، أليس كذلك؟
إذن هذه السمات أيضًا لا تحتاج إلى وثائق ، أليس كذلك؟
RightAbilityguy ، شكرًا على الإشارة إلى ذلك.
يمكنني رؤية عدم تطابق أدناه في _RidgeGCV:
خطأ في سلسلة Docstring: السمة غير متطابقة في _RidgeGCV
ألفا_
أفضل_درجة_
coef_
مزدوج
تقاطع_
n_features_in_
وفي _BaseRidgeCV:
خطأ في سلسلة المستندات: عدم تطابق السمة في _BaseRidgeCV
ألفا_
أفضل_درجة_
coef_
تقاطع_
n_features_in_
هل يمكنني تناولها؟ أنا أول جهاز توقيت وأريد المساهمة.
marenwestermann في فئة FeatureAgglomeration ، يُقال أنه في الإصدار 0.21 ، تمت إضافة n_connected_components_ لاستبدال n_components_ ، ثم n_components_ سيكون خطأ إيجابيًا صحيحًا ..؟
@ srivathsa729 من فهمي نعم. ومع ذلك ، سيكون من الجيد أن يتحقق أحد المطورين الأساسيين مرة أخرى.
سوف أتناول ElasticNet
تمت إضافة توثيق السمتين X_offset_ و X_scale_ for BayesianRidge مع # 18607.
تم إهمال إخراج السمة_2d_ في DummyClassifier و DummyRegressor (انظر # 14933).
قمت بتشغيل البرنامج النصي المقدم من amueller في الجزء العلوي من هذا PR (يحتاج الرمز إلى تعديل طفيف لأن الأشياء انتقلت) لم أتمكن من العثور على أي سمات أخرى تحتاج إلى توثيقها باستثناء n_features_in_
التي أرى أنها مقدمة في # 16112. أعتقد أن هذه السمة غير موثقة في جميع الفئات التي تم تقديمها إليها. هل يجب توثيقها؟
تضمين التغريدة
التعليق الأكثر فائدة
سلاسل مستندات السمة مفقودة لكل مقدر
قم بالإشارة إلى هذه المشكلة في العلاقات العامة الخاصة بك