Scikit-Learn’s API is remarkably well designed. The main design principles are:
- Consistency- 一致性:所有对象共享一个一致且简单的界面:
-
Estimators: 任何可以根据数据集估计某些参数的对象被称为estimator(例如, imputer是一个estimator)。估计过程是由 fit( ) 完成,它只接受一个数据集作为参数(或两个数据集用于监督学习算法;第二个数据集包含标签)。指导估计过程所需的任何其他参数都被视为超参数(例如imputer的strategy),并且必须将其设置为实例变量(通常通过一个构造函数参数)
-
Transformers: 一些estimators(例如imputer)也可以转换数据集; 这些被称为transformers。 再一次,API非常简单:转换过程由 transform( ) 方法执行,数据集为转换为参数,它返回转换后的数据集。这种转换通常依赖于学习得到的参数,就像imputer的strategy的情况一样。
所有transformers也有一个称为 fit_transform( ) 的便捷方法,相当于先调用fit( )然后再调用transform( )(但有时fit_transform( )被优化过并且运行得更快) -
Predictors:一些estimators能够进行预测数据集;他们被称为predictors。例如,Linear Regression模型是一个predictor:给出一个国家的人均GDP,它预测了生活满意度。predictors有一个predict( )方法,这个方法以一个新实例的数据集为预测参数,并返回相应预测的数据集。它也有一个score()方法,用于衡量给定测试集的预测质量(以及监督学习算法中相应的标签)
- Inspection:所有estimators的超参数都可以通过公共实例变量直接被访问(例如imputer.strategy),以及所有estimator’s学习得到的参数也可以通过具有下划线后缀的公共实例变量访问(例如imputer.statistics_)。
- Nonproliferation of classes:数据集表示为NumPy数组或SciPy稀疏矩阵,而不是自己定义的类。 超参数只是常规的Python字符串或数字
- Composition:现有的构建块被尽可能多的重复使用。 例如,很容易从任意变换的transformers 序列创建一个Pipeline estimator,后面紧跟着一个 final estimator。
- Sensible defaults:Scikit-Learn为大多数参数提供合理的默认值,从而可以轻松快速创建基线工作系统。
网友评论