旧版本#

版本 0.12.1#

2012年10月8日

0.12.1 版本是一个修复错误的版本,没有增加新功能,而是修复了一系列错误。

更新日志#

贡献者#

版本 0.12#

2012年9月4日

更新日志#

API 变更总结#

  • 旧的 scikits.learn 包已经消失;所有代码应改为从 sklearn 导入,后者在 0.9 版本中引入。

  • metrics.roc_curve 中, thresholds 数组现在以相反的顺序返回,以保持与返回的 fprtpr 的顺序一致。

  • hmm 对象中,如 hmm.GaussianHMMhmm.MultinomialHMM 等,所有参数必须在初始化对象时传递,而不是通过 fit 。现在 fit 只接受数据作为输入参数。

  • 对于所有 SVM 类, gamma 的错误行为已修复。以前,默认的 gamma 值只在第一次调用 fit 时计算并存储。现在每次调用 fit 时都会重新计算。

  • 所有 Base 类现在都是抽象元类,因此不能被实例化。

  • cluster.ward_tree 现在还返回父数组。这对于早期停止是必要的,因为在这种情况下树没有完全构建。

  • CountVectorizer 中,参数 min_nmax_n 合并到参数 n_gram_range 中,以同时启用网格搜索。

  • CountVectorizer 中,默认情况下忽略仅在一个文档中出现的单词。要重现之前的行为,请设置 min_df=1

  • 修复了 API 不一致性:linear_model.SGDClassifier.predict_proba 现在在两个类别上拟合时返回二维数组。

  • 修复了 API 不一致性:discriminant_analysis.QuadraticDiscriminantAnalysis.decision_functiondiscriminant_analysis.LinearDiscriminantAnalysis.decision_function 现在在两个类别上拟合时返回一维数组。

  • 用于拟合 LassoCVElasticNetCV 的 alpha 网格现在存储在属性 alphas_ 中,而不是覆盖初始化参数 alphas

  • 当通过交叉验证估计alpha值时,线性模型将估计值存储在 alpha_ 属性中,而不是仅仅存储 alphabest_alpha

  • GradientBoostingClassifier 现在支持:meth:~ensemble.GradientBoostingClassifier.staged_predict_proba 和:meth:~ensemble.GradientBoostingClassifier.staged_predict

  • svm.sparse.SVC 和其他稀疏SVM类现已弃用。支持向量机 模块中的所有类现在会根据输入自动选择稀疏或密集表示。

  • 所有聚类算法现在将传递给 fit 的数组 X 解释为输入数据,特别是:class:~cluster.SpectralClustering 和:class:~cluster.AffinityPropagation ,它们之前期望亲和矩阵。

  • 对于将所需聚类数量作为参数的聚类算法,此参数现在称为 n_clusters

贡献者#

版本 0.11#

2012年5月7日

更新日志#

亮点#

其他变化#

API变更总结#

  • covariance.EllipticEnvelop 现已弃用。请改用 EllipticEnvelope

  • NeighborsClassifierNeighborsRegressor最近邻算法 模块中已不存在。请使用类 KNeighborsClassifierRadiusNeighborsClassifierKNeighborsRegressor 。 and/or RadiusNeighborsRegressor 代替。

  • 随机梯度下降 模块中的稀疏类现在已弃用。

  • mixture.GMMmixture.DPGMMmixture.VBGMM 中,参数必须在初始化对象时传递,而不是通过 fit 。现在 fit 只接受数据作为输入参数。

  • GMM 模块中的方法 rvsdecode 现在已弃用。应使用 samplescorepredict 代替。

  • 单变量特征选择对象中的属性 _scores_pvalues 现在已弃用。应使用 scores_pvalues_ 代替。

  • LogisticRegressionLinearSVCSVCNuSVC 中, class_weight 参数现在是初始化参数,而不是拟合参数。这使得对该参数进行网格搜索成为可能。

  • LFW data 现在总是形状 (n_samples, n_features) ,以与 Olivetti 人脸数据集保持一致。使用 imagespairs 属性来访问自然图像形状。

  • LinearSVC 中, multi_class 参数的含义已更改。选项现在是 'ovr''crammer_singer' ,默认值为 'ovr' 。这不会改变默认行为,但希望不会那么令人困惑。

  • feature_selection.text.Vectorizer 已弃用,并被 feature_selection.text.TfidfVectorizer 取代。

  • 文本特征提取的预处理器/分析器嵌套结构已被移除。所有这些功能现在都直接作为平坦构造函数参数传递给 feature_selection.text.TfidfVectorizerfeature_selection.text.CountVectorizer ,特别是以下参数现在被使用:

  • analyzer 可以是 'word''char' 以切换默认分析方案,或使用特定的 Python 可调用对象(如之前一样)。

  • tokenizerpreprocessor 已被引入,以使在新 API 下仍然可以自定义这些步骤。

  • input 明确控制如何解释传递给 fitpredict 的序列:文件名、文件对象或直接(字节或 Unicode)字符串。

  • 字符集解码默认是显式且严格的。

  • 无论是否拟合, vocabulary 现在都存储在 vocabulary_ 属性中,以与项目约定保持一致。

  • feature_selection.text.TfidfVectorizer 现在直接继承自 feature_selection.text.CountVectorizer ,以使网格搜索变得简单。

  • _BaseHMM 模块中的方法 rvs 现已弃用。应改用 sample

  • _BaseHMM 模块中的波束修剪选项已被移除,因为它难以被 Cython 化。如果你感兴趣,可以通过 git 查看历史代码。

  • SVMlight 格式加载器现在支持同时包含零基和一基列索引的文件,因为这两种情况在实际应用中都会出现。

  • ShuffleSplit 的参数现在与 StratifiedShuffleSplit 一致。参数 test_fractiontrain_fraction 已弃用并重命名为 test_sizetrain_size ,并且可以接受 floatint

  • Bootstrap 的参数现在与 StratifiedShuffleSplit 一致。参数 n_testn_train 已弃用并重命名为 test_sizetrain_size ,并且可以接受 floatint

  • 最近邻算法 中的类添加了参数 p ,以指定最近邻搜索的任意 Minkowski 度量。

