1
2
3 .Model selection and evaluation
3.1 Cross-validation: evaluating estimator performance
交叉验证很耗时,但是在小型数据集上很好使。最终指标是求均值(k次)得出的。
3.1.1. Computing cross-validated metrics
最简单的计算metrics(指标)的方法就是在估计器和数据集上调用 cross_val_score 辅助函数。这函数计算得分的方式是scoring参数指定的。
3.1.2.1.1. K-fold
3.1.2.2.1. Stratified k-fold
是K折交叉的变体。保证了验证集和测试集中类别比例和原数据集是一样的:
(可以对比上面的KFold图示。)
用法:
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
#split()方法生成 (Generate)index,因为有K折,所以返回k次?
for train_index, test_index in split.split(housing, housing["income_cat"]):
strat_train_set = housing.loc[train_index]
strat_test_set = housing.loc[test_index]
6.Dataset transformations
6.1. Pipelines and composite estimators
6.1.1. Pipeline: chaining estimators
Pipeline of transforms with a final estimator.
是一个将多个transforms和最终的estimator组合成流水线的操作(整个过程是可以应用于交叉验证)。前面的若干个是transform,最后一个必须是estimator。而这两者区别仅在于要实现的函数不同:前者transform(),后者fit()。
类签名是:
class sklearn.pipeline.Pipeline(steps, *, memory=None, verbose=False)
6.1.4. ColumnTransformer for heterogeneous data
很多数据包含不同类型的feature:如包含文本、数值
6.3 Preprocessing data
6.3.1. Standardization, or mean removal and variance scaling
标准化是ML必须的一步。这里用到了StandardScaler(),公式是:
z
=
(
x
−
u
)
/
s
z = (x - u) / s
z=(x−u)/s
这样处理后的数据符合标准高斯分布。
6.3.1.1. Scaling features to a range
这是另一种标准化的方法:将特征缩放到某个区间上(默认是0-1),如 MinMaxScaler or MaxAbsScaler。公式是:
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min