.. include:: _contributors.rst .. currentmodule:: sklearn ============ 版本 0.18 ============ .. warning:: Scikit-learn 0.18 是支持 Python 2.6 的最后一个主要版本。 后续版本的 scikit-learn 将需要 Python 2.7 或更高版本。 .. _changes_0_18_2: 版本 0.18.2 ============== **2017年6月20日** 更新日志 --------- - 修复与 NumPy 1.13.0 的兼容性问题::issue:`7946` :issue:`8355` 由 `Loic Esteve`_ 提供。 - 示例中的次要兼容性更改::issue:`9010` :issue:`8040` :issue:`9149` 。 代码贡献者 ----------------- Aman Dalmia, Loic Esteve, Nate Guerin, Sergei Lebedev .. _changes_0_18_1: 版本 0.18.1 ============== **2016年11月11日** 更新日志 --------- 增强功能 ............ - 通过在大多数情况下利用 numpy.random.permutation 提高了 ``sample_without_replacement`` 的速度。因此,对于固定的随机状态,此版本中的样本可能会有所不同。受影响的估计器: - :class:`ensemble.BaggingClassifier` - :class:`ensemble.BaggingRegressor` - :class:`linear_model.RANSACRegressor` - :class:`model_selection.RandomizedSearchCV` - :class:`random_projection.SparseRandomProjection` 这也影响了 :meth:`datasets.make_classification` 方法。 错误修复 ......... - 修复了 ``min_grad_norm`` 和 ``n_iter_without_progress`` 参数未被 :class:`manifold.TSNE` 使用的问题。:issue:`6497` 由 :user:`Sebastian Säger ` 提供。 - 修复了当 ``decision_function_shape`` 为 ``ovr`` 时 :class:`svm.SVC` 的决策值错误。:class:`svm.SVC` 的 decision_function 在 0.17.0 到 0.18.0 版本中不正确。:issue:`7724` 由 `Bing Tian Dai`_ 提供。 - 使用 SVD 和 Eigen 求解器计算的 :class:`discriminant_analysis.LinearDiscriminantAnalysis` 的 ``explained_variance_ratio`` 属性现在具有相同的长度。:issue:`7632` 由 :user:`JPFrancoia ` 提供。 - 修复了 :ref:`univariate_feature_selection` 中的问题,其中得分 函数之前不接受多标签目标。:issue:`7676` 由 :user:`Mohammed Affan ` 修复 - 修复了在多次调用 ``fit`` 方法时设置参数的问题 :class:`feature_selection.SelectFromModel` 。:issue:`7756` 由 `Andreas Müller`_ 修复 - 修复了在 ``partial_fit`` 方法中 :class:`multiclass.OneVsRestClassifier` 的问题,当用于 ``partial_fit`` 的类别数少于数据中的总类别数时。:issue:`7786` 由 `Srivatsan Ramesh`_ 修复 - 修复了 :class:`calibration.CalibratedClassifierCV` 中的问题,其中每个类别的概率总和不为1,并且 ``CalibratedClassifierCV`` 现在处理训练集中的类别数少于总数据的情况。:issue:`7799` 由 `Srivatsan Ramesh`_ 修复 - 修复了一个错误,:class:`sklearn.feature_selection.SelectFdr` 没有完全实现 Benjamini-Hochberg 过程。之前可能会选择比应该选择的更少的特征。 :issue:`7490` 由 :user:`Peng Meng ` 修复。 - :class:`sklearn.manifold.LocallyLinearEmbedding` 现在正确处理整数输入。:issue:`6282` 由 `Jake Vanderplas`_ 修复。 - 基于树的分类器和回归器的 ``min_weight_fraction_leaf`` 参数现在默认假设样本权重均匀,如果 ``fit`` 函数没有传递 ``sample_weight`` 参数。之前,该参数被静默忽略。:issue:`7301` 由 :user:`Nelson Liu ` 修复。 - 修复了在中心化数据上 :class:`linear_model.RidgeCV` 的数值问题,当 `n_features > n_samples` 时。:issue:`6178` 由 `Bertrand Thirion`_ 修复 - 树分裂准则类的克隆/序列化现在内存安全 :issue:`7680` 由 :user:`Ibraim Ganiev ` 修复。 - 修复了一个错误,:class:`decomposition.NMF` 在 `transform()` 中设置了其 ``n_iters_`` 属性。:issue:`7553` 由 :user:`Ekaterina Krivich ` 修复。 - :class:`sklearn.linear_model.LogisticRegressionCV` 现在正确处理字符串标签。:issue:`5874` 由 `Raghav RV`_ 修复。 - 修复了一个错误,当 ``stratify`` 是字符串标签列表时,:func:`sklearn.model_selection.train_test_split` 会引发错误。:issue:`7593` 由 `Raghav RV`_ 修复。 - 修复了一个错误,:class:`sklearn.model_selection.GridSearchCV` 和 :class:`sklearn.model_selection.RandomizedSearchCV` 由于 ``np.ma.MaskedArray`` 中的序列化错误而无法序列化。:issue:`7594` 由 `Raghav RV`_ 修复。 - :mod:`sklearn.model_selection` 中的所有交叉验证工具现在都允许 ``cv`` 参数使用一次性交叉验证分割器。同时,非确定性交叉验证分割器(多次调用 ``split`` 产生不同分割)也可以用作 ``cv`` 参数。:class:`sklearn.model_selection.GridSearchCV` 将在交叉验证分割器第一次调用 ``split`` 产生的分割上对每个参数设置进行交叉验证。:issue:`7660` 由 `Raghav RV`_ 修复。 - 修复了一个错误,:meth:`preprocessing.MultiLabelBinarizer.fit_transform` 返回了一个无效的 CSR 矩阵。:issue:`7750` 由 :user:`CJ Carey ` 修复。 - 修复了一个错误,:func:`metrics.pairwise.cosine_distances` 可能返回一个小的负距离。:issue:`7732` 由 :user:`Artsion ` 修复。 API 变更总结 ------------- 树和森林 - 基于树的分类器和回归器的 ``min_weight_fraction_leaf`` 参数现在默认假设样本权重均匀,如果 ``fit`` 函数没有传递 ``sample_weight`` 参数。以前,该参数被静默忽略。:issue:`7301` 由 :user:`Nelson Liu ` 修复。 - 树分割准则类的克隆/序列化现在内存安全。:issue:`7680` 由 :user:`Ibraim Ganiev ` 修复。 线性、核化和相关模型 - :class:`discriminant_analysis.LinearDiscriminantAnalysis` 的 ``explained_variance_ratio`` 长度对于 Eigen 和 SVD 求解器都发生了变化。该属性现在长度为 min(n_components, n_classes - 1)。:issue:`7632` 由 :user:`JPFrancoia ` 提供 - 当 ``n_features > n_samples`` 时,:class:`linear_model.RidgeCV` 在中心化数据上的数值问题。:issue:`6178` 由 `Bertrand Thirion`_ 提供 .. _changes_0_18: 版本 0.18 ======== **2016年9月28日** .. _model_selection_changes: 模型选择增强和API变更 ---------------------- - **model_selection 模块** 新的模块 :mod:`sklearn.model_selection` ,将原先的 `sklearn.cross_validation` 、 `sklearn.grid_search` 和 `sklearn.learning_curve` 的功能整合在一起,引入了新的可能性,如嵌套交叉验证和使用 Pandas 更好地处理参数搜索。 许多功能将保持不变,但有一些关键差异。阅读以下内容以了解更多关于这些变更的信息。 - **数据无关的CV分割器,支持嵌套交叉验证** 在 :mod:`sklearn.model_selection` 中定义的新交叉验证分割器不再使用任何数据依赖参数(如 ``y`` )进行初始化。相反,它们公开了一个 `split` 方法,该方法接受数据并生成不同分割的生成器。 这一变更使得可以使用交叉验证分割器执行嵌套交叉验证,由 :class:`model_selection.GridSearchCV` 和 :class:`model_selection.RandomizedSearchCV` 工具辅助实现。 - **增强的 cv_results_ 属性** 新的 ``cv_results_`` 属性(在 :class:`model_selection.GridSearchCV` 和 :class:`model_selection.RandomizedSearchCV` 中引入,取代了 ``grid_scores_`` 属性)是一个包含一维数组的字典,每个数组中的元素对应于参数设置(即搜索候选)。 ``cv_results_`` 字典可以轻松导入 ``pandas`` 作为 ``DataFrame`` ,以便探索搜索结果。 ``cv_results_`` 数组包括每个交叉验证分割的分数 (带有诸如 ``'split0_test_score'`` 这样的键), 以及它们的平均值 ( ``'mean_test_score'`` ) 和标准差 ( ``'std_test_score'`` ). 搜索候选者的排名(基于它们的平均交叉验证分数)可以在 ``cv_results_['rank_test_score']`` 中找到。 每个参数的参数值分别存储为 numpy 掩码对象数组。对于该搜索候选者,如果 相应的参数不适用,则该值被掩码。此外,所有参数字典的列表存储在 ``cv_results_['params']`` 中。 - **参数 n_folds 和 n_iter 重命名为 n_splits** 一些参数名称已更改: :class:`model_selection.KFold` 、 :class:`model_selection.GroupKFold` (见下文名称更改)和 :class:`model_selection.StratifiedKFold` 中的 ``n_folds`` 参数现在已重命名为 ``n_splits`` 。:class:`model_selection.ShuffleSplit` 、新类 :class:`model_selection.GroupShuffleSplit` 和 :class:`model_selection.StratifiedShuffleSplit` 中的 ``n_iter`` 参数现在已重命名为 ``n_splits`` 。 - **接受组标签和数据的分割器类重命名** 交叉验证分割器 ``LabelKFold`` 、 ``LabelShuffleSplit`` 、 ``LeaveOneLabelOut`` 和 ``LeavePLabelOut`` 已重命名为 :class:`model_selection.GroupKFold` 、 :class:`model_selection.GroupShuffleSplit` 、 :class:`model_selection.LeaveOneGroupOut` 和 :class:`model_selection.LeavePGroupsOut` 。 注意 :class:`model_selection.LeavePGroupsOut` 中从单数形式到复数形式的更改。 - **拟合参数 labels 重命名为 groups** 在新重命名的分割器 :class:`model_selection.GroupKFold` 、 :class:`model_selection.LeaveOneGroupOut` 、 :class:`model_selection.LeavePGroupsOut` 和 :class:`model_selection.GroupShuffleSplit` 的 `split` 方法中的 ``labels`` 参数已重命名为 ``groups`` , 以遵循其类名称的新命名法。 - **参数 n_labels 已重命名为 n_groups** 在新近重命名的 :class:`model_selection.LeavePGroupsOut` 中,参数 ``n_labels`` 已更改为 ``n_groups`` 。 - 训练分数和时间信息 ``cv_results_`` 还包括每个交叉验证分组的训练分数(键如 ``'split0_train_score'`` ),以及它们的均值( ``'mean_train_score'`` )和标准差( ``'std_train_score'`` )。为了避免评估训练分数的成本,可以设置 ``return_train_score=False`` 。 此外,所有交叉验证分组中用于分割、训练和评分模型的时间的均值和标准差分别在键 ``'mean_time'`` 和 ``'std_time'`` 中可用。 更新日志 -------- 新功能 ...... 分类器和回归器 - 高斯过程模块已重新实现,现在通过 :class:`gaussian_process.GaussianProcessClassifier` 和 :class:`gaussian_process.GaussianProcessRegressor` 提供分类和回归估计器。新实现支持核工程、基于梯度的超参数优化或从高斯过程先验和高斯过程后验中采样函数等功能。提供了广泛的文档和示例。由 `Jan Hendrik Metzen`_ 提供。 - 添加了新的监督学习算法::ref:`多层感知机 ` :issue:`3204` 由 :user:`Issam H. Laradji ` 提供 - 添加了 :class:`linear_model.HuberRegressor` ,一种对异常值稳健的线性模型。:issue:`5291` 由 `Manoj Kumar`_ 提供。 - 添加了 :class:`multioutput.MultiOutputRegressor` 元估计器。它通过为每个输出拟合一个回归器,将单输出回归器转换为多输出回归器。由 :user:`Tim Head ` 提供。 其他估计器 - 新的 :class:`mixture.GaussianMixture` 和 :class:`mixture.BayesianGaussianMixture` 取代了以前的混合模型,采用了更快的推理方法。 为了获得更可靠的结果。:issue:`7295` 由 :user:`Wei Xue ` 和 :user:`Thierry Guillemot ` 贡献。 - 类 `decomposition.RandomizedPCA` 现已分解为 :class:`decomposition.PCA` , 并且可以通过参数 ``svd_solver='randomized'`` 调用。 ``'randomized'`` 的默认 ``n_iter`` 次数已更改为 4。通过 ``svd_solver='full'`` 可以恢复 PCA 的旧行为。 另外,还添加了调用 ``arpack`` 的求解器,执行截断(非随机)SVD。默认情况下, 会根据输入的大小和请求的组件数量选择最佳求解器。:issue:`5299` 由 :user:`Giorgio Patrini ` 贡献。 - 增加了两个用于互信息估计的函数::func:`feature_selection.mutual_info_classif` 和 :func:`feature_selection.mutual_info_regression` 。这些函数可以用作 :class:`feature_selection.SelectKBest` 和 :class:`feature_selection.SelectPercentile` 的评分函数。由 :user:`Andrea Bravi ` 和 :user:`Nikolay Mayorov ` 贡献。 - 增加了 :class:`ensemble.IsolationForest` 类,用于基于随机森林的异常检测。 由 `Nicolas Goix`_ 贡献。 - 在 :class:`cluster.KMeans` 中增加了 ``algorithm="elkan"`` ,实现了 Elkan 的 快速 K-Means 算法。由 `Andreas Müller`_ 贡献。 模型选择和评估 - 增加了 :func:`metrics.fowlkes_mallows_score` ,即 Fowlkes Mallows 指数, 用于衡量一组点的两个聚类之间的相似性。由 :user:`Arnaud Fouchet ` 和 :user:`Thierry Guillemot ` 贡献。 - 增加了 `metrics.calinski_harabaz_score` ,用于计算 Calinski 和 Harabaz 分数, 以评估一组点的聚类结果。由 :user:`Arnaud Fouchet ` 和 :user:`Thierry Guillemot ` 贡献。 - 增加了新的交叉验证分割器 :class:`model_selection.TimeSeriesSplit` ,用于处理 时间序列数据。:issue:`6586` 由 :user:`YenChen Lin ` 贡献。 - 交叉验证迭代器被替换为从 :mod:`sklearn.model_selection` 中可用的交叉验证分割器,允许嵌套交叉验证。更多信息请参见 :ref:`model_selection_changes` 。:issue:`4294` 由 `Raghav RV`_ 提供。 增强功能 .......... 树和集成 - 为 :class:`tree.DecisionTreeRegressor` 添加了一个新的分割准则,即平均绝对误差。此准则也可用于 :class:`ensemble.ExtraTreesRegressor` 、:class:`ensemble.RandomForestRegressor` 以及梯度提升估计器。:issue:`6667` 由 :user:`Nelson Liu ` 提供。 - 为决策树增长添加了基于加权杂质的早期停止准则。:issue:`6954` 由 :user:`Nelson Liu ` 提供。 - 随机森林、额外树和决策树估计器现在有一个 ``decision_path`` 方法,该方法返回树中样本的决策路径。由 `Arnaud Joly`_ 提供。 - 新增了一个示例,揭示决策树结构。由 `Arnaud Joly`_ 提供。 - 随机森林、额外树、决策树和梯度提升估计器接受参数 ``min_samples_split`` 和 ``min_samples_leaf`` ,这些参数以训练样本的百分比形式提供。由 :user:`yelite ` 和 `Arnaud Joly`_ 提供。 - 梯度提升估计器接受参数 ``criterion`` ,用于指定构建决策树时使用的分割准则。:issue:`6667` 由 :user:`Nelson Liu ` 提供。 - 减少了 `ensemble.bagging.BaseBagging` 及其继承类(即 :class:`ensemble.BaggingClassifier` 、:class:`ensemble.BaggingRegressor` 和 :class:`ensemble.IsolationForest` )的内存占用(有时显著减少),通过仅在需要时动态生成属性 ``estimators_samples_`` 。由 :user:`David Staub ` 提供。 - 为 :class:`ensemble.VotingClassifier` 添加了 ``n_jobs`` 和 ``sample_weight`` 参数,以并行拟合底层估计器。 :issue:`5805` 由 :user:`Ibraim Ganiev ` 提交。 线性、核化及相关模型 - 在 :class:`linear_model.LogisticRegression` 中,SAG 求解器现在在多项式情况下可用。:issue:`5251` 由 `Tom Dupre la Tour`_ 提交。 - :class:`linear_model.RANSACRegressor` 、:class:`svm.LinearSVC` 和 :class:`svm.LinearSVR` 现在支持 ``sample_weight`` 。由 :user:`Imaculate ` 提交。 - 为 :class:`linear_model.RANSACRegressor` 添加参数 ``loss`` ,用于在每次试验中测量样本的误差。由 `Manoj Kumar`_ 提交。 - 使用等渗回归(:class:`isotonic.IsotonicRegression` )对样本外事件进行预测现在更快了(在合成数据测试中超过 1000 倍)。由 :user:`Jonathan Arfa ` 提交。 - 等渗回归(:class:`isotonic.IsotonicRegression` )现在使用更好的算法来避免病态情况下的 `O(n^2)` 行为,并且通常也更快(:issue:`#6691` )。由 `Antony Lee`_ 提交。 - :class:`naive_bayes.GaussianNB` 现在通过参数 ``priors`` 接受数据独立的类先验。由 :user:`Guillaume Lemaitre ` 提交。 - :class:`linear_model.ElasticNet` 和 :class:`linear_model.Lasso` 现在可以在不转换为 ``np.float64`` 的情况下处理 ``np.float32`` 输入数据。这允许减少内存消耗。:issue:`6913` 由 :user:`YenChen Lin ` 提交。 - :class:`semi_supervised.LabelPropagation` 和 :class:`semi_supervised.LabelSpreading` 现在除了字符串 ``knn`` 和 ``rbf`` 之外,还接受任意核函数。:issue:`5762` 由 :user:`Utkarsh Upadhyay ` 提交。 分解、流形学习和聚类 - 为 :class:`decomposition.NMF` 添加了 ``inverse_transform`` 函数,用于计算原始形状的数据矩阵。由 :user:`Anish Shah ` 提交。 - :class:`cluster.KMeans` 和 :class:`cluster.MiniBatchKMeans` 现在可以在不转换的情况下处理 ``np.float32`` 和 ``np.float64`` 输入数据。 这允许通过使用 ``np.float32`` 来减少内存消耗。 :issue:`6846` 由 :user:`Sebastian Säger ` 和 :user:`YenChen Lin ` 贡献。 预处理和特征选择 - :class:`preprocessing.RobustScaler` 现在接受 ``quantile_range`` 参数。 :issue:`5929` 由 :user:`Konstantin Podshumok ` 贡献。 - :class:`feature_extraction.FeatureHasher` 现在接受字符串值。 :issue:`6173` 由 :user:`Ryad Zenine ` 和 :user:`Devashish Deshpande ` 贡献。 - 现在可以通过 ``kw_args`` 参数向 :class:`preprocessing.FunctionTransformer` 中的 ``func`` 提供关键字参数。 由 `Brian McFee`_ 贡献。 - :class:`feature_selection.SelectKBest` 和 :class:`feature_selection.SelectPercentile` 现在接受只返回分数的评分函数,输入为 X, y。 由 :user:`Nikolay Mayorov ` 贡献。 模型评估和元估计器 - :class:`multiclass.OneVsOneClassifier` 和 :class:`multiclass.OneVsRestClassifier` 现在支持 ``partial_fit`` 。 由 :user:`Asish Panda ` 和 :user:`Philipp Dowling ` 贡献。 - 增加了通过 `sklearn.grid_search` 驱动的 ``set_params`` 接口替换或禁用 :class:`pipeline.Pipeline` 和 :class:`pipeline.FeatureUnion` 组件的支持。 参见 :ref:`sphx_glr_auto_examples_compose_plot_compare_reduction.py` 由 `Joel Nothman`_ 和 :user:`Robert McGibbon ` 贡献。 - :class:`model_selection.GridSearchCV` 的新 ``cv_results_`` 属性 (以及 :class:`model_selection.RandomizedSearchCV` )可以轻松导入到 pandas 中作为 ``DataFrame`` 。 参考 :ref:`model_selection_changes` 获取更多信息。 :issue:`6697` 由 `Raghav RV`_ 贡献。 - 对 :func:`model_selection.cross_val_predict` 的泛化。 可以传递诸如 `predict_proba` 的方法名,在交叉验证框架中使用,而不是默认的 `predict` 。 由 :user:`Ori Ziv ` 和 :user:`Sears Merritt ` 贡献。 - 训练得分和训练时间,以及每个搜索候选者的评分,现在可以在 ``cv_results_`` 字典中获取。 更多信息请参见 :ref:`model_selection_changes` 。 :issue:`7325` 由 :user:`Eugene Chen ` 和 `Raghav RV`_ 贡献。 指标 - 在 :class:`metrics.log_loss` 中添加了 ``labels`` 标志,以便在 ``y_true`` 和 ``y_pred`` 的类别数不同时显式提供标签。 :issue:`7239` 由 :user:`Hong Guangguo ` 在 :user:`Mads Jensen ` 和 :user:`Nelson Liu ` 的帮助下贡献。 - 在聚类评估( `metrics.cluster.supervised` )中支持稀疏的列联矩阵,以扩展到大量聚类。 :issue:`7419` 由 :user:`Gregory Stupp ` 和 `Joel Nothman`_ 贡献。 - 在 :func:`metrics.matthews_corrcoef` 中添加了 ``sample_weight`` 参数。 由 :user:`Jatin Shah ` 和 `Raghav RV`_ 贡献。 - 通过使用向量化操作加快了 :func:`metrics.silhouette_score` 的速度。 由 `Manoj Kumar`_ 贡献。 - 在 :func:`metrics.confusion_matrix` 中添加了 ``sample_weight`` 参数。 由 :user:`Bernardo Stein ` 贡献。 杂项 - 在 :class:`feature_selection.RFECV` 中添加了 ``n_jobs`` 参数,以并行计算测试折叠的分数。 由 `Manoj Kumar`_ 贡献。 - 代码库不包含 C/C++ cython 生成的文件:它们在构建过程中生成。分发包仍将包含生成的 C/C++ 文件。 由 :user:`Arthur Mensch ` 贡献。 - 通过支持 cython 融合类型,减少了 `utils.sparse_func.mean_variance_axis` 和 `utils.sparse_func.incr_mean_variance_axis` 对 32 位浮点输入数组的内存使用。 由 :user:`YenChen Lin ` 贡献。 - `ignore_warnings` 现在接受一个类别参数,以仅忽略指定类型的警告。 由 :user:`Thierry Guillemot ` 贡献。 - 在 :func:`datasets.load_iris` 数据集中添加了参数 ``return_X_y`` 和返回类型 ``(data, target) : tuple`` 选项 :issue:`7049` , :func:`datasets.load_breast_cancer` 数据集 :issue:`7152` , :func:`datasets.load_digits` 数据集, :func:`datasets.load_diabetes` 数据集, :func:`datasets.load_linnerud` 数据集, `datasets.load_boston` 数据集 :issue:`7154` 由 :user:`Manvendra Singh` 贡献。 - 简化了 ``clone`` 函数,弃用了在 ``__init__`` 中修改参数的估计器支持。:issue:`5540` 由 `Andreas Müller`_ 贡献。 - 当在不同于训练时版本的scikit-learn中解封装一个估计器时,会引发一个 ``UserWarning`` ,详情请参阅 :ref:`模型持久化文档 ` 。(:issue:`7248` ) 由 `Andreas Müller`_ 贡献。 Bug 修复 ......... 树和集成 - 随机森林、额外树、决策树和梯度提升不再接受 ``min_samples_split=1`` ,因为至少需要2个样本来分割决策树节点。由 `Arnaud Joly`_ 贡献。 - :class:`ensemble.VotingClassifier` 现在会在调用 ``predict`` 、 ``transform`` 或 ``predict_proba`` 时,如果估计器未拟合,则会引发 ``NotFittedError`` 。由 `Sebastian Raschka`_ 贡献。 - 修复了 :class:`ensemble.AdaBoostClassifier` 和 :class:`ensemble.AdaBoostRegressor` 在固定 ``random_state`` 时表现不佳的bug (:issue:`7411` )。由 `Joel Nothman`_ 贡献。 - 修复了集成中随机化时,集成不会在管道或类似嵌套中为基估计器设置 ``random_state`` 的bug (:issue:`7411` )。注意,:class:`ensemble.BaggingClassifier` 、:class:`ensemble.BaggingRegressor` 、:class:`ensemble.AdaBoostClassifier` 和 :class:`ensemble.AdaBoostRegressor` 的结果现在将与之前的版本不同。由 `Joel Nothman`_ 贡献。 线性、核化和相关模型 - 修复了 :class:`linear_model.SGDClassifier` 和 :class:`linear_model.SGDRegressor` 中 ``loss='squared_epsilon_insensitive'`` 的梯度计算错误 (:issue:`6764` )。由 :user:`Wenhua Yang ` 贡献。 - 修复了 :class:`linear_model.LogisticRegressionCV` 中的一个错误, 当 ``solver='liblinear'`` 时,不接受 ``class_weights='balanced'`` 。 (:issue:`6817` )。由 `Tom Dupre la Tour`_ 贡献。 - 修复了 :class:`neighbors.RadiusNeighborsClassifier` 中的一个错误, 当存在被标记的离群点且指定了权重函数时会发生错误 (:issue:`6902` )。 由 `LeonieBorne `_ 贡献。 - 修复了 :class:`linear_model.ElasticNet` 稀疏决策函数,使其在多输出情况下与密集输出匹配。 分解、流形学习和聚类 - `decomposition.RandomizedPCA` 默认的 `iterated_power` 次数为 4 而不是 3。 :issue:`5141` 由 :user:`Giorgio Patrini ` 贡献。 - :func:`utils.extmath.randomized_svd` 默认执行 4 次幂迭代,而不是 0。 实际上,这对于在噪声存在的情况下获得真实特征值/向量的良好近似已经足够。 当 `n_components` 较小时( ``< .1 * min(X.shape)`` ), `n_iter` 设置为 7,除非用户指定更高的次数。 这提高了少量组件时的精度。:issue:`5299` 由 :user:`Giorgio Patrini` 贡献。 - 修复了 :class:`decomposition.PCA` 和 `decomposition.RandomizedPCA` 组件之间的白化/非白化不一致问题 (现在已合并到 PCA 中,参见新特性)。 `components_` 以无白化方式存储。 :issue:`5299` 由 :user:`Giorgio Patrini ` 贡献。 - 修复了 :func:`manifold.spectral_embedding` 中的一个错误,其中未归一化的拉普拉斯矩阵的对角线被错误地设置为 1。 :issue:`4995` 由 :user:`Peter Fischer ` 贡献。 - 修复了 `utils.arpack.eigsh` 在所有情况下的不正确初始化问题。 影响 `cluster.bicluster.SpectralBiclustering` 、 :class:`decomposition.KernelPCA` 、:class:`manifold.LocallyLinearEmbedding` 和 :class:`manifold.SpectralEmbedding` (:issue:`5012` )。由 :user:`Peter Fischer ` 贡献。 - 使用 SVD 求解器计算的 ``explained_variance_ratio_`` 属性 :class:`discriminant_analysis.LinearDiscriminantAnalysis` 现在返回正确的结果。由 :user:`JPFrancoia ` 贡献。 预处理和特征选择 - `preprocessing.data._transform_selected` 现在在 ``copy=True`` 时总是传递 ``X`` 的副本给转换函数(:issue:`7194` )。由 `Caio Oliveira `_ 贡献。 模型评估和元估计器 - :class:`model_selection.StratifiedKFold` 现在会在单个类别的所有 n_labels 小于 n_folds 时抛出错误。:issue:`6182` 由 :user:`Devashish Deshpande ` 贡献。 - 修复了 :class:`model_selection.StratifiedShuffleSplit` 中的一个错误,该错误在某些边缘情况下会导致训练和测试样本重叠,详情参见 :issue:`6121` 。由 `Loic Esteve`_ 贡献。 - 修复了 :class:`sklearn.model_selection.StratifiedShuffleSplit` 以在所有情况下返回大小为 ``train_size`` 和 ``test_size`` 的拆分(:issue:`6472` )。由 `Andreas Müller`_ 贡献。 - :class:`multiclass.OneVsOneClassifier` 和 :class:`multiclass.OneVsRestClassifier` 的交叉验证现在支持预计算核。:issue:`7350` 由 :user:`Russell Smith ` 贡献。 - 修复了 :class:`model_selection.GridSearchCV` 到 :class:`linear_model.SGDClassifier` 的 ``predict_proba`` 方法委托不完整的问题(:issue:`7159` )。由 `Yichuan Liu `_ 贡献。 指标 - 修复了 :func:`metrics.silhouette_score` 中的一个错误,该错误导致大小为 1 的簇被错误评分。它们应该得到 0 分。由 `Joel Nothman`_ 贡献。 - 修复了 :func:`metrics.silhouette_samples` 中的一个错误,使其现在可以与任意标签一起工作,而不仅仅是那些范围从 0 到 n_clusters - 1 的标签。 - 修复了一个错误,即如果簇的列联单元格超过 ``2**16`` ,则预期和调整后的互信息不正确。由 `Joel Nothman`_ 贡献。 - :func:`metrics.pairwise_distances` 现在在 ``scipy.spatial.distance`` 中需要时将数组转换为布尔数组。:issue:`5460` 由 `Tom Dupre la Tour`_ 贡献。 - 修复了 :func:`metrics.silhouette_score` 中的稀疏输入支持问题,并更新了示例 examples/text/document_clustering.py。由 :user:`YenChen Lin ` 贡献。 - :func:`metrics.roc_curve` 和 :func:`metrics.precision_recall_curve` 在创建 ROC 曲线时不再对 ``y_score`` 值进行四舍五入;这导致用户在分数差异非常小的情况下出现问题(:issue:`7353` )。 其他 - `model_selection.tests._search._check_param_grid` 现在可以正确处理所有扩展/实现 `Sequence` 的类型(字符串除外),包括 range(Python 3.x)和 xrange(Python 2.x)。:issue:`7323` 由 Viacheslav Kovalevskyi 贡献。 - :func:`utils.extmath.randomized_range_finder` 在请求多次幂迭代时数值更稳定,因为它默认应用 LU 归一化。如果 ``n_iter<2`` ,数值问题不太可能发生,因此不应用归一化。其他归一化选项可用: ``'none', 'LU'`` 和 ``'QR'`` 。:issue:`5141` 由 :user:`Giorgio Patrini ` 贡献。 - 修复了一个 bug,某些格式的 ``scipy.sparse`` 矩阵以及将其作为参数的估计器无法传递给 :func:`base.clone` 。由 `Loic Esteve`_ 贡献。 - :func:`datasets.load_svmlight_file` 现在能够读取长整型 QID 值。:issue:`7101` 由 :user:`Ibraim Ganiev ` 贡献。 API 变更总结 ------------- 线性、核化及相关模型 - ``residual_metric`` 在 :class:`linear_model.RANSACRegressor` 中已被弃用。请改用 ``loss`` 。由 `Manoj Kumar`_ 贡献。 - 访问公共属性 ``.X_`` 和 ``.y_`` 在 :class:`isotonic.IsotonicRegression` 中已被弃用。由 :user:`Jonathan Arfa ` 贡献。 分解、流形学习和聚类 - 旧的 `mixture.DPGMM` 已被弃用,取而代之的是新的 :class:`mixture.BayesianGaussianMixture` (参数为 ``weight_concentration_prior_type='dirichlet_process'`` )。新类解决了计算问题。 - 旧的 `mixture.DPGMM` 已被弃用,取而代之的是新的 :class:`mixture.BayesianGaussianMixture` (参数为 ``weight_concentration_prior_type='dirichlet_process'`` )。 新类解决了旧类的计算问题,并且比以前更快地计算带有Dirichlet过程先验的高斯混合。 :issue:`7295` 由 :user:`Wei Xue ` 和 :user:`Thierry Guillemot ` 贡献。 - 旧的 `mixture.VBGMM` 已被弃用,取而代之的是新的 :class:`mixture.BayesianGaussianMixture` (参数为 ``weight_concentration_prior_type='dirichlet_distribution'`` )。 新类解决了旧类的计算问题,并且比以前更快地计算变分贝叶斯高斯混合。 :issue:`6651` 由 :user:`Wei Xue ` 和 :user:`Thierry Guillemot ` 贡献。 - 旧的 `mixture.GMM` 已被弃用,取而代之的是新的 :class:`mixture.GaussianMixture` 。新类比以前更快地计算高斯混合,并且解决了某些计算问题。 :issue:`6666` 由 :user:`Wei Xue ` 和 :user:`Thierry Guillemot ` 贡献。 模型评估和元估计器 - `sklearn.cross_validation` 、 `sklearn.grid_search` 和 `sklearn.learning_curve` 已被弃用,类和函数已重新组织到 :mod:`sklearn.model_selection` 模块中。 参考 :ref:`model_selection_changes` 获取更多信息。 :issue:`4294` 由 `Raghav RV`_ 贡献。 - :class:`model_selection.GridSearchCV` 和 :class:`model_selection.RandomizedSearchCV` 的 ``grid_scores_`` 属性已被弃用,取而代之的是 ``cv_results_`` 属性。 参考 :ref:`model_selection_changes` 获取更多信息。 :issue:`6697` 由 `Raghav RV`_ 贡献。 - 旧的CV分割器中的参数 ``n_iter`` 或 ``n_folds`` 已被新的参数 ``n_splits`` 替换,因为它可以提供一致且明确的接口来表示训练-测试分割的数量。 :issue:`7187` 由 :user:`YenChen Lin ` 贡献。 - ``classes`` 参数在 :func:`metrics.hamming_loss` 中被重命名为 ``labels`` 。 :issue:`7260` 由 :user:`Sebastián Vanrell ` 贡献。 - 分割器类 ``LabelKFold`` , ``LabelShuffleSplit`` , ``LeaveOneLabelOut`` 和 ``LeavePLabelsOut`` 已分别重命名为 :class:`model_selection.GroupKFold` , :class:`model_selection.GroupShuffleSplit` , :class:`model_selection.LeaveOneGroupOut` 和 :class:`model_selection.LeavePGroupsOut` 。此外,新重命名的分割器 :class:`model_selection.LeaveOneGroupOut` 和 :class:`model_selection.LeavePGroupsOut` 的 `split` 方法中的参数 ``labels`` 已重命名为 ``groups`` 。另外,在 :class:`model_selection.LeavePGroupsOut` 中,参数 ``n_labels`` 已重命名为 ``n_groups`` 。:issue:`6660` 由 `Raghav RV`_ 提出。 - 用于 ``scoring`` 参数的错误和损失名称现在以 ``'neg_'`` 为前缀,例如 ``neg_mean_squared_error`` 。未加前缀的版本已弃用,并将在版本 0.20 中移除。:issue:`7261` 由 :user:`Tim Head ` 提出。 代码贡献者 ------------ Aditya Joshi, Alejandro, Alexander Fabisch, Alexander Loginov, Alexander Minyushkin, Alexander Rudy, Alexandre Abadie, Alexandre Abraham, Alexandre Gramfort, Alexandre Saint, alexfields, Alvaro Ulloa, alyssaq, Amlan Kar, Andreas Mueller, andrew giessel, Andrew Jackson, Andrew McCulloh, Andrew Murray, Anish Shah, Arafat, Archit Sharma, Ariel Rokem, Arnaud Joly, Arnaud Rachez, Arthur Mensch, Ash Hoover, asnt, b0noI, Behzad Tabibian, Bernardo, Bernhard Kratzwald, Bhargav Mangipudi, blakeflei, Boyuan Deng, Brandon Carter, Brett Naul, Brian McFee, Caio Oliveira, Camilo Lamus, Carol Willing, Cass, CeShine Lee, Charles Truong, Chyi-Kwei Yau, CJ Carey, codevig, Colin Ni, Dan Shiebler, Daniel, Daniel Hnyk, David Ellis, David Nicholson, David Staub, David Thaler, David Warshaw, Davide Lasagna, Deborah, definitelyuncertain, Didi Bar-Zev, djipey, dsquareindia, edwinENSAE, Elias Kuthe, Elvis DOHMATOB, Ethan White, Fabian Pedregosa, Fabio Ticconi, fisache, Florian Wilhelm, Francis, Francis O'Donovan, Gael Varoquaux, Ganiev Ibraim, ghg, Gilles Louppe, Giorgio Patrini, Giovanni Cherubin, Giovanni Lanzani, Glenn Qian, Gordon Mohr, govin-vatsan, Graham Clenaghan, Greg Reda, Greg Stupp, Guillaume Lemaitre, Gustav Mörtberg, halwai, Harizo Rajaona, Harry Mavroforakis, hashcode55, hdmetor, Henry Lin, Hobson Lane, Hugo Bowne-Anderson, Igor Andriushchenko, Imaculate, Inki Hwang, Isaac Sijaranamual, Ishank Gulati, Issam Laradji, Iver Jordal, jackmartin, Jacob Schreiber, Jake Vanderplas, James Fiedler, James Routley, Jan Zikes, Janna Brettingen, jarfa, Jason Laska, jblackburne, jeff levesque, Jeffrey Blackburne, Jeffrey04, Jeremy Hintz, jeremynixon, Jeroen, Jessica Yung, Jill-Jênn Vie, Jimmy Jia, Jiyuan Qian, Joel Nothman, johannah, John, John Boersma, John Kirkham, John Moeller, jonathan.striebel, joncrall, Jordi, Joseph Munoz, Joshua Cook, JPFrancoia, jrfiedler, JulianKahnert, juliathebrave, kaichogami, KamalakerDadi, Kenneth Lyons, Kevin Wang, kingjr, kjell, Konstantin Podshumok, Kornel Kielczewski, Krishna Kalyan, krishnakalyan3, Kvle Putnam, Kyle Jackson, Lars Buitinck, ldavid, LeiG, LeightonZhang, Leland McInnes, Liang-Chi Hsieh, Lilian Besson, lizsz, Loic Esteve, Louis Tiao, Léonie Borne, Mads Jensen, Maniteja Nandana, Manoj Kumar, Manvendra Singh, Marco, Mario Krell, Mark Bao, Mark Szepieniec, Martin Madsen, MartinBpr, MaryanMorel, Massil, Matheus, Mathieu Blondel, Mathieu Dubois, Matteo, Matthias Ekman, Max Moroz, Michael Scherer, michiaki ariga, Mikhail Korobov, Moussa Taifi, mrandrewandrade, Mridul Seth, nadya-p, Naoya Kanai, Nate George, Nelle Varoquaux, Nelson Liu, Nick James, NickleDave, Nico, Nicolas Goix, Nikolay Mayorov, ningchi, nlathia, okbalefthanded, Okhlopkov, Olivier Grisel, Panos Louridas, Paul Strickland, Perrine Letellier, pestrickland, Peter Fischer, Pieter, Ping-Yao, Chang, practicalswift, Preston Parry, Qimu Zheng, Rachit Kansal, Raghav RV, Ralf Gommers, Ramana.S, Rammig, Randy Olson, Rob Alexander, Robert Lutz, Robin Schucker, Rohan Jain, Ruifeng Zheng, Ryan Yu, Rémy Léone, saihttam, Saiwing Yeung, Sam Shleifer, Samuel St-Jean, Sartaj Singh, Sasank Chilamkurthy, saurabh.bansod, Scott Andrews, Scott Lowe, seales, Sebastian Raschka, Sebastian Saeger, Sebastián Vanrell, Sergei Lebedev, shagun Sodhani, shanmuga cv, Shashank Shekhar, shawpan, shengxiduan, Shota, shuckle16, Skipper Seabold, sklearn-ci, SmedbergM, srvanrell, Sébastien Lerique, Taranjeet, themrmax, Thierry, Thierry Guillemot, Thomas, Thomas Hallock, Thomas Moreau, Tim Head, tKammy, toastedcornflakes, Tom, TomDLT, Toshihiro Kamishima, tracer0tong, Trent Hauck, trevorstephens, Tue Vo, Varun, Varun Jewalikar, Viacheslav, Vighnesh Birodkar, Vikram, Villu Ruusmann, Vinayak Mehta, walter, waterponey, Wenhua Yang, Wenjian Huang, Will Welch, wyseguy7, xyguo, yanlend, Yaroslav Halchenko, yelite, Yen, YenChenLin, Yichuan Liu, Yoav Ram, Yoshiki, Zheng RuiFeng, zivori, Óscar Nájera