人员#

版本 0.10#

2012年1月11日

更新日志#

API 变更摘要#

以下是升级到 scikit-learn 版本 0.9 时的代码迁移说明:

  • 一些可能会覆盖其输入以节省内存的估计器之前有 overwrite_ 参数;这些参数已被替换为 copy_ 参数,其含义完全相反。

    这特别影响 linear_model 模块中的一些估计器。默认行为仍然是复制所有传入的内容。

  • SVMlight 数据集加载器 load_svmlight_file 不再支持一次加载两个文件;请改用 load_svmlight_files 。此外,(未使用的) buffer_mb 参数已移除。

  • 随机梯度下降 模块中的稀疏估计器现在使用密集参数向量 coef_ 而不是 sparse_coef_ 。这显著提高了测试时间性能。

  • 协方差估计 模块现在有一个稳健的协方差估计器,即最小协方差行列式估计器。

  • cluster 中的聚类评估指标已重构,但这些更改是向后兼容的。它们已移动到 metrics.cluster.supervised 中,以及包含轮廓系数的 metrics.cluster.unsupervised

  • permutation_test_score 函数现在与 cross_val_score 的行为相同(即使用跨折叠的平均分数。)

  • 交叉验证生成器现在默认使用整数索引( indices=True )而不是布尔掩码。这使得与稀疏矩阵数据一起使用更加直观。

  • 用于稀疏编码的函数 sparse_encodesparse_encode_parallel 已合并到 sparse_encode 中,并且数组的形状已转置,以便与矩阵分解设置保持一致,而不是回归设置。

  • 修复了SVMlight/LibSVM文件格式处理中的一个偏差错误; 使用 dump_svmlight_file 生成的文件应重新生成。 (它们应该继续工作,但意外地多了一个额外的零列。)

  • BaseDictionaryLearning 类已被 SparseCodingMixin 替换。

  • sklearn.utils.extmath.fast_svd 已重命名为 randomized_svd ,并且默认的过采样现在固定为10个额外的随机向量, 而不是将提取的组件数量加倍。新的行为遵循参考论文。

贡献者#

自上次发布以来,以下人员为scikit-learn做出了贡献:

版本 0.9#

2011年9月21日

scikit-learn 0.9 于2011年9月发布,距离0.8版本发布三个月,包括新的模块 流形学习 , Dirichlet过程 以及几种新算法和文档改进。

此版本还包括由 Vlad Niculae 开发的字典学习工作,作为 Google Summer of Code 计划的一部分。 .. |banner1| image:: ../auto_examples/manifold/images/thumb/sphx_glr_plot_compare_methods_thumb.png

target:

../auto_examples/manifold/plot_compare_methods.html

更新日志#

API 变更总结#

