pipeline、网格搜索、交叉验证几问

1、训练集、测试集怎么直白理解?

训练集的信息是要完全暴露给数据处理、特征工程、模型训练的;

测试集的信息是完全相反,不暴露的;

就是要利用训练集得到数据处理器、特征工程、模型,完全走一遍过程,得到预测结果;

2、训练集、验证集、测试集怎么直白理解?

这里更准确的说法是:训练集-训练部分,训练集-验证部分,测试集;

依旧,测试集是完全不暴露给数据处理、特征工程、模型训练的;

需要注意的是,训练集-训练部分应该暴露,而训练集-验证部分不应该暴露,要做到这一点需要使交叉验证处在整个数据处理的最外层循环,也就是不能先对训练集进行数据处理,再将这个处理后的训练集给到交叉验证,这样相当于训练集-验证部分已经暴露了;

3、网格搜索怎么直白理解?

与网格搜索对应的是人工调参,在参数种类少,每个参数个数少的时候,人工调参花费时间不多;

网格搜索就比较自动化,对每一种参数组合都进行模型训练,最终可以在评价标准的基础上选出最优秀的参数组合和对应模型;

4、交叉验证怎么直白理解?

与交叉验证对应的是单分验证,单分验证是划分为训练集、测试集;

交叉验证实际上是划分为训练集-训练部分,训练集-验证部分,测试集;K折交叉验证是指训练集划分为K份,每次用k-1份作为训练集-训练部分,1份作为训练集-验证部分,这样模型可以评价K次,取K次平均作为这组参数组合下模型的表现效果,看起来比单分验证要严谨一些;

数据规模够的情况进行交叉验证,更严谨一些,规模太小就算了,就用单分验证也行;

5、pipeline使用有什么好处?

**省事

不用代码上每次处理器定义输出变量,再给到下个处理器作为输入变量;

用一个pipeline组合各个处理器,然后pipeline.fit就好了;

**跟网格搜索+交叉验证,组合使用,非常方便

这么来看,如果代码很简单,也没有用到网格搜索和交叉验证,不用pipeline也行;

你可能感兴趣的:(python基础实践,spark大数据分析,python)