旧版本#

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现在支持staged_predict_probastaged_predict

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

  • 所有聚类算法现在都将传递给fit的数组X解释为输入数据,特别是SpectralClusteringAffinityPropagation,它们之前需要的是亲和矩阵。

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

贡献者#

版本 0.11#

2012年5月7日

更新日志#

更新亮点#

其他更改#

  • Peter Prettenhofer 贡献的合并了随机梯度下降模块的密集和稀疏实现,并为顺序数据集seq_dataset和权重向量weight_vector公开了实用程序扩展类型。

  • Mathieu Blondel 贡献的为随机梯度下降模块添加了partial_fit(支持在线/小批量学习)和warm_start。

  • 由Lars Buitinck合并了支持向量机类的密集和稀疏实现以及LogisticRegression

  • 由Mathieu Blondel实现了现在可以在多类和多输出算法模块中使用回归器作为基估计器。

  • 由Mathieu Blondel为metrics.pairwise_distancesmetrics.pairwise.pairwise_kernels添加了`n_jobs`选项以进行并行计算。

  • 现在可以使用`n_jobs`参数(用于K-meanscluster.KMeans)并行运行K-means,由Robert Layton实现。

  • 改进了交叉验证:评估估计器性能调整估计器的超参数文档,并由Olivier Grisel引入了新的cross_validation.train_test_split辅助函数。

  • 为了与decision_function保持一致,SVC成员coef_intercept_改变了符号;对于kernel==linear,在一对一情况下修复了coef_,由Andreas Müller完成。

  • 由Reuben Fletcher-Costin改进了高效留一法交叉验证岭回归的性能,尤其是在n_samples > n_features的情况下,在RidgeCV中。

  • 由Olivier Grisel重构和简化了文本特征提取API,并修复了一个可能导致IDF为负值的bug。

  • 由于难以Cython化,已删除_BaseHMM模块中的光束修剪选项。如果您有兴趣贡献Cython版本,您可以参考git历史记录中的python版本。

  • 现在,最近邻中的类支持最近邻搜索的任意Minkowski度量。度量可以通过参数p指定。

API更改摘要#

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

  • 最近邻模块中已删除NeighborsClassifierNeighborsRegressor。请改用KNeighborsClassifierRadiusNeighborsClassifierKNeighborsRegressor和/或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.unsupervised一起移动到metrics.cluster.supervised,其中包含轮廓系数。

  • 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版发布三个月后,包含新的模块流形学习狄利克雷过程,以及一些新的算法和文档改进。

此版本还包括由Vlad Niculae作为谷歌暑期代码项目一部分开发的字典学习工作。

banner2 banner1 banner3

变更日志#

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 参数:相反,所有参数都必须仅作为构造函数参数传递,或者使用现在公开的 set_params 方法(继承自 BaseEstimator)。

    某些估计器仍然可以在 fit 上接受关键字参数,但这仅限于依赖于数据的 value(例如,从 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 代码冲刺一个月后。其特点是包含了重要的模块:层次聚类交叉分解非负矩阵分解 (NMF 或 NNMF),以及对 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 模块。

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

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

  • 更快的坐标下降算法。特别是,套索的全路径版本 (linear_model.lasso_path) 比以前快 200 多倍。

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

  • 模块重命名:glm 模块已重命名为 linear_model,gmm 模块已包含在更通用的混合模型中,sgd 模块已包含在 linear_model 中。

  • 许多错误修复和文档改进。

贡献者#

参与本次发布的人员,按提交次数排序

版本 0.5#

2010年10月11日

变更日志#

新增类#

  • svmlinear_model 模块的一些分类器中支持稀疏矩阵(参见 svm.sparse.SVCsvm.sparse.SVRsvm.sparse.LinearSVClinear_model.sparse.Lassolinear_model.sparse.ElasticNet)。

  • 新增 Pipeline 对象以组合不同的估计器。

  • 特征选择 模块中增加了递归特征消除例程。

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

  • 新的、更高效的 LARS 算法实现。还实现了该算法的 Lasso 变体。参见 lars_pathLarsLassoLars

  • 新的隐马尔可夫模型模块(参见类 hmm.GaussianHMMhmm.MultinomialHMMhmm.GMMHMM)。

  • 新的模块 feature_extraction(参见 类参考)。

  • 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包保持一致,对坐标下降算法进行了重构(和错误修复)。

  • 新的度量模块。

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

  • LARS算法的实现(目前没有Lasso变体)。

  • feature_selection模块重新设计。

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

  • 删除过时的attrselect模块。

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

  • 删除旧的未维护的代码。

  • 文档改进(文档字符串和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的贡献。