数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

全文链接:http://tecdat.cn/?p=27384

在本文中,数据包含有关葡萄牙“Vinho Verde”葡萄酒的信息点击文末“阅读原文”获取完整代码数据

介绍

该数据集(查看文末了解数据获取方式)有1599个观测值和12个变量,分别是固定酸度、挥发性酸度、柠檬酸、残糖、氯化物、游离二氧化硫、总二氧化硫、密度、pH值、硫酸盐、酒精和质量。固定酸度、挥发性酸度、柠檬酸、残糖、氯化物、游离二氧化硫、总二氧化硫、密度、pH、硫酸盐和酒精是自变量并且是连续的。质量是因变量,根据 0 到 10 的分数来衡量。

相关视频

探索性分析

总共有 855 款葡萄酒被归类为“好”品质,744 款葡萄酒被归类为“差”品质。固定酸度、挥发性酸度、柠檬酸、氯化物、游离二氧化硫、总二氧化硫、密度、硫酸盐和酒精度与葡萄酒质量显着相关( t 检验的 P 值 < 0.05),这表明了重要的预测因子。我们还构建了密度图来探索 11 个连续变量在“差”和“好”葡萄酒质量上的分布。从图中可以看出,品质优良的葡萄酒在PH方面没有差异,而不同类型的葡萄酒在其他变量上存在差异,这与t检验结果一致。

