10折交叉验证sklearn,k折交叉验证代码
文章目录K缩进交叉检查sklearn的K缩进交叉检查sklearn的GridSearchCV。您的第一个(过度拟合的)POI标识符的准确性如何?部署的正确测试范围的准确性
交叉检查
通过测试和验证,评估算法是否能做到自己想要的。
sklearn中的K-turn交叉验证
要快速随机化Sklearn k-fold CV事件,请将shuffle flag设置为true。
然后,代码应该如下所示:
Cv=KFold(len) Authors),2)如下图所示。
cv=KFold(len(Authors),2,shuffle=True )
shuffle=True 可避免所有某一特定类型的事件都属于训练集,而另一特定类型的事件则属于测试集,在这种情况下,针对一种类型事件的训练不会帮助我们成功地对另一类型的事件进行分类
froms kle arn . cross _ validationimportkfoldt 0=time(cv=KF老)len ) Authors),2,Shuffle=true(将# shuffle标志设置为true test _ indicesinkf:# makeraningandtesting datasets features _ train=[word _ data[ii]for iintry _ indicators]#使用索引features _ test=[word _ data[ii]for iintest _ indicators]Authors _ train=[Authors[ii]forints]tfidfandfeatureselectionvector=tfidf stop _ words= English )ea ture _ test _ transformed=矢量化r . transform(features _ test)selector=select percentile(f _ classif),percentile=10)selector . fit(features _ train _ transformed,authors _ train(features _ train _ transformed=selector . transform(features _ train _ transformed)。 toarray)形式(Features_test_transformed)。to数组(clf=Gaussian nb))is authors _ training)print training time:s t0=time)pred=clf。predict) feat round (time)-t0,3),sACC=accuracy_score(pred,authors_test)
sklearn文档的示例如下所示。
参数={ kernel: (linear , rbf ), c: [1,10]} SVR=SVM . SVC)clf=grid _ search。
Parameters={ kernel: ( linear , rbf ), c: (1 1,10)}参数字典及其值。在这种情况下,他们试图找到内核的最佳组合(可能的选择是“‘‘线性”和“RBF”),c)可能的选择是1和10)。
在这种情况下,一个具有不同内核、c参数值的“网格”将自动生成:
(rbf),1 ) ) rbf),10)).
线性,1)(线性,10)的每个组合用于训练SVM,并通过交叉验证来评估性能。
Svr=svm。SVC()这有点类似于创建一个分类器,就像我们从第一课开始做的那样。但是,请注意,直到下一行才会生成“clf”——这只是关于使用哪种算法的问题。另一种思考方式是,这种情况下的“分类器”不仅仅是一个算法,而是一个算法加上参数值。请注意,这里不需要尝试kernel或者C;下一行将处理这个问题。
clf=grid _ search . grid search cv(SVR,parameters)这是第一个不可思议的事情,分类器已经创建出来了。我们将算法(svr)和参数字典传递给try,它会生成一个参数组合网格供try使用。
clf.fit的第二个不可思议之处(iris.data,iris.target)。拟合函数现在尝试所有参数组合并返回适当的分类器,自动调整到最佳参数组合。现在可以通过clf.best_params_获取参数值。
在本征脸示例中,SVM的哪些参数是使用GridSearchCV自动调整的?
和伽马射线
您的第一个(过度拟合的)POI标识符的准确性如何?可以想象的最简单的(未验证的)POI标识符将首先被构建。本课的初始代码(validate/validate _ poi.py)非常简单。它的功能是读入数据并将其格式化为标签和要素列表。在所有数据中创建一个决策树分类器(仅使用默认参数)(您将在下一部分解决这个问题!)并打印出精度。这是一棵过度拟合的树,不要相信这个数字!然而,准确率是多少?
进口泡菜进口系统。路径。追加(./tools/)从特征_格式导入featureFormat,targetFeatureSplitsort_keys=./tools/python 2 _第13课_ keys。pkl data _ dict=pickle。加载(打开(./最终项目/最终项目数据集。pkl , r )###第一个元素是我们的标签,任何添加的元素都是预测符# # #特征。对于迷你项目,保持这一点不变,但当您完成最终项目时,您将###拥有不同的功能列表features_list=[poi , salary ]data=feature format(data _ dict,features_list)标签,features=targetFeatureSplit(data)from sk learn导入树clf=tree .决策树分类器。fit(要素,标注)pred _ dt=clf。从sk学习预测(特征)。韵律学导入accuracy _ score ACC _ dt=accuracy _ score(pred _ dt,labels)print ACC _ dt # 0.996766766适当部署的测试范围的准确度现在,你将添加训练和测试,以便获得一个可靠的准确率数字。使用sklearn.cross_validation中的训练_测试_分割验证;将30% 的数据用于测试,并设置随机状态参数为42(随机_状态控制哪些点进入训练集,哪些点用于测试;将其设置为42 意味着我们确切地知道哪些事件在哪个集中;并且可以检查你得到的结果)。更新后的准确率是多少?
适当部署的测试范围的准确度是多少?
进口泡菜进口系统。路径。追加(./tools/)从特征_格式导入featureFormat,targetFeatureSplitsort_keys=./tools/python 2 _第13课_ keys。pkl data _ dict=pickle。加载(打开(./最终项目/最终项目数据集。pkl , r )###第一个元素是我们的标签,任何添加的元素都是预测符# # #特征。对于小型项目,保持这一点不变,但当您完成最终项目时,您将###拥有不同的功能列表features_list=[poi , salary ]data=feature format(data _ dict,features_list)标签,features=targetFeatureSplit(data)来自sk learn导入树来自sklearn.model_selection导入train_test_splitfeatures_train,features_test,labels_train,labels _ test= train _ test _ split(features,labels _ size=0.3,random _决策树分类器()clf。fit(features _ train,labels _ train)pred _ dt=clf。从sk学习预测(features _ test)。韵律学导入accuracy _ score ACC _ dt=accuracy _ score(pred _ dt,labels _ test)print ACC _ dt # 0.72334034
在上次测验中99%的准确率之后,测试数据让我们回到了现实中