标签: lars

ValueError:x_new中的值低于插值范围

这是我学习时出现的scikit-learn错误

my_estimator = LassoLarsCV(fit_intercept=False, normalize=False, positive=True, max_n_alphas=1e5)
Run Code Online (Sandbox Code Playgroud)

请注意,如果我将max_n_alphas从1e5减少到1e4,我不会再出现此错误.

任何人都知道发生了什么?

我打电话时发生错误

my_estimator.fit(x, y)
Run Code Online (Sandbox Code Playgroud)

我有尺寸的40k数据点40.

完整的堆栈跟踪看起来像这样

  File "/usr/lib64/python2.7/site-packages/sklearn/linear_model/least_angle.py", line 1113, in fit
    axis=0)(all_alphas)
  File "/usr/lib64/python2.7/site-packages/scipy/interpolate/polyint.py", line 79, in __call__
    y = self._evaluate(x)
  File "/usr/lib64/python2.7/site-packages/scipy/interpolate/interpolate.py", line 498, in _evaluate
    out_of_bounds = self._check_bounds(x_new)
  File "/usr/lib64/python2.7/site-packages/scipy/interpolate/interpolate.py", line 525, in _check_bounds
    raise ValueError("A value in x_new is below the interpolation "
ValueError: A value in x_new is below the interpolation range.
Run Code Online (Sandbox Code Playgroud)

python regression scikit-learn lars

7
推荐指数
1
解决办法
2940
查看次数

在带有分类变量的R中使用LASSO

我有一个包含1000个观测值和76个变量的数据集,其中约有20个是分类的。我想在整个数据集上使用LASSO。我知道通过lars或glmnet在LASSO中使用因子变量并不能真正起作用,但是变量太多了,它们可以采用太多不同的无序值来对它们进行合理的数字编码。

在这种情况下可以使用LASSO吗?我该怎么做呢?创建预测变量矩阵可产生以下响应:

hdy<-as.numeric(housingData2[,75])
hdx<-as.matrix(housingData2[,-75])
model.lasso <- lars(hdx, hdy)
Error in one %*% x : requires numeric/complex matrix/vector arguments
Run Code Online (Sandbox Code Playgroud)

我认识到其他方法可能更容易或更合适,但是实际的挑战是使用Lars或glmnet来做到这一点,因此,如果可能的话,我将不胜感激任何想法或反馈。

谢谢,

regression r lasso-regression glmnet lars

7
推荐指数
2
解决办法
8909
查看次数

Lasso r代码 - 它有什么问题?

我试图使用lars包进行套索回归,但似乎无法使lars位工作.我输入了代码:

diabetes<-read.table("diabetes.txt", header=TRUE)
diabetes
library(lars)
diabetes.lasso = lars(diabetes$x, diabetes$y, type = "lasso")
Run Code Online (Sandbox Code Playgroud)

但是,我收到一条错误消息:rep(1,n)中的错误:无效的'times'参数.

我试过这样输入:

diabetes<-read.table("diabetes.txt", header=TRUE)
library(lars)
data(diabetes)
diabetes.lasso = lars(age+sex+bmi+map+td+ldl+hdl+tch+ltg+glu, y, type = "lasso")
Run Code Online (Sandbox Code Playgroud)

但后来我收到错误消息:'lars中的错误(年龄+性别+ bmi +地图+ td + ldl + hdl + tch + ltg + glu,y,type ="lasso"):找不到对象'age'

我哪里错了?

编辑:数据 - 如下所示,但另外5列.

             ldl          hdl          tch          ltg          glu
1   -0.034820763 -0.043400846 -0.002592262  0.019908421 -0.017646125
2   -0.019163340  0.074411564 -0.039493383 -0.068329744 -0.092204050
3   -0.034194466 -0.032355932 -0.002592262  0.002863771 -0.025930339
4    0.024990593 -0.036037570  0.034308859  0.022692023 -0.009361911
5    0.015596140  0.008142084 -0.002592262 -0.031991445 -0.046640874
Run Code Online (Sandbox Code Playgroud)

regression r lasso-regression lars

5
推荐指数
1
解决办法
1万
查看次数

如何从带有套索的线性模型中获取截距(lars R包)

我很难通过R包估算lars我的数据模型.

例如,我创建一个假数据集x和相应的值y,如下所示:

x = cbind(runif(100),rnorm(100))
colnames(x) = c("a","b")
y = 0.5 + 3 * x[,1,drop = FALSE]
Run Code Online (Sandbox Code Playgroud)

接下来,我使用lars函数训练一个使用套索正则化的模型:

m = lars(x,y,type = "lasso", normalize = FALSE, intercept = TRUE)
Run Code Online (Sandbox Code Playgroud)

现在我想知道估计的模型是什么(that I know to be: y = 0.5 + 3 * x[,1] + 0 * x[,2])

我只对最后一步获得的系数感兴趣:

cf = predict(m, x, s=1, mode = "fraction", type = "coef")$coef
cf
a b 
3 0
Run Code Online (Sandbox Code Playgroud)

这些是我期望的系数,但是我找不到从中获取intercept(0.5)的方法m.

我试图检查predict.lars适合的代码,如下所示:

fit = drop(scale(newx, 
           object$meanx, FALSE) %*% …
Run Code Online (Sandbox Code Playgroud)

r lasso-regression intercept lars

5
推荐指数
1
解决办法
3631
查看次数