na.oit() %>muate(qal= ase_hen(ality>5 ~good", quaity <=5 ~ "poor")) %>%muate(qua= s.fatrqual)) %>%dpeme1 <- rsparentTme(trans = .4)plot = "density", pch = "|",auto.key = list(columns = 2))

1ae00e1d8683c3ec36a1c76b60725a9c.png

图 1. 葡萄酒品质和预测特征之间的描述图。
表 1. 优质和劣质葡萄酒的基本特征。

# 在表1中创建一个我们想要的变量b1 <- CeatTableOe(vars  litars, straa = ’qual’ da winetab

1c3caab79dc2402f64547d786cdbac76.png


点击标题查阅往期内容

a0aaff088bea0ae8a1e0da630f0259fd.jpeg

R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图

outside_default.png

左右滑动查看更多

outside_default.png

01

outside_default.png

02

outside_default.png

03

outside_default.png

04

outside_default.png

模型

我们随机选择 70% 的观测值作为训练数据,其余的作为测试数据。所有 11 个预测变量都被纳入分析。我们使用线性方法、非线性方法、树方法和支持向量机来预测葡萄酒质量的分类。对于线性方法,我们训练(惩罚)逻辑回归模型和线性判别分析(LDA)。逻辑回归的假设包括相互独立的观察结果以及自变量和对数几率的线性关系。LDA 和 QDA 假设具有正态分布的特征,即预测变量对于“好”和“差”的葡萄酒质量都是正态分布的。对于非线性模型,我们进行了广义加性模型(GAM)、多元自适应回归样条(MARS)、KNN模型和二次判别分析(QDA)。对于树模型,我们进行了分类树和随机森林模型。还执行了具有线性和径向内核的 SVM。我们计算了模型选择的 ROC 和准确度,并调查了变量的重要性。10 折交叉验证 (CV) 用于所有模型。

inTrai <- cateatPariti(y  winequal, p = 0.7, lit =FASE)traiData <- wine\[inexTr, teDt <wi\[-idxTrain,\]

线性模型 多元逻辑回归显示,在 11 个预测因子中,挥发性酸度、柠檬酸、游离二氧化硫、总二氧化硫、硫酸盐和酒精与葡萄酒质量显着相关(P 值 < 0.05),解释了总方差的 25.1%。酒质。将该模型应用于测试数据时,准确度为 0.75(95%CI:0.71-0.79),ROC 为 0.818,表明数据拟合较好。在进行惩罚性逻辑回归时,我们发现最大化ROC时,最佳调优参数为alpha=1和lambda=0.00086,准确度为0.75(95%CI:0.71-0.79),ROC也为0.818。由于 lambda 接近于零且 ROC 与逻辑回归模型相同,因此惩罚相对较小,

但是,由于逻辑回归要求自变量之间存在很少或没有多重共线性,因此模型可能会受到 11 个预测变量之间的共线性(如果有的话)的干扰。至于LDA,将模型应用于测试数据时,ROC为0.819,准确率为0.762(95%CI:0.72-0.80)。预测葡萄酒品质的最重要变量是酒精度、挥发性酸度和硫酸盐。与逻辑回归模型相比,LDA 在满足正常假设的情况下,在样本量较小或类别分离良好的情况下更有帮助。

### 逻辑回归cl - tranControlmehod =cv" number  10,summayFunio = TRUE)set.seed(1)moel.gl<- train(x = tainDaa %>% dpyr::selct(-ual),y = trainDaa$qualmetod "glm",metic = OC",tContrl = crl# 检查预测因素的重要性summary(odel.m)

outside_default.png

# 建立混淆矩阵tetred.prb <- rdct(mod.gl, newdat = tstDattye = "robtest.ped <- rep("good", length(pred.prconfusionMatrix(data = as.factor(test.pred),

outside_default.png

outside_default.png

# 绘制测试ROC图oc.l <- roc(testa$al, es.pr.rob$god)

outside_default.png

## 测试误差和训练误差er.st. <- mean(tett$qul!= tt.pred)tranped.obgl <-pric(moel.lmnewda= taiDaa,type = "robmoe.ln <-tai(xtraDa %>% dlyr:seec-qal),y = traDmethd = "met",tueGid = lGrid,mtc = "RO",trontrol  ctl)plotodel.gl, xTras =uction() lg(x)

outside_default.png

#选择最佳参数mol.mn$bestune

outside_default.png

# 混淆矩阵tes.red2 <- rp"good" ngth(test.ed.prob2$good))tst.red2\[tespre.prob2$good < 0.5\] <- "poorconuionMatridata = as.fcto(test.prd2),

outside_default.png

outside_default.png

outside_default.png

outside_default.png

outside_default.png

非线性模型 在 GAM 模型中,只有挥发性酸度的自由度等于 1,表明线性关联,而对所有其他 10 个变量应用平滑样条。

结果表明,酒精、柠檬酸、残糖、硫酸盐、固定酸度、挥发性酸度、氯化物和总二氧化硫是显着的预测因子(P值<0.05)。

总的来说,这些变量解释了葡萄酒质量总变化的 39.1%。使用测试数据的混淆矩阵显示,GAM 的准确度为 0.76(95%CI:0.72-0.80),ROC 为 0.829。

MARS 模型表明,在最大化 ROC 时,我们在 11 个预测变量中包含了 5 个项,其中 nprune 等于 5,度数为 2。这些预测变量和铰链函数总共解释了总方差的 32.2%。根据 MARS 输出,三个最重要的预测因子是总二氧化硫、酒精和硫酸盐。

将 MARS 模型应用于测试数据时,准确度为 0.75(95%CI:0.72,0.80),ROC 为 0.823。我们还执行了 KNN 模型进行分类。当 k 等于 22 时,ROC 最大化。KNNmodel 的准确度为 0.63(95%CI:0.59-0.68),ROC 为 0.672。

QDA模型显示ROC为0.784,准确率为0.71(95%CI:0.66-0.75)。预测葡萄酒质量的最重要变量是酒精、挥发性酸度和硫酸盐。59-0.68),ROC 为 0.672。QDA模型显示ROC为0.784,准确率为0.71(95%CI:0.66-0.75)。

预测葡萄酒质量的最重要变量是酒精、挥发性酸度和硫酸盐。59-0.68),ROC 为 0.672。QDA模型显示ROC为0.784,准确率为0.71(95%CI:0.66-0.75)。预测葡萄酒质量的最重要变量是酒精、挥发性酸度和硫酸盐。

GAM 和 MARS 的优点是这两个模型都是非参数模型,并且能够处理高度复杂的非线性关系。具体来说,MARS 模型可以在模型中包含潜在的交互作用。然而,由于模型的复杂性、耗时的计算和高度的过拟合倾向是这两种模型的局限性。对于 KNN 模型,当 k 很大时,预测可能不准确。

### GAMse.see(1)md.gam<- ran(x =trainDta %%dplr::slect(-qal),y = traiat$ual,thod = "am",metri = "RO",trCotrol = ctrl)moel.gm$finlMdel

outside_default.png

summary(mel.gam)

outside_default.png

# 建立混淆矩阵test.pr.pob3 - prdict(mod.ga nwdata =tstData,tye = "prb")testped3 - rep"good" legt(test.predpob3$goo))testprd3\[test.predprob3good < 0.5\] <- "pooreferetv = "good")

outside_default.png

outside_default.png

outside_default.png

outside_default.png

model.mars$finalModel

outside_default.png

vpmodl.rs$inlodel)

