pipeline+crossvalidation 调整参数值

由于刚刚进入这个领域,用sklearn在几个toy dataset上跑了几个算法后,就在发愁如何调整参数值的事情,在看了sklearn的官方文档和一些csdn之后整理如下:



官方网站给出了如上的一种评分方式,以这个为基础,通过不同的切分train dataset得到train和test 我们可以得到一个平均得分(当然通过改变参数scoring的值,具体规则在这http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter),如下(cv=5就是连续分割5次的意思)



(此处得到平均准确率以及方差)

如果cv是一个整数,那么cross_val_score会使用kfold 或者stratifiedKfold来分割trainset。

当我们的数据需要预处理的时候,我们可以先调用 sklearn.preprocessing,里面会有很多预处理函数(http://www.cnblogs.com/chaosimple/p/4153167.html),来达到更好的学习效果(用pipeline可以更快的实现这一切):





下面的这个函数是可以直接得到trainset的预测值,通过预测值和train的label比较


接下来当我们知道了cross——validation 的用法,我们来看看pipeline

pipeline的用法比较简单,他通过指定一些参数的值,进而用不同参数的clf进行训练,当然他有一些更加高级的用法,可以参看http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline ,在此不赘述,具体用法如下图:

处理的过程一定要按照顺序来,key的值是什么都可以,但注意要与下面一一对应,下面是一些参数的值




下面我们可以使用GridSearchCV的方法来找到最佳参数(这一部分借鉴rachel-zhang的blog)



通过自定义,scoring 的方法我们可以得到不同的评分标准


结果如下:



你可能感兴趣的:(pipeline,GridSearch)