我正在使用scikit并将其mean_squared_error用作cross_val_score中模型评估的评分函数.
rms_score = cross_validation.cross_val_score(model, X, y, cv=20, scoring='mean_squared_error')
Run Code Online (Sandbox Code Playgroud)
我正在使用,mean_squared_error因为它是一个回归问题,所使用的估算器(模型)是lasso,ridge和elasticNet.
对于所有这些估算师,我得到rms_score了负值.考虑到y值的差异是平方的,这怎么可能呢?

我有一个矩阵,每列的平均值为0,标准为1
In [67]: x_val.std(axis=0).min()
Out[70]: 0.99999999999999922
In [71]: x_val.std(axis=0).max()
Out[71]: 1.0000000000000007
In [72]: x_val.mean(axis=0).max()
Out[72]: 1.1990408665951691e-16
In [73]: x_val.mean(axis=0).min()
Out[73]: -9.7144514654701197e-17
Run Code Online (Sandbox Code Playgroud)
如果我使用normalize选项,则非0系数的数量会发生变化
In [74]: l = Lasso(alpha=alpha_perc70).fit(x_val, y_val)
In [81]: sum(l.coef_!=0)
Out[83]: 47
In [84]: l2 = Lasso(alpha=alpha_perc70, normalize=True).fit(x_val, y_val)
In [93]: sum(l2.coef_!=0)
Out[95]: 3
Run Code Online (Sandbox Code Playgroud)
在我看来,规范化只是将每列的方差设置为1.奇怪的是,结果变化如此之大.我的数据已经变异= 1.
那么normalize = T究竟做了什么呢?
我试图理解一句话“在存在相关变量的情况下,岭回归可能是首选。”假设我们有变量 a1、a2、b1、c2,并且 2 个 a"s 是相关的。如果我们使用套索可以消除其中一个。Lasso 和 Ridge 都会收缩。所以听起来套索在这些条件下可能会更好。但引用说里奇更好。这是一个错误的引用还是我遗漏了什么?(可能想得太简单了)
我正在做套索逻辑回归。我使用 cv.glmnet 来获取非零系数。它似乎有效,即我确实得到了一些非零系数,其余系数为零。但是,当我使用 coef 函数打印所有系数时,它会给我一个所有系数的列表。有没有办法提取不为零的系数及其名称。我所做的代码是:
cv.lasso = cv.glmnet(x_train,y_train, alpha = 0.6, family = "binomial")
coef(cv.lasso, s=cv.lasso$lambda.1se)
Run Code Online (Sandbox Code Playgroud)
当我使用 coef 时,我得到以下输出:
4797 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -1.845702
sampleid.10 .
sampleid.1008 .
Run Code Online (Sandbox Code Playgroud)
我想提取非零系数的名称和值。我怎样才能做到这一点?
你能告诉我如何Elastic-Net在 Pyspark 中使用 、 Lasso 和 Ridge 回归吗?实际上我根据机器学习备忘单选择了Linear、Elastic-Net、Lasso和Ridge回归这4种算法。但是,我不知道如何在 Pyspark 中导入 Elastic-Net、Lasso 和 Ridge 回归,也无法通过 google 搜索到正确的答案。我只知道在Pyspark.
machine-learning lasso-regression linear-regression pyspark apache-spark-ml
我有这个数据集。 体重
我想使用 R 包 glmnet 来确定哪些预测变量对预测生育率有用。但是,我一直无法这样做,很可能是因为对软件包没有完全了解。生育变量是 SP.DYN.TFRT.IN。我想看看数据集中哪些预测因子对生育率的预测能力最强。我想使用 LASSO 或岭回归来缩小系数的数量,我知道这个包可以做到这一点。我只是在实施它时遇到了一些麻烦。
我知道没有代码片段让我道歉,但我对如何编写代码感到很迷茫。
任何建议表示赞赏。
感谢您阅读
我用R编写了这个套索代码,并得到了一些beta值:
#Lasso
library(MASS)
library(glmnet)
Boston=na.omit(Boston)
x=model.matrix(crim~.,Boston)[,-1]
rownames(x)=c()
y=as.matrix(Boston$crim)
lasso.mod =glmnet(x,y, alpha =1, lambda = 0.1)
beta=as.matrix(rep(0,19))
beta=coef(lasso.mod)
matplot(beta,type="l",lty=1,xlab="L1",ylab="beta",main="lasso")
Run Code Online (Sandbox Code Playgroud)
我想在这样的图中绘制Beta:
但是我不知道RI中有什么绘图功能可以用来做到这一点。