提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:龚雪|2017-04-18 10:57:48.000|阅读 378 次
概述:如果你是一个机器学习的初学者,本系列文章将教你用R语言开启机器学习之旅
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
文|陆勤
现在,我们需要创建一些模型来对我们模型里一些未知的值进行精度的评估。
我们现在需要进行以下步骤操作:
1用10交叉验证建立测试用具
2建立5个不同的模型对每种不同的花进行预测。
3选出最佳模型。
我们要通过10交叉验证进行模型精度评估。
这时我们要把我们的数据集分成10个部分,9个部分用于训练,1个用于测试,而且我们还会释放每个测试部分的所有组合。我们也会对每个算法和10个数据集部分重复这个过程3次,就是为了能得到模型的精度评估。
1 # Run algorithms using 10-fold cross validation 2 control <- trainControl(method=”cv”, number=10) 3 metric <- “Accuracy”
我们现在使用“精准度”这个度量来评估模型。这是一个源自每个分开的部分里所得到的一个比率,表示正确的预测实例的数量的比率,它通过正确的预测实例数除以总实例数乘于100%所得的一个百分数(比如精度为95%)。我们还会在接下来建立与评估每个模型的时候使用metic这个变量。
我们并不知道怎样的算法适合解决这个问题,也不知道它到底是怎样的结构。我们可以从一些图像中得到相关信息,而这些图像则是一些层次部分地线性分离到一些维度里,所以,我们通常都期待这是一个不错的结果。
现在,我们评估5个不同的算法:
线性判别分析(LDA)
分类树和回归树(CART)
K近邻(kNN)
有线性核的支持向量机(SVM)
随机森林(RF)
这是一个很好的简单线性混合(LDA),非线性(CART,kNN)和复杂的非线性方法(SVM,RF)。我们在运行之前重新设定随机数,并保证每个算法的评估都是在使用相同的数据拆分的条件下运行的。这可以保证所有的结果都具有可比性。
现在,我们建立这5个模型:
1# a) linear algorithms 2 set.seed(7) 3 fit.lda <- train(Species~., data=dataset, method=”lda”, metric=metric, trControl=control) 4 # b) nonlinear algorithms 5 # CART 6 set.seed(7) 7 fit.cart <- train(Species~., data=dataset, method=”rpart”, metric=metric, trControl=control) 8 # kNN 9 set.seed(7) 10 fit.knn <- train(Species~., data=dataset, method=”knn”, metric=metric, trControl=control) 11 # c) advanced algorithms 12 # SVM 13 set.seed(7) 14 fit.svm <- train(Species~., data=dataset, method=”svmRadial”, metric=metric, trControl=control) 15 # Random Forest 16set.seed(7) 17fit.rf <- train(Species~., data=dataset, method=”rf”, metric=metric, trControl=control)
Caret支持每个模型的结构和协调配置结构,但是我们并不会在这个教程里展示。
我们现在得到了5个模型,并知道了每个模型的评估情况。我们需要对这些模型进行相互比较,从而选出精度更好的模型。
我们首先可以对每个模型创建一系列已经建立好的模型并使用summary函数来报告它们的精度。
1 # summarize accuracy of models 2 results <- resamples(list(lda=fit.lda, cart=fit.cart, knn=fit.knn, svm=fit.svm, rf=fit.rf)) 3 summary(results)
我们可以查看每个分离器的精度,也可以看一下诸如Kappa度量:
4 Models: lda, cart, knn, svm, rf 5 Number of resamples: 10 6 Accuracy 7 Min. 1st Qu. Median Mean 3rd Qu. Max. NA’s 8 lda 0.9167 0.9375 1.0000 0.9750 1 1 0 9 cart 0.8333 0.9167 0.9167 0.9417 1 1 0 10 knn 0.8333 0.9167 1.0000 0.9583 1 1 0 11 svm 0.8333 0.9167 0.9167 0.9417 1 1 0 12 rf 0.8333 0.9167 0.9583 0.9500 1 1 0 13 Kappa 14 Min. 1st Qu. Median Mean3rd Qu. Max. NA’s 15 lda 0.875 0.9062 1.0000 0.9625 1 1 0 16 cart 0.750 0.8750 0.8750 0.9125 1 1 0 17 knn 0.750 0.8750 1.0000 0.9375 1 1 0 18 svm 0.750 0.8750 0.8750 0.9125 1 1 0 19 rf 0.750 0.8750 0.9375 0.9250 1 1 0
我们也可以根据某些的评估结果作图然后比较它们的扩散情况以及每个模型的均值精度。这里有一个针对每个算法的容量的精度测试,由于每个算法都进行了10次预测(10交叉验证)。
1.1 # compare accuracy of models 2. 3.2 dotplot(results)
我们可以看到,精度最高的算法是LDA:
我们可以对LDA的结果进行汇总:
print(fit.lda)
这个汇总做的很不错,它很好的归纳了用什么训练模型,同时,它的均值和标准差(SD)均在一个理想的范围内,所以模型精度不错,为97.5%+/-4%。
1 Linear Discriminant Analysis 2 3 120 samples 4 4 predictor 5 3 classes: ‘setosa’, ‘versicolor’, ‘virginica’ 6 7 No pre-processing 8 Resampling: Cross-Validated (10 fold) 9 Summary of sample sizes: 108, 108, 108, 108, 108, 108, … 10 Resampling results 11 12 Accuracy Kappa Accuracy SD Kappa SD 13 0.975 0.9625 0.04025382 0.06038074
做预测
LDA是精度最高的算法。我们现在要从你的测试数据集那里找到这个模型精度的相关信息。
这时,我们需要对所得的最佳模型进行最后的模型精度检验。如果你不小心犯了一些小错误如测试时在你的训练数据集中出现了过度拟合情况,或者数据被泄露了出去,那么保留一个测试数据集是应付这种情况的好办法。
现在我们在测试数据集上直接运行LDA模型,并对所得的含混矩阵的结果进行汇总。
1 # estimate skill of LDA on the validation dataset 2 predictions <- predict(fit.lda, validation) 3 confusionMatrix(predictions, validation$Species)
我们看到精度高达100%。这是一个小的测试数据集(20%),但是这个结果在97%+/-4%范围内,这告诉我们,这个模型也许就是精度高且可靠性好的模型。
1 Confusion Matrix and Statistics 2 3 Reference 4 Prediction setosa versicolor virginica 5 setosa 10 0 0 6 versicolor 0 10 0 7 virginica 0 0 10 8 9 Overall Statistics 10 11 Accuracy : 1 12 95% CI : (0.8843, 1) 13 No Information Rate : 0.3333 14 P-Value [Acc > NIR] : 4.857e-15 15 16 Kapp: 1 17 Mcnemar’s Test P-Value : NA 18 19 Statistics by Class: 20 21 Class: setosa Class: versicolor Class: virginica 22 Sensitivity 1.0000 1.0000 1.0000 23 Specificity 1.0000 1.0000 1.0000 24 Pos Pred Value 1.0000 1.0000 1.0000 25 Neg Pred Value 1.0000 1.0000 1.0000 26 Prevalence 0.3333 0.3333 0.3333 27 Detection Rate 0.3333 0.3333 0.3333 28 Detection Prevalence 0.3333 0.3333 0.3333 29 Balanced Accuracy 1.0000 1.0000 1.0000
你现在可以运行机器学习项目了
根据这个教程进行操作,你能在5-10分钟内就能完成,最多不超过10分钟!
你并不需要明白所有事情。(最少不是现在)你的目标就是根据这个教程运行一个端到端的项目,并得到相关结果。就目前而已,你不需要对所有的事情都一清二楚。在你执行的时候,你可以把你的问题列举出来。你可以多使用?函数名、帮助文档的语法结构来获悉你目前所用的函数的相关信息。
你并不需要知道这些算法是怎么运行的。知道其中的局限性很重要,怎样配置好的机器学习算法也很重要。但是,学习算法可以迟一点学。你需要在接下来的一段时间内慢慢的学习算法的相关知识。今天,你就好好享受一下在这个平台里运行算法所给你带来的乐趣吧。
你并不需要成为R程序员。R语言的语法结构其实看起来确实挺让人费解的。就像我们学习其它语言那样,专注于函数的调用功能(诸如function())以及任务(比如a<-“b”)。这里已经给你提供了很多操作上的便利。你是一个开发人员,你知道如何选择一个真正运行速度快的基础语言,然后,你就开始学习它,更多的细节以后慢慢了解。
你并不需要成为机器学习方面的专家。你在学习的过程中,到了后面,你就会知道你在学习过程中获得什么益处,也知道哪方面存在不足。往后,你能看到足够多的文章来整理机器学习项目的执行步骤,同时也会知道使用交叉检验对于评估精度的重要性。
那么,机器学习项目还有没有别的步骤?我们并不需要在一篇文章里讲完所有的步骤,因为这是你的第一个项目,而且,你需要更多的落实到核心的步骤。
换句话说, 观察数据,评估一些算法以及作出相关预测。在后续的教程中,我们还能看到其它展示数据的方法以及如何改良执行任务所得的结果。
原文链接:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