gpt4 book ai didi

r - 套索 : Cross-validation for glmnet

转载 作者:行者123 更新时间:2023-11-30 09:29:32 28 4
gpt4 key购买 nike

我使用cv.glmnet()来执行交叉验证,默认情况下10倍

library(Matrix)
library(tm)
library(glmnet)
library(e1071)
library(SparseM)
library(ggplot2)

trainingData <- read.csv("train.csv", stringsAsFactors=FALSE,sep=",", header = FALSE)
testingData <- read.csv("test.csv",sep=",", stringsAsFactors=FALSE, header = FALSE)

x = model.matrix(as.factor(V42)~.-1, data = trainingData)
crossVal <- cv.glmnet(x=x, y=trainingData$V42, family="multinomial", alpha=1)
plot(crossVal)

我收到以下错误消息

Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
one multinomial or binomial class has 1 or 0 observations; not allowed

但如下所示,我似乎没有计数为 01 的观察级别。

>table(trainingData$V42)

back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop
956 30 8 53 11 3599 18 9 7
neptune nmap normal perl phf pod portsweep rootkit satan
41214 1493 67343 3 4 201 2931 10 3633
smurf spy teardrop warezclient warezmaster
2646 2 892 890 20

有什么指点吗?

最佳答案

cv.glmnet默认情况下,进行 N 倍交叉验证,N=10。这意味着它将您的数据分为 10 个子集,然后在 10 个子集中的 9 个子集上训练模型,并在剩余 1 个子集上进行测试。它会重复此操作,依次忽略每个子集。

您的数据足够稀疏,有时训练子集会遇到此处(以及 your previous question )中遇到的问题。最好的解决方案是通过组合较稀有的类别来减少响应中的类别数量(例如,您真的需要获得 spyperl 的预测概率)。

此外,如果您正在进行 glmnet 交叉验证并构建模型矩阵,您可以使用 glmnetUtils package我写信是为了简化流程。

关于r - 套索 : Cross-validation for glmnet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009672/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com