机器学习十 交叉验证

来源:互联网 发布:网络教育专业推荐 编辑:程序博客网 时间:2024/04/29 15:09

交叉验证(Cross Validation)


定义(摘自百度百科):交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。


目的:为了获得一个更加稳定可靠的模型。


交叉验证代码实例

from sklearn import datasetsfrom sklearn.svm import SVCiris = datasets.load_iris()features = iris.datalabels = iris.targetfrom sklearn import cross_validationfeatures_train, features_test, labels_train, labels_test = cross_validation.train_test_split(features,labels,test_size=0.4,random_state=0)clf = SVC(kernel="linear", C=1.)clf.fit(features_train, labels_train)print clf.score(features_test, labels_test)



K折交叉验证(K Fold Cross Validation)

→将数据拆分成训练集与验证集的过程

算法基本要点:将训练数据平分到相同大小的K个容器内。

在K折交叉验证中,将运行K次单独的学习实验,在每次实验中,将从K个子集中挑选一个作为验证集,剩下(K-1)个容器放在一起作为训练集,然后训练机器学习算法。

在验证集上验证性能。

交叉验证中的要点是这个操作会运行多次,然后对K次试验的测试结果取平均值。



随机化 Sklearn k 折 CV 中的事件

cv = KFold( len(authors), 2, shuffle=True )


Sklearn中的GridSearchCV 

用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数。它的好处是,只需增加几行代码,就能遍历多种组合。

parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}svr = svm.SVC()clf = grid_search.GridSearchCV(svr, parameters)clf.fit(iris.data, iris.target)


原创粉丝点击