许多类中的默认值文档要么没有包含在内,要么在编写方式上不一致,要么已经过时。 我想召集一些人来处理每个类的默认值文档,因为有大量的类存在这些问题。 有人告诉我,默认值应该记录为“default=<'value'>”,所以我在这个假设下创建了这个问题。
以下是我看到的一些应该更改的参数:
如果几个人每个人都在几个班级上工作,那么这应该很快就完成了! 这些都应该是相当简单的修复。
#### 例子
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html
上面的链接是一个示例,其中未指示默认值但参数表示“可选”,并且其中指示的默认值都不一致记录。
你好@cgsavard ,我想在这方面工作。 我可以开始查看 AgglomerativeClustering 类吗?
@vachanda 加油! 我们可以继续在这里发布我们正在处理的内容,以便其他人知道。
感谢您协调此@cgsavard
贡献者注意事项:请遵循以下指南: https: //scikit-learn.org/stable/developers/contributing.html#guidelines -for-writing-documentation
@cgsavard ,是否有存在差异的类列表,或者我们是否必须逐一检查并更新它们?
@vachanda不幸的是,我没有列表。 我刚刚浏览了文件并查看需要更新的内容。
我正在研究 AffinityPropagation、SpectralCoclustering、SpectralBiclustering 和 Birch。
我正在研究 FeatureAgglomeration、KMeans 和 MiniBatchKMeans。
从逻辑上讲,如果参数是可选的,那么默认值不应该总是None
吗? 有一个默认值不是None
表明它应该是必需的。
如果有默认值,这通常意味着文献发现这是一个合理的默认值,这也表明该参数对性能有影响,因此它不应该是可选的,而应该只是提及默认值是什么。 根据定义,这些似乎更接近必需的参数,我们只是碰巧为用户做出了明智的选择,以便他们可以更改或不更改。
或者更实际地说,目前是否有任何我们发现的可选参数具有数字默认值,但指定None
会引发异常? 这也表明该参数实际上是必需的,但已根据文献/研究选择了合理的默认值。
或者,也许这些年来我一直在混淆required
和optional
的含义? 哈哈。 无论哪种方式,我都愿意提供帮助!
@jmwoloso我们在optional
的用法方面确实不一致,因此我们最近决定将其删除。
我也想做出贡献。 我可以继续这个吗
@glemaitre好的,这绝对有道理。 那么我们将一起删除optional
动词,对吗,同时还要注意文档字符串中的默认值?
我们发现的每一个都应该作为一个问题单独打开,或者我们如何分阶段我们正在做的所有这些工作,因为有多个人正在处理与这个问题相关的多个事情?
@cyrus303 @jmwoloso您可以获得一个类(最多一个模块)并进行更正。 这个想法是删除可选项并在有一个(通常有一个)时添加一个默认值。 由于我们正在接触文档,我们应该确保行上的样式遵循我们的新样式指南: https: //scikit-learn.org/dev/developers/contributing.html#guidelines -for-writing-documentation
您可以提及您正在使用哪个类/模块,打开一个 PR 链接以避免重复工作:)。 期待对其进行审查。
嘿! 我将在tree
类( tree.DecisionTreeClassifier
、 tree.DecisionTreeRegressor
、 tree.ExtraTreeClassifier
和tree.ExtraTreeRegressor
)上工作。
我还将为neighbors
模块解决此问题。
我将采用ensemble
模块。
@glemaitre对bool
与boolean
任何偏好? 在ensemble
看到两者的混合,即使在同一个班级。 不妨在我做默认值的时候把它们弄好。
编辑:
int
vs integer
同上。 我假设int
在那一个上,但想确认一下。
编辑(再次):
还看到相对于该类的__init__
签名具有不一致值的文档字符串,例如:
min_impurity_split
为RandomForestClassifier
__init__
签名有min_impurity_split=None
而它的文档字符串说min_impurity_split : float, (default=0)
。 我假设更新文档字符串以匹配签名,因为我们希望保持类的行为一致(即我们希望在实例化时传递相同的默认值)?
@jmwoloso你能参考https://scikit-learn.org/stable/developers/contributing.html#guidelines -for -writing-documentation。 基本上你应该默认为 python 类型名称(bool、str、int、float)
__init__ 签名有 min_impurity_split=None 而它的文档字符串说 min_impurity_split : float, (default=0)。 我假设更新文档字符串以匹配签名,因为我们希望保持类的行为一致(即我们希望在实例化时传递相同的默认值)?
我们应该匹配函数签名中的参数。 此值默认参数已更改,文档字符串未更新。
嗨@cgsavard ,我想贡献,但这将是我的第一次,所以需要一些牵手。 我对 python 非常熟悉,对文本编辑器有点方便,最近在此处完成了 fork -> clone -> edit -> PR 工作流教程。 请指教下一步...谢谢!
嗨@cgsavard ,
我可以在 Imputer 上工作吗?
嗨@cgsavard ,我想在linear_model
班上工作。
我也在研究Neural Network
、 Decomposition
、 Feature Extraction
、 Metrics
和Preprocess
类。
有人可以检查我的 pr #15964,看看为什么代码 cov 失败。 这是我第一次投稿。 请指导。
忽略 codecov。 这是一个误报,因为我们不接触代码。 我会尽快审查公关
从我的手机发送 - 抱歉,简短且可能拼写错误。
我刚刚做了我的第一个贡献 #15988
我将采用naive_bayes
模块。
我刚刚做了我的第一个贡献#16019
大家好,正在处理sklearn/neighbors
,谢谢。
对 sklearn/semi_ supervisor 有贡献。谢谢
嗨@cgsavard ,我也想做出贡献,我将采用sklearn/svm
模块。 谢谢
对 sklearn/semi_ supervisor 有贡献。谢谢
PR #16042 是否需要进一步编辑
@glemaitre在 #16105 中,我不得不深入研究构造以获取默认值,文档字符串有时似乎不准确和过时。
此外,我尝试使用不那么模棱两可、简洁且数学严谨的方法来定义参数范围。 例如,我将positive float
更改float in (0, inf]
或将0<= shrinkage <=1
更改float in (0, 1)
。 长话短说,我尽我所能做到简洁准确,但请多花 5% 的注意力来审查这个 PR。 谢谢。
对于那些对此问题感兴趣的人,命令
git grep "optional.*default"
将输出仍受此问题影响的文件(感谢@ogrisel!:))。
@cgsavard你好,我想在model_selection
@WiMLDS 上工作
@lopusz和我想在 random_projection.py 上工作
祝大家玩得开心!
@adrinjalali @noatamir @WiMLDS
@ETay203和我想在mean_shift
@WiMLDS_Berlin sprint 上工作。
@magda-zielinska 和我想在 pipeline.py 上工作
@adrinjalali @noatamir @WiMLDS
@lopusz和 @magda-zielinska,我想在 kernel_approximation.py 上工作
我现在要处理 _optics.py
重新开放:在#16216 中被“Fixes”关键字关闭。
重新开放:在#16207 中被“Fixes”关键字关闭
我现在要处理 sklearn/linear_model/_coordinate_descent.py
我清理了 base.py 并提交了 PR
我清理了 discriminant_analysis.py 并提交了 PR
我现在看看 sklearn/gaussian_process/*.py
GP @lopusz已经有很长的公关了 :)
@lopusz,我很抱歉,PR 涉及 GP 模块的其他问题,如果您不介意,可以继续进行处理 :)
@adrinjalali感谢您的关注!
确实,我没有很好地扫描公开的 PR,所以没有采取 GP 的事实更像是一个意外;)
我会确保跟踪什么是 PRed。
是的,全科医生的公关即将到来;)
这里还有什么可做的吗?
我正在处理sklearn/decomposition/_dict_learning.py
还剩下什么? 我愿意提供帮助。 . .
弄清楚剩下的可能是开始帮助的好地方:)
嗨,我一直在查看剩下的内容,我认为在之前查看的某些模块中仍然需要进行一些更新。
我打算解决这些问题,从集群模块开始,然后可以为每个模块提出 PR?
这是我的第一个贡献,所以如果我没有正确地遵循流程等,请告诉我。
谢谢!
这是需要修复的函数、类和模块的列表:
sklearn.feature_selection.SelectorMixin
sklearn.config_context
sklearn.set_config
sklearn.calibration.CalibratedClassifierCV
sklearn.cluster.OPTICS
sklearn.cluster.SpectralClustering
sklearn.cluster.affinity_propagation
sklearn.cluster.cluster_optics_dbscan
sklearn.cluster.cluster_optics_xi
sklearn.cluster.compute_optics_graph
sklearn.cluster.mean_shift
sklearn.cluster.spectral_clustering
sklearn.cluster.ward_tree
sklearn.cross_decomposition.CCA
sklearn.cross_decomposition.PLSCanonical
sklearn.cross_decomposition.PLSRegression
sklearn.cross_decomposition.PLSSVD
sklearn.datasets
sklearn.decomposition
sklearn.dummy
sklearn.ensemble.HistGradientBoostingRegressor
(实验性)sklearn.ensemble.HistGradientBoostingRegressor
(实验性)sklearn.feature_extraction.image.grid_to_graph
sklearn.feature_extraction.image.img_to_graph
sklearn.feature_extraction.text.CountVectorizer
sklearn.feature_extraction.text.HashVectorizer
sklearn.feature_selection
sklearn.impute
sklearn.inspection.partial_dependence
sklearn.inspection.permutation_importance
sklearn.inspection.permutation_importance
sklearn.inspection.PartialDependenceDisplay
sklearn.inspection.plot_partial_dependence
sklearn.isotonic.IsotonicRegression
sklearn.isotonic.check_increasing
sklearn.isotonic.isotonic_regression
sklearn.kernel_approximation
sklearn.kernel_ridge
sklearn.linear_model.PassiveAggressiveClassifier
sklearn.linear_model.LassoLars
sklearn.linear_model.OrthogonalMatchingPursuit
sklearn.linear_model.HuberRegressor
sklearn.linear_model.RANSACRegressor
sklearn.linear_model.TheilSenRegressor
sklearn.linear_model.PassiveAggressiveRegressor
sklearn.linear_model.orthogonal_mp
sklearn.linear_model.orthogonal_mp_gram
sklearn.manifold
sklearn.metrics
(除了sklearn.metrics.confusion_matrix
, sklearn.metrics.roc_auc_score
, sklearn.metrics.max_error
sklearn.metrics.mean_poisson_deviance
, sklearn.metrics.mean_gamma_deviance
, sklearn.metrics.mean_tweedie_deviance
, sklearn.metrics.plot_confusion_matrix
, sklearn.metrics.plot_precision_recall_curve
)sklearn.mixture
sklearn.model_selection.GridSearchCV
sklearn.model_selection.ParameterGrid
sklearn.model_selection.ParameterSampler
sklearn.model_selection.RandomizedSearchCV
sklearn.model_selection.fit_grid_point
sklearn.multiclass
sklearn.multioutput
sklearn.neural_network
sklearn.preprocessing
sklearn.random_projection
sklearn.tree.export_graphviz
sklearn.tree.export_text
sklearn.tree.plot_tree
sklearn.utils
希望我没有遗漏任何东西。
你好。 我会去尝试通过 feature_selection 文档
我们采用 sklearn.mixture 部分
取 cross_decomposition 部分
对于 2020 Scikit-Learn Sprint, @icoder18和我正在参加 sklearn.random_projection 部分
@adrinjalali我们完成了 sklearn/mixture
与@genvalen 一起为冲刺的 sklearn.linear_model 工作
以 sklearn.calibration.CalibratedClassifierCV
为 sklearn.utils.validation 处理这个问题
接下来我们将处理 sklearn.utils.random
处理 sklearn.impute
处理sklearn.tree.plot_tree
表 14 将采用 sklearn.neural_network
取 sklearn.kernel_approximation
拿sklearn.inspection
表 14 将采取 sklearn.preprocessing
获取数据集
使用 sklearn.mixture #17509
名单已更新。
谢谢你们!
将 sklearn.metrics 用于冲刺
取model_selection模块
@glemaitre我们可以更新此描述以包括最好一次提交一个文件吗?
你好,我想投稿。 不过,这是我的第一次……而且我不清楚我如何知道在哪个模块上还有工作要做? 谢谢 !
https://github.com/scikit-learn/scikit-learn/issues/15761#issuecomment -639461778 包含需要修复的模块列表。
谢谢。 然后以 sklearn.decomposition 为例。
我正在研究“sklearn.isotonic.isotonic_regression”
我正在研究“sklearn.multiclass.py”
你好,我可以试着把剩下的放在sklearn.tree
吗? 这也是我第一次做出贡献。
感谢您的入住,很高兴得到您的帮助! 请继续; 我认为我们所有的 sprint 更新都已关闭。
在2020年7月4日,在10点45分,伊万Wiryadi [email protected]写道:
嗨,我可以尝试在 sklearn.tree 上使用剩余的吗? 这也是我第一次做出贡献。—
您收到此消息是因为您发表了评论。
直接回复此邮件,在 GitHub 上查看,或取消订阅。
嗨,我想做出我的第一个贡献。 我可以使用 sklearn.multioutput 吗?
我将继续使用 sklearn.utils,从 _encode.py 开始
我正在处理sklearn/decomposition/_dict_learning.py
我正在 sprint 中处理sklearn.kernel_ridge
嗨,我将开始研究 sklearn.feature_extraction.image.img_to_graph
我正在处理sklearn.feature_extraction.text.CountVectorizer
我正在处理sklearn.sklearn.kernel_ridge
我正在处理sklearn.ensemble.HistGradientBoostingRegressor
“我正在做这个”
在这个? @Hoda1394
“我正在做这个”
在这个? @Hoda1394
@TahiriNadia 已更正。
@cgsavard嘿,我可以解决这个问题吗? 我是第一次
我将处理sklearn.datasets
。
我可以在sklearn.linear_model._least_angle.py
上工作吗
@glemaitre我正在研究sklearn.linear_model._least_angle.py
,我发现method ='lar'
的使用不一致,有时它表示lars
有时lar
,这种不一致也在代码(不仅在文档中),我可以看到lars
是正确的,你能确认一下,我会做一个 PR。
在'sklearn/ensemble/_hist_gradient_boosting/binning.py'
文件需要更改:
sklearn/_config.py
sklearn/dummy.py
sklearn/multioutput.py
sklearn/linear_model/_huber.py
sklearn/linear_model/_theil_sen.py
sklearn/linear_model/_ridge.py
sklearn/linear_model/_omp.py
sklearn/linear_model/_sag.py
sklearn/externals/_lobpcg.py
sklearn/externals/_lobpcg.py
sklearn/utils/extmath.py
sklearn/utils/__init__.py
sklearn/utils/graph.py
sklearn/utils/_mocking.py
sklearn/utils/sparsefuncs.py
sklearn/neighbors/_base.py
sklearn/gaussian_process/_gpc.py
sklearn/gaussian_process/kernels.py
sklearn/model_selection/_validation.py
~sklearn/decomposition/_fastica.py~
~sklearn/decomposition/_dict_learning.py~
~sklearn/decomposition/_factor_analysis.py~
~sklearn/decomposition/_incremental_pca.py~
~sklearn/decomposition/_lda.py~
~sklearn/decomposition/_pca.py~
~sklearn/decomposition/_truncated_svd.py~
~sklearn/decomposition/_sparse_pca.py~
~sklearn/decomposition/_nmf.py~
sklearn/流形/_mds.py
sklearn/流形/_spectral_embedding.py
sklearn/流形/_t_sne.py
sklearn/ensemble/_hist_gradient_boosting/grower.py
sklearn/ensemble/_hist_gradient_boosting/binning.py
sklearn/metrics/_ranking.py
sklearn/tree/_classes.py
sklearn/预处理/_discretization.py
sklearn/预处理/_encoders.py 第 620 行
sklearn/neural_network/_multilayer_perceptron.py 第 1054 行
sklearn/协方差/_robust_covariance.py
请检查是否有人已经在处理您选择的文件
@sadakmed ,对于所有“分解文件”,都有一个正在进行的拉取请求 #17739。
处理"gaussian_process.GaussianProcessRegressor"
和"neighbors._base.py"
嗨,我是新人,我想开始贡献。 您还需要有关此问题的帮助吗? 还有什么文件需要帮助吗?
嘿@boricles!
查看https://github.com/scikit-learn/scikit-learn/issues/15761#issuecomment -639461778 以获取仍待修复的模块列表。
@alfaro96谢谢。 我刚才快速浏览了一下。 今晚我将选择一个模块,然后进行处理。
我正在研究 sklearn/config_context
嘿,我想我会看看我是否可以帮助处理文档。
@alfaro96我想在sklearn.feature_extraction.text.CountVectorizer
,如果它还没有被使用,特别是因为我个人在过去使用 Vectorizers 时遇到了一些陷阱。
另外,我注意到虽然sklearn.model_selection.learning_curve
已更新,但有一个使用旧文档的过时教程,我应该保留它吗? 或者值得更新吗?
嗨@alfaro96 ,
修改后:
我看到sklearn.config_context
和sklearn.set_config
sklearn.config_config.py
已修复,因此可以从任务列表中检出。
我想在sklearn.utils
。 我只看到了一个使用“可选”的参数文档实例。这意味着我只需要修复那个实例,对吗? 它在sklearn.utils._mocking.py
嘿,我想我会看看我是否可以帮助处理文档。
嘿@madprogramer ,
@alfaro96我想在
sklearn.feature_extraction.text.CountVectorizer
,如果它还没有被使用,特别是因为我个人在过去使用 Vectorizers 时遇到了一些陷阱。
~我查看了清单和sklearn.feature_extraction.text.CountVectorizer
参考,它似乎没有修复。 欢迎公关。~
编辑: sklearn.feature_extraction.text.CountVectorizer
已经修复。
另外,我注意到虽然
sklearn.model_selection.learning_curve
已更新,但有一个使用旧文档的过时教程,我应该保留它吗? 或者值得更新吗?
值得更新,尽管这应该在单独的 PR 中完成。
谢谢!
嗨@alfaro96 ,
嘿@haiatn ,
修改后:
我看到sklearn.config_context
和sklearn.set_config
sklearn.config_config.py
已修复,因此可以从任务列表中检出。
我已经更新了清单。
我想在
sklearn.utils
。 我只看到了一个使用“可选”的参数文档实例。这意味着我只需要修复那个实例,对吗? 它在sklearn.utils._mocking.py
这就是想法,虽然sklearn.utils._mocking.py
文件中的类不是公共 API 的一部分,所以我认为不值得更新它们。
不过,如果您可以在任何其他待修复的函数、类和模块中工作,那就太好了。
谢谢!
我看了检查表。 根据我所看到的,可以从清单中检查以下内容:
sklearn.feature_extraction.image.img_to_graph
sklearn.isotonic.IsotonicRegression
sklearn.isotonic.check_increasing
sklearn.ensemble.HistGradientBoostingRegressor
但所有的sklearn.ensemble
都可以我可以处理sklearn.manifold._spectral_embedding
和sklearn.feature_extraction.text.HashVectorizer
吗? 我会在单独的公关中做到这一点。 我认为它们是唯一需要修复的文件(假设使用了sklearn.feature_extraction.text.CountVectorizer
)。
我看了检查表。 根据我所看到的,可以从清单中检查以下内容:
sklearn.feature_extraction.image.img_to_graph
sklearn.isotonic.IsotonicRegression
sklearn.isotonic.check_increasing
谢谢@haiatn ,我已经更新了清单。
- 我没有找到文件
sklearn.ensemble.HistGradientBoostingRegressor
但所有的sklearn.ensemble
都可以
sklearn.ensemble.HistGradientBoostingClassifier
和sklearn.ensemble.HistGradientBoostingRegressor
在这个文件中: scikit-learn/sklearn/ensemble/_hist_gradient_boosting/gradient_boosting.py
。 然而,它们已经被修复了。
我可以处理
sklearn.manifold._spectral_embedding
和sklearn.feature_extraction.text.HashVectorizer
吗? 我会在单独的公关中做到这一点。 我认为它们是唯一需要修复的文件(假设使用了sklearn.feature_extraction.text.CountVectorizer
)。
我查看了sklearn.manifold
模块和sklearn.feature_extraction.text.HashingVectorizer
并且它们已经修复(我已经相应地更新了清单)。
尽管如此, sklearn.utils
模块中仍有几个函数需要修复。
谢谢@haiatn ,我们非常感谢您的帮助!
我现在将处理sklearn.utils._estimator_html_repr
、 sklearn.utils.deprecation
和sklearn.utils._testing
我会完成 sklearn.utils。 我发现只有 3 个文件需要修复。
嘿@alfaro96 ,
你能审查我的开放拉取请求吗? 我认为他们是最后一个。
嘿@haiatn!
我已经看过你的公开 PR。
谢谢!
现在我们合并了 sklearn.utils 剩下的东西,它是清单上
最后一个打开的拉取请求 #18025,那么这个问题最终可能会被关闭。
你好,
我想开始贡献。 是否有任何等待修复默认值文档的类? 如果有的话,我可以接受。
嘿,开源的新手,我期待着修复文档,万一有需要修复的东西
最有用的评论
从逻辑上讲,如果参数是可选的,那么默认值不应该总是
None
吗? 有一个默认值不是None
表明它应该是必需的。如果有默认值,这通常意味着文献发现这是一个合理的默认值,这也表明该参数对性能有影响,因此它不应该是可选的,而应该只是提及默认值是什么。 根据定义,这些似乎更接近必需的参数,我们只是碰巧为用户做出了明智的选择,以便他们可以更改或不更改。
或者更实际地说,目前是否有任何我们发现的可选参数具有数字默认值,但指定
None
会引发异常? 这也表明该参数实际上是必需的,但已根据文献/研究选择了合理的默认值。或者,也许这些年来我一直在混淆
required
和optional
的含义? 哈哈。 无论哪种方式,我都愿意提供帮助!