岭回归模型:glmnet [英] Ridge-regression model: glmnet
本文介绍了岭回归模型:glmnet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的训练数据集上使用最小二乘拟合线性回归模型效果很好.
Fitting a linear-regression model using least squares on my training dataset works fine.
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)
lm.fit = lm(as.factor(V42)~ ., data = trainingData)
linearMPrediction = predict(lm.fit,newdata = testingData, se.fit = TRUE)
mean((linearMPrediction$fit - testingData[,20:41])^2)
linearMPrediction$residual.scale
但是,当我尝试在训练数据集上拟合岭回归模型时,
However, when i try to fit a ridge-regression model on my training dataset as,
x = model.matrix(as.factor(V42)~., data = trainingData)
y = as.factor(trainingData$V42)
ridge = glmnet(x, y, family = "multinomial", alpha = 1, lambda.min.ratio = 1e-2)
multinomial
和binomial
发行版都出现以下错误.
I am having the following error for both multinomial
and binomial
distributions.
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
我错过了什么吗?任何评论将不胜感激.顺便说一下,这是我的数据的一部分.
Am I missing something? Any comment would be greatly appreciated. Here is a portion of how my data looks like by the way.
> trainingData$V42[1:50]
[1] "normal" "normal" "neptune" "normal" "normal" "neptune" "neptune" "neptune" "neptune" "neptune" "neptune"
[12] "neptune" "normal" "warezclient" "neptune" "neptune" "normal" "ipsweep" "normal" "normal" "neptune" "neptune"
[23] "normal" "normal" "neptune" "normal" "neptune" "normal" "normal" "normal" "ipsweep" "neptune" "normal"
[34] "portsweep" "normal" "normal" "normal" "neptune" "normal" "neptune" "neptune" "neptune" "normal" "normal"
[45] "normal" "neptune" "teardrop" "normal" "warezclient" "neptune"
> x
(Intercept) V1 V2tcp V2udp V3bgp V3courier V3csnet_ns V3ctf V3daytime V3discard V3domain V3domain_u V3echo V3eco_i V3ecr_i V3efs V3exec V3finger V3ftp
1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
7 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> y[1:50]
[1] normal normal neptune normal normal neptune neptune neptune neptune neptune neptune neptune normal
[14] warezclient neptune neptune normal ipsweep normal normal neptune neptune normal normal neptune normal
[27] neptune normal normal normal ipsweep neptune normal portsweep normal normal normal neptune normal
[40] neptune neptune neptune normal normal normal neptune teardrop normal warezclient neptune
22 Levels: back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop neptune nmap normal phf pod portsweep rootkit satan smurf spy ... warezmaster
> table(y)
y
back buffer_overflow ftp_write guess_passwd imap ipsweep land loadmodule multihop neptune
196 6 1 10 5 710 1 1 2 8282
nmap normal phf pod portsweep rootkit satan smurf spy teardrop
301 13449 2 38 587 4 691 529 1 188
warezclient warezmaster
181 7
推荐答案
对于某些类,您只有一个观察值(例如ftp_write
只有一个观察值),这是不允许的(并在错误中明确指出).
You have single observations for some of the classes (like ftp_write
with only 1 observation), which is not allowed (and clearly stated in the error).
这篇关于岭回归模型:glmnet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文