【问题标题】:Trying to perform LDA with LASSO尝试使用 LASSO 执行 LDA
【发布时间】:2019-02-04 16:52:20
【问题描述】:

PenalizedLDA( x = train_x, y =train_y) 返回

sort.int(x, na.last = na.last, 递减 = 递减, ...) 中的错误: “x”必须是原子的

我正在尝试在来自UCI 的 sampbase 数据集上使用带套索的线性判别分析。(我已将标题添加到列中,并在适当的情况下将列返回到区间 [0,1]。

我第一次运行代码时出错

PenalizedLDA(x = train_x, y = train_y) 中的错误: y 必须是数值向量,取值如下:1, 2, ....

我通过传递 train_y 解决了这个问题

train_y =as.list.numeric_version(training_set[,58])

当我再次运行它时,我得到了错误

sort.int(x, na.last = na.last, 递减 = 递减, ...) 中的错误: “x”必须是原子的

我在这里卡住了。

library(penalizedLDA)
data = read.csv("spambase.csv",header = TRUE)

new_data = data/100
new_data[,c(55,56,57,58)] = data[,c(55,56,57,58)]
new_data[,58]= factor(new_data[,58])

# Splitting dataset into Training set and Test set


set.seed(seeds)
split = sample.split(new_data$factor, SplitRatio = 0.7)
training_set = subset(new_data, split == TRUE)
test_set = subset(new_data, split == FALSE)

#scale data

training_set[-58] = scale(training_set[,-58])
test_set[-58] = scale(test_set[,-58])

train_x =training_set[,-58]
train_y =as.list.numeric_version(training_set[,58])
#Sparse linear discriminant Analysis
classifier = PenalizedLDA( x = training_set[,-58], y =training_set[,58],K = 1,lambda = "standard")

【问题讨论】:

标签: r statistics regularized


【解决方案1】:

根据PenalizedLDA()的帮助页面,其参数y =应该是:

包含类标签的 n 向量。应编码为 1, 2, 。 . . , nclasses,其中 nclasses 是类的数量。

这意味着感兴趣的变量的级别(在您的情况下为位置 58)应该从 1 而不是 0 开始。此外,不要使用函数 as.list.numeric_version(),因为它创建一个列表,而向量是必填。

data = read.csv("...")

new_data = data/100
new_data[,c(55,56,57,58)] = data[,c(55,56,57,58)]
new_data[,58] = factor(new_data[,58] + 1)  # in order to start at 1 and not 0
new_data[-58] = scale(new_data[,-58])

classifier = PenalizedLDA(x = new_data[,-58], y = new_data[,58], K = 1, lambda = .1)

【讨论】:

  • 我已经解决了这个问题。非常感谢,但我现在在 lambda * sum(abs(v)) 中得到错误:二进制运算符的非数字参数。 new_data[,58][new_data[,58] == 0] = 2 new_data[,58]= 因子(new_data[,58])
  • 您可以编辑您的帖子以重现错误吗?
猜你喜欢
  • 2021-05-18
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 2016-05-14
  • 2012-02-02
  • 1970-01-01
相关资源
最近更新 更多