以下是当从 scikit-learn 版本 0.8 升级时的代码迁移说明:

  • scikits.learn 包被重命名为 sklearn 。为了向后兼容,仍然存在 scikits.learn 包别名。

    依赖于 scikit-learn 0.9+ 的第三方项目应升级其代码库。例如,在 Linux / MacOSX 上只需运行(首先进行备份!):

    find -name "*.py" | xargs sed -i 's/\bscikits.learn\b/sklearn/g'
    
  • 估计器不再接受将模型参数作为 fit 参数: 相反,所有参数必须仅作为构造函数参数传递或使用从 BaseEstimator 继承的现在公开的 set_params 方法。

    某些估计器仍然可以在 fit 上接受关键字参数,但这是受限于数据依赖值(例如,从 X 数据矩阵预先计算的 Gram 矩阵或亲和矩阵)。

  • cross_val 包已重命名为 cross_validation ,尽管为了向后兼容性也设置了 cross_val 包别名。

    依赖于 scikit-learn 0.9+ 的第三方项目应升级其代码库。例如,在 Linux / MacOSX 上只需运行(首先进行备份!):

    find -name "*.py" | xargs sed -i 's/\bcross_val\b/cross_validation/g'
    
  • sklearn.cross_validation.cross_val_score 函数的 score_func 参数现在期望仅接受 y_testy_predicted 作为分类和回归任务的参数,或无监督估计器的 X_test

  • 支持向量机算法的 gamma 参数默认设置为 1 / n_features ,而不是 1 / n_samples

  • sklearn.hmm 已被标记为孤立:它将在版本 0.11 中从 scikit-learn 中移除,除非有人站出来贡献文档、示例并修复潜在的数值稳定性问题。

  • sklearn.neighbors 已成为一个子模块。之前可用的两个估计器 NeighborsClassifierNeighborsRegressor 已被标记为已弃用。它们的功能已被分配到五个新类中:用于无监督邻居搜索的 NearestNeighbors ,用于监督分类问题的 KNeighborsClassifierRadiusNeighborsClassifier ,以及用于监督回归问题的 KNeighborsRegressorRadiusNeighborsRegressor

  • sklearn.ball_tree.BallTree 已移至 sklearn.neighbors.BallTree 。使用前者将生成警告。

  • sklearn.linear_model.LARS() 及相关类(LassoLARS、 LassoLARSCV 等)已重命名为 sklearn.linear_model.Lars()

  • sklearn.metrics.pairwise 中的所有距离度量和核现在都有一个 Y 参数,默认值为 None。如果未给出,结果是 Y 中每个样本之间的距离(或核相似度)。如果给出,结果是 X 中样本与 Y 中样本之间的成对距离(或核相似度)。

  • sklearn.metrics.pairwise.l1_distance 现在称为 manhattan_distance ,默认返回成对距离。对于逐元素距离,请将参数 sum_over_features 设置为 False

向后兼容包别名和其他已弃用的类和函数将在版本 0.11 中移除。

人员#

38 人为此版本做出了贡献。

版本 0.8#

2011年5月11日

scikit-learn 0.8 于 2011 年 5 月发布,距离第一个版本发布一个月后。 “国际” scikit-learn 编码冲刺 并且通过包含重要模块来标记:层次聚类交叉分解非负矩阵分解 ,对 Python 3 的初步支持以及重要的增强和错误修复。

更新日志#

在此版本中引入了几个新模块:

其他一些模块也得到了显著的改进或清理。

贡献者#

以下是使本次发布成为可能的人员,按提交次数排序:

版本 0.7#

2011年3月2日

scikit-learn 0.7 于2011年3月发布,大约在0.6版本发布后的三个月。此版本的特点是现有算法(如k-最近邻和K-均值算法)的速度改进,以及包含用于计算岭广义交叉验证解决方案的高效算法。与之前的版本不同,此版本没有添加新的模块。

更新日志#

贡献者#

使本次发布成为可能的人员,按提交次数排序:

版本 0.6#

2010年12月21日 scikit-learn 0.6 于2010年12月发布。这一版本的特点是引入了几个新模块,并对旧模块进行了普遍的重命名。同时,还增加了新的示例,包括应用于真实世界数据集的应用。

更新日志#

  • 由Peter Prettenhofer新增的 随机梯度下降 模块。该模块附带完整的文档和示例。

  • 改进的svm模块:内存消耗减少了50%,自动设置类别权重的启发式方法,以及为样本分配权重的可能性(参见示例 SVM:加权样本 )。

  • 由Vincent Dubourg新增的 高斯过程 模块。该模块同样拥有出色的文档和一些非常简洁的示例。可以查看 example_gaussian_process_plot_gp_regression.py 或 example_gaussian_process_plot_gp_probabilistic_classification_after_regression.py 来了解其功能。

  • 现在可以使用liblinear的多类SVC(在 LinearSVC 中使用multi_class选项)。

  • 文本特征提取的新功能和性能改进。

  • 改进了稀疏矩阵支持,包括主要类(GridSearchCV )以及模块 sklearn.svm.sparse 和 sklearn.linear_model.sparse。

  • 新增了许多酷炫的示例,并创建了一个使用真实世界数据集的新部分。这些包括:使用特征脸和支持向量机进行人脸识别的示例物种分布建模维基百科主特征向量 等。

  • 更快的 最小角回归 算法。现在在最坏情况下比R版本快2倍,在某些情况下甚至快达10倍。

  • 更快的坐标下降算法。特别是,lasso的完整路径版本(linear_model.lasso_path )速度更快。