outside_default.png

outside_default.png

outside_default.png

# 绘制测试ROC图ocmas <- roctestataqua, tes.pred.rob4god)## Stting level: conrol = god, case= poor## Settig diectio: cntrols> caseplot(ro.mars legac.axes = TRE, prin.auc= RUE)plot(soothroc.mars), co = 4, ad =TRUE)

outside_default.png

errr.tria.mas <-man(tainat$qul ! trai.red.ars)### KNNGrid < epa.gri(k seq(from = 1, to = 40, by = 1))seted(1fknnrainqual ~.,dta = trnData,mthd ="knn"metrrid = kid)ggplot(fitkn

outside_default.png

outside_default.png

# 建立混淆矩阵ts.re.po7 < prdi(ft.kn, ewdt = estDaatype = "prb"

outside_default.png

outside_default.png

### QDAseteed1)%>% pyr:c-ual),y= trataqethod "d"mric = "OC",tContol =ctl)# 建立混淆矩阵tet.pprob <-pedct(mol.da,nedaa = teDta,te = "pb")testred6<- rep(o", leng(est.ped.pob6$goo))

outside_default.png

outside_default.png

outside_default.png

树方法

基于分类树,最大化AUC时最终的树大小为41。测试错误率为 0.24,ROC 为 0.809。此分类树的准确度为 0.76(95%CI:0.72-0.80)。我们还进行了随机森林方法来研究变量的重要性。因此,酒精是最重要的变量,其次是硫酸盐、挥发性酸度、总二氧化硫、密度、氯化物、固定酸度、柠檬酸、游离二氧化硫和残糖。pH 是最不重要的变量。对于随机森林模型,测试错误率为 0.163,准确率为 0.84(95%CI:0.80-0.87),ROC 为 0.900。树方法的一个潜在限制是它们对数据的变化很敏感,即数据的微小变化可能引起分类树的较大变化。

# 分类ctr <- tintol(meod ="cv", number = 10,smmryFuton= twoClassSmaet.se(1rart_grid = a.fra(cp = exp(eq(10,-, len =0)))clsste = traqua~., rainDta,metho ="rprttueGrid = patid,trCtrl  cr)ggt(class.tee,highight =TRE)

outside_default.png

outside_default.png

## 计算测试误差rpartpred = icla.te edta =testata, ye = "aw)te.ero.sree = mean(testa$a !=rartpre)rprred_trin  reic(ss.tre,newdta = raiata, tye  "raw")# 建立混淆矩阵teste.pob8 <-rdic(cste, edata =tstData,pe = "po"tet.pd8 - rpgod" legthtetred.rb8d))

outside_default.png

outside_default.png

# 绘制测试ROC图ro.r <-oc(testaual, tstedrob$od)pot(rc.ctreegy.axes  TU pit.a = TRE)plo(ooth(c.tre, col= 4, ad = TRE

outside_default.png

# 随机森林和变量重要性ctl <traontr(mthod= "cv, numbr = 10,clasPos = RUEoClssSummry)rf.grid - xpa.gr(mt = 1:10,spltrule "gini"min.nd.sie =seq(from = 1,to  12, by = 2))se.sed(1)rf.fit <- inqualmthd= "ranger",meric = "ROC",= ctrlgglt(rf.it,hiliht  TRE)

outside_default.png

