Scikit-Learn 设计原则(API设计)

一、一致性:所有对象的接口一致且简单

1. 估计器(estimator)

任何可以基于数据对一些参数进行估计的对象都被称为估计器(比如,imputer是个估计器)。估计本身是通过fit()方法,只需要一个数据集作为参数(对于监督学习算法,需要两个数据集;第二个数据集包含标签)。任何其他用来指导估计过程的参数都被当做超参数(比如imputer的strategy),并且超参数要被设置成实例变量。

2. 转换器(transformer)

一些估计器(比如imputer)也可以转换数据集,这些估计器被称为转换器。API也相当简单:转换是通过transform()方法,被转换的数据集作为参数。返回的是经过装换的数据集。转换过程依赖学习到的参数,比如imputer的例子。所有的转换都是一个便捷的方法fit_tansform(),等同于调用fit()再transform()(有时候fit_transform()更快)

3.预测器(prdfictor)

最后,一些估计器可以根据给出的数据集做预测,这些估计器称为预测器。例如,上一章的LinerRegression模型就是一个预测器:它根据一个国家的人均GDP预测生活满意度。预测器还有一个score()方法,可以根据测试集(和相应的标签,如果是监督学习算法的话)对预测进行衡量。


二、可检验

所有估计器的超参数都是可以通过实例的public变量直接访问(比如,imputer.strategy),并且所有估计器学习到的参数也可以通过实例变量名后加下划线来反问(比如,imputer.statistics_)


三、类不可扩散

数据集被表示成Numpy数组或scipy稀疏矩阵,而不是自制的类。++超参数只是普通的Python字符串或者数字++。


四、可组合

尽可能使用现存的模块。例如,用任意的转换器序列加上一个估计器,就可以成一个流水线(线性表达)。


五、合理的默认值

Scikit-Learn 给大多是参数提供了合理的默认值,很容易能创建一个系统

例如:

"""
基本步骤:
1. 创建实例
2. 拟合
3. 处理
"""
# 1.创建实例
imputer = Imputer(strategy = "median")
### 处理非文本属性
housing_num = housing.drop("ocean_proximity", axis = 1)

# 2.以用fit()方法将imputer实例拟合到训练数据
imputer.fit(housing_num) 

# 3.将缺失值替换为中位数
X = imputer.transform(housing_num)
housing_tr = pd.DataFrame(X, columns=housing_num.columns)

猜你喜欢

转载自blog.csdn.net/Scc_hy/article/details/81156277