比以前快了200倍。

  • 现在可以从 LogisticRegression 模型中获取概率估计。

  • 模块重命名:glm 模块已重命名为 linear_model,gmm 模块已并入更通用的混合模型,sgd 模块已并入 linear_model。

  • 大量的错误修复和文档改进。

贡献者#

使本次发布成为可能的人员,按提交次数排序:

版本 0.5#

2010年10月11日

更新日志#

新增类#

  • svmlinear_model 模块中的一些分类器支持稀疏矩阵(参见 svm.sparse.SVC , svm.sparse.SVR , svm.sparse.LinearSVC , linear_model.sparse.Lasso , linear_model.sparse.ElasticNet

  • 新的 Pipeline 对象,用于组合不同的估计器。

  • 模块 特征选择 中的递归特征消除例程。

  • 在 linear_model 模块中添加了各种能够进行交叉验证的类(LassoCV , ElasticNetCV , 等)。

  • 新的、更高效的 LARS 算法实现。该算法的 Lasso 变体也已实现。参见 lars_path , LarsLassoLars

  • 新的隐马尔可夫模型模块(参见类 hmm.GaussianHMM , hmm.MultinomialHMM , hmm.GMMHMM

  • 新的特征提取模块(参见 类参考

  • 模块 sklearn.fastica 中的新 FastICA 算法

文档#

  • 改进了许多模块的文档,现在将叙述性文档与类参考分开。例如,请参见 SVM 模块的文档 和完整的 类参考

修复#

  • API 变更:遵循 PEP-8 规范的变量命名,赋予更有意义的名称。

  • 修复了在共享内存上下文(多进程)中运行 svm 模块的问题。

  • 再次可以从 sphinx 文档生成 latex(以及 PDF)。

示例#

外部依赖#

  • Joblib 现在是此包的依赖项,尽管它随附于(sklearn.externals.joblib)。

移除的模块#

  • 模块 ann(人工神经网络)已从发行版中移除。需要此类算法的用户应查看 pybrain。

杂项#

  • 网页的新 sphinx 主题。

作者#

以下是此版本作者的列表,按提交次数排序:

  • 262 Fabian Pedregosa

  • 240 Gael Varoquaux

  • 149 Alexandre Gramfort

  • 116 Olivier Grisel

  • 40 Vincent Michel

  • 38 Ron Weiss

  • 23 Matthieu Perrot

  • 10 Bertrand Thirion

  • 7 Yaroslav Halchenko

  • 9 VirgileFritsch

  • 6 Edouard Duchesnay

  • 4 Mathieu Blondel

  • 1 Ariel Rokem

  • 1 Matthieu Brucher

版本 0.4#

2010年8月26日

更新日志#

此版本的主要变更包括:

  • 坐标下降算法(Lasso、ElasticNet)的重构与速度改进(大约快了 100 倍)。

  • 与R的包GLMNET保持一致的坐标下降重构(及错误修复)。

  • 新的metrics模块。

  • 由Ron Weiss贡献的新GMM模块。

  • 实现了LARS算法(目前不包括Lasso变体)。

  • feature_selection模块重新设计。

  • 迁移到GIT作为版本控制系统。

  • 移除过时的attrselect模块。

  • 私有编译扩展的重命名(添加下划线)。

  • 移除遗留的未维护代码。

  • 文档改进(包括docstring和rst)。

  • 改进构建系统以(可选地)与MKL链接。同时,在没有系统级BLAS的情况下提供一个精简的BLAS实现。

  • 大量新增示例。

  • 许多,许多错误修复…

作者#

此版本的提交者列表如下(按提交次数排序):

  • 143 Fabian Pedregosa

  • 35 Alexandre Gramfort

  • 34 Olivier Grisel

  • 11 Gael Varoquaux

  • 5 Yaroslav Halchenko

  • 2 Vincent Michel

  • 1 Chris Filo Gorgolewski

早期版本#

早期版本包括了Fred Mailhot、David Cooke、David Huard、Dave Morrill、Ed Schofield、Travis Oliphant、Pearu Peterson的贡献。