scle.ermutatin.iportace  TRU)barplt(sort(rangr::imoranc(random

outside_default.png

6fdc315119dea3366fcef7e8dd397aa3.png

a3fa479e93e62a9992a46166013f4612.png

4f274d2df2a3f0deec694e27088b0458.png

支持向量机

我们使用带有线性核的 SVM,并调整了成本函数。我们发现具有最大化 ROChad 成本的模型 = 0.59078。该模型的 ROC 为 0.816,准确度为 0.75(测试误差为 0.25)(95%CI:0.71-0.79)。质量预测最重要的变量是酒精;挥发性酸度和总二氧化硫也是比较重要的变量。如果真实边界是非线性的,则具有径向核的 SVM 性能更好。

st.seed(svl.fi <- tain(qual~ . ,data = trainDatamehod= "mLar2",tueGri = data.frae(cos = ep(seq(-25,ln = 0))

9e6a0626d2f584de5409ceea6c69dd4b.png

74f492d5205efb613965b519f5e3b930.png

201ed3ce1b0e77303515ba064ea591fe.png

2c9caac13dc9d5ddf8ff98da7d7d8b14.png

474ea07d9d4d315580efb2786635b1f0.png

## 带径向核的SVMsvmr.grid  epand.gid(C = epseq(1,4,le=10)),iga = expsq(8,len=10)))svmr.it<- tan(qual ~ .,da = taiDataRialSigma",preProcess= c("cer" "scale"),tunnrol = c)

a55bbc6dce8f62d13e8357ccc0b4b0fc.png

982e9d5e6f109d0c49b084a75c28678e.png

aaa48b187722d55931568a3a9c2ce0f8.png

4c71be1c32fea1cabfe1dc8ec3334196.png

模型比较

模型建立后,我们根据所有模型的训练和测试性能进行模型比较。下表显示了所有模型的交叉验证分类错误率和 ROC。结果中,随机森林模型的 AUC 值最大,而 KNN 最小。因此,我们选择随机森林模型作为我们数据的最佳预测分类模型。基于随机森林模型,酒精、硫酸盐、挥发性酸度、总二氧化硫和密度是帮助我们预测葡萄酒质量分类的前 5 个重要预测因子。由于酒精、硫酸盐和挥发性酸度等因素可能决定葡萄酒的风味和口感,所以这样的发现符合我们的预期。在查看每个模型的总结时,我们意识到KNN模型的AUC值最低,测试分类错误率最大,为0.367。其他九个模型的 AUC 值接近,约为 82%。

rsam = rsmes(list(summary(resamp)

744fca1ecf6e7d7de26e366429aec8b7.png

3de07648e383215780439e292034659d.png

23cf6995c32d1e8cd5ef5d29e4643098.png

comrin = sumaryes)$satitics$ROr_quare  smary(rsamp)saisis$sqrekntr::ableomris\[,1:6\])

26164f6bd0c74e326b768f2011645195.png

bpot(remp meic = "ROC")

529c792f0513da813971ee5eb0e360cd.png

f<- datafram(dl\_Name, TainError,Test\_Eror, Tes_RC)knir::abe(df)

9c55bfbf8fdd8e557abc4080a9fc97b7.png

结论

模型构建过程表明,在训练数据集中,酒精、硫酸盐、挥发性酸度、总二氧化硫和密度是葡萄酒质量分类的前 5 个重要预测因子。我们选择了随机森林模型,因为它的 AUC 值最大,分类错误率最低。该模型在测试数据集中也表现良好。因此,这种随机森林模型是葡萄酒品质分类的有效方法。

数据获取

在下面公众号后台回复“葡萄酒数”,可获取完整数据。


9a4e0f0f43f868f23283a260986b567a.png

点击文末“阅读原文”

获取全文完整资料。

本文选自《R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化》。

325baf8a84e6017ac3d51ee078ed8492.jpeg

本文中的葡萄酒数据分享到会员群,扫描下面二维码即可加群!

7b34a897378f25a1de7d9bbb1f578a14.png

514ca068edde98ac64850c9aa705f798.jpeg

49aafa113fba5535327bdbe9d1da4620.png

点击标题查阅往期内容

R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据

逻辑回归Logistic模型原理R语言分类预测冠心病风险实例

数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化

R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据(含练习题)

Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例

R语言Bootstrap的岭回归和自适应LASSO回归可视化

R语言Lasso回归模型变量选择和糖尿病发展预测模型

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

基于R语言实现LASSO回归分析

R语言用LASSO,adaptive LASSO预测通货膨胀时间序列

R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析

R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

Python中的Lasso回归之最小角算法LARS

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

R语言实现LASSO回归——自己编写LASSO回归算法

R使用LASSO回归预测股票收益

python使用LASSO回归预测股票收益

941c2bf7c3892966a1f2d7ac13cfbec7.png

ae6b16f11facd3a23ea1ba8104f894b5.jpeg

ed9de8eeb7f634fd0a6f76723ef09b1d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109816.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT的未来

随着人工智能的快速发展&#xff0c;ChatGPT作为一种自然语言生成模型&#xff0c;在各个领域都展现出了巨大的潜力。它不仅可以用于日常对话、创意助手和知识查询&#xff0c;还可以应用于教育、医疗、商业等各个领域&#xff0c;为人们带来更多便利和创新。 在教育领域&#…

安装深度(Deepin)系统

Deepin系统安装 Deepin是和Ubuntu一样&#xff0c;是一个基于Debian的Linux的发型版本。 Deepin相对于Ubuntu&#xff0c;Deepin更适合中国用户的使用习惯。 一 官网工具制作启动盘 制作启动盘、和安装系统&#xff0c;操作非常简单&#xff0c;nice&#xff01; 官网提供了…

【云计算】虚拟私有网络 VPC

虚拟私有网络 VPC 1.VPC 简介1.1 VPC 相关基本概念1.2 其他相关基本概念 2.VPC 通信场景2.1 VPC 内部互通2.2 VPC 间互通2.2.1 对等连接2.2.2 Transit Gateway 或者云联网 2.3 访问 Internet2.3.1 Internet 网关2.3.2 NAT 网关 2.4 访问本地网络2.4.1 VPN 连接2.4.2 专线接入2.…

uniapp微信小程序地图实现周边

官方说明&#xff1a;小程序JavascriptSDK使用指南 - 微信小程序解决方案 | 腾讯位置服务https://lbs.qq.com/product/miniapp/jssdk/ 先申请腾讯地图的开发者密钥&#xff0c;申请地址&#xff1a;腾讯位置服务 - 立足生态&#xff0c;连接未来 申请密钥时&#xff0c;需要勾…

基于matlab实现的弹簧振动系统模型程序(动态模型)

完整代码&#xff1a; clear all; %System data m1.0; zeta0.01; omega01.0; Dt1.0; f01.0; x00.0; dotx00.0; xmaxsqrt(x0^2(dotx0/omega0)^2)min([0.5*abs(f0)*Dt/(m*omega0) f0/omega0^2]); omegadomega0*sqrt(1-zeta^2); dt00.1*pi/omega0; nstep500; a0.70; b0.…

postgresql-视图

postgresql-视图 视图概述使用视图的好处 创建视图修改视图删除视图递归视图可更新视图WITH CHECK OPTION 视图概述 视图&#xff08;View&#xff09;本质上是一个存储在数据库中的查询语句。视图本身不包含数据&#xff0c;也被称为 虚拟表。我们在创建视图时给它指定了一个…

腾讯云镜像TencentOS Server操作系统介绍、性能稳定性测评

腾讯云TencentOS Server镜像是腾讯云推出的Linux操作系统&#xff0c;完全兼容CentOS生态和操作方式&#xff0c;TencentOS Server操作系统为云上运行的应用程序提供稳定、安全和高性能的执行环境&#xff0c;TencentOS可以运行在腾讯云CVM全规格实例上&#xff0c;包括黑石物理…

天翎知识管理系统:智能化搜索引擎,快速定位知识资源

关键词&#xff1a;知识管理系统、全文检索 编者按&#xff1a;在当今知识经济时代&#xff0c;企业所面临的知识资源越来越丰富&#xff0c;如何高效地管理和利用这些资源成为了一个重要的问题。天翎知识管理系统凭借其智能化搜索引擎&#xff0c;可以帮助企业快速定位知识资源…

Windows11系统下配置JAVA环境变量

一、环境变量的配置 1、右键开始菜单按钮&#xff0c;点击【系统➡高级系统设置】 2、在弹出的系统属性界面点击环境变量 3、在弹出的“环境变量”框&#xff0c;中选择下方的系统变量&#xff0c;点击新建 4、在弹出的“新建系统变量”框中&#xff0c;输入变量名和变量值&am…

数据预处理-分箱(Binning)和 WOE编码

数据预处理-分箱&#xff08;Binning&#xff09;和 WOE编码 1. 分箱 1.1 理论 1.1.1 定义 分箱就是将连续的特征离散化&#xff0c;以某种方式将特征值映射到几个箱(bin)中。 1.1.2 为什么要进行分箱&#xff1f; 引入非线性变换&#xff0c;增强模型性能。因为原始值和目…

【2023集创赛】加速科技杯作品:高光响应的二硫化铼光电探测器

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;加速科技杯西北赛区二等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰…

【Flowable】任务监听器(五)

前言 之前有需要使用到Flowable&#xff0c;鉴于网上的资料不是很多也不是很全也是捣鼓了半天&#xff0c;因此争取能在这里简单分享一下经验&#xff0c;帮助有需要的朋友&#xff0c;也非常欢迎大家指出不足的地方。 一、监听器 在Flowable中&#xff0c;我们可以使用监听…