整理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_range
array-like,用于训练的参数值,对应参数名称
1 | from sklearn.model_selection import validation_curve |