You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

岭回归cv.glmnet样本量不匹配报错解决及数据集大小疑问

岭回归报错问题解决与疑问解答

1. 报错问题解决

你的报错根源是**cv.glmnet的参数传入逻辑错误**:

  • x需要传入训练集的特征矩阵(不含目标变量),y需要传入训练集对应的目标变量,你错误地将整个测试集作为y传入,导致x的样本数(94)和y的样本数(10)不匹配。

修正步骤如下:

第一步:拆分特征与目标变量

假设数据框最后一列是目标变量(若不是,替换为你的目标列名即可),拆分训练集和测试集的特征与目标:

# 拆分训练集:特征矩阵X_train + 目标变量y_train
X_train <- read_training[, -ncol(read_training)]
y_train <- read_training[, ncol(read_training)]

# 拆分测试集:特征矩阵X_test + 目标变量y_test
X_test <- read_test[, -ncol(read_test)]
y_test <- read_test[, ncol(read_test)]

第二步:正确运行岭回归

用拆分后的训练集特征和目标变量传入cv.glmnet:

ridge <- cv.glmnet(x = X_train, 
                   y = y_train, 
                   type.measure = "mse", 
                   alpha = 0, 
                   family = "gaussian", 
                   nlambda = 200)

第三步:测试集预测(可选)

训练完成后,用模型对测试集进行预测并评估:

# 预测测试集结果
y_pred <- predict(ridge, newx = X_test)
# 计算测试集均方误差
test_mse <- mean((y_pred - y_test)^2)

2. 训练集与测试集是否必须大小一致?

不需要,而且通常训练集的样本量要远大于测试集,比如你当前用的9:1拆分比例(94个训练样本、10个测试样本)是合理的。
报错的根本原因不是训练集和测试集大小不一致,而是你错误地将测试集作为目标变量传入模型,导致样本数不匹配。

内容的提问来源于stack exchange,提问作者Someone_1313

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:12:41