整理sklearn.model_selection中一些常用的类及其基本用法。
拆分数据(sklearn.model_selection.train_test_split)
用于将数据集拆分为两部分,一部分用于模型训练,一部分用于模型评估。
train_test_split(*arrays, test_size=0.25, train_size=None, random_state=None, shuffle=True, stratify=None)
*arrays相同长度的一系列n个数据集,接受格式有[lists, numpy arrays, scipy-sparse matrices or pandas dataframes]。返回2n个数据集,一个输入对应两个输出。test_size=0.25整数或小数。代表个数或比例train_size=None同上,两个_size指定一个就好了random_state=None随机数种子shuffle=True拆分前是否打乱数据。If shuffle=False then stratify must be None.stratify=None
| 1 | from sklearn.model_selection import train_test_split | 
网格搜索(sklearn.model_selection.GridSearchCV)
这个呢,hei好用,可以便捷的帮我们确定最优参数,并且设置好需要训练的模型还有对应的参数,会在每一组参数进行训练,然后使用最优的一组参数来训练最终的模型,设置起来也不复杂。
GridSearchCV(estimator, paramgrid, scoring=None, fit_params=None, n_jobs=None, iid=’warn’, refit=True, cv=’warn’, verbose=0, pre_dispatch=’2*n_jobs’, error_score=’raise-deprecating’, return_train_score=’warn’)
estimator学习器接口,设定用于训练模型的算法,比如 sklearn.svm.SVR()。需要有 scoring 参数,否则不对模型进行评估param_grid参数网格,传入字典或 value为列表的字典。e.g. {‘C’: [1, 10, 100]}scoring=None模型的评分方式,如果为 None,则使用模型默认的度量。可以是字符串、可调用对象、列表 / 元组、字典。fit_params=None传给fit方法的参数n_jobs=None并行作业数iid='warn'(Changed in version 0.20: Parameter iid will change from True to False by default in version 0.22, and will be removed in 0.24)refit=True是否在整个数据集上使用得到的最佳参数重新训练。cv='warn'交叉验证策略,默认为 3折交叉验证。verbose=0控制冗余,越高,信息越多。pre_dispatch='2*n_jobs'控制并行作业期间分配的作业数量,可以是 int、str(关于 n_jobs的函数表达式)。error_score='raise-deprecating'如果训练出错返回的分数。return_train_score='warn'如果 False,cv_results属性不包含分数。
| 1 | from sklearn.model_selection.GridSearchCV | 
交叉验证(sklearn.model_selection.cross_val_score)
可以返回值为每一次交叉验证后得分的数组,每一次只能针对一组参数值进行训练,所以如果要确定最优的参数,得自己写一个循环,比较麻烦,得到最优参数之后还要重新在所有数据上自己训练一遍……
cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=’warn’, n_jobs=None, verbose=0, fit_params=None, pre_dispatch=’2*n_jobs’, error_score=’raise-deprecating’)
X需要训练的数据y=None数据的标签值groups=None划分数据为 train/test set 时使用的分类标签
(其余同上)
| 1 | from sklearn.model_selection import cross_val_score | 
验证曲线(sklearn.model_selection.validation_curve)
这个函数嘞,会返回两个数组:train_scores、test_scores ,比较方便用来画针对某一个参数的学习曲线。两个分别是在进行交叉验证时在训练集s以及验证集上的得分,大小为 (传入的参数数量,交叉验证折数)
validation_curve(estimator, X, y, param_name, param_range, groups=None, cv=’warn’, scoring=None, n_jobs=None, pre_dispatch=’all’, verbose=0, error_score=’raise-deprecating’)
param_name变化的参数的名称param_rangearray-like,用于训练的参数值,对应参数名称
| 1 | from sklearn.model_selection import validation_curve |