gpt4 book ai didi

python - sklearn.linear::RidgeCV 中的 cv_values_ 是如何计算的?

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:19 24 4
gpt4 key购买 nike

修复讨论的可重现示例:

from sklearn.linear_model import RidgeCV
from sklearn.datasets import load_boston
from sklearn.preprocessing import scale

boston = scale(load_boston().data)
target = load_boston().target

import numpy as np
alphas = np.linspace(1.0,200.0, 5)
fit0 = RidgeCV(alphas=alphas, store_cv_values = True, gcv_mode='eigen').fit(boston, target)
fit0.alpha_
fit0.cv_values_[:,0]

问题:使用什么公式计算 fit0.cv_values_

编辑:

@Abhinav Arora 下面的回答似乎表明 fit0.cv_values_[:,0][0]fit0.cv_values_[:,0] 的第一个条目会是

(fit1.predict(boston[0,].reshape(1, -1)) - target[0])**2

其中 fit1 是 alpha = 1.0 的岭回归,适用于从中移除观察值 0 的数据集。

让我们看看:

1) 创建新数据集,删除原始数据集的第一行:

from sklearn.linear_model import Ridge
boston1 = np.delete(boston, (0), axis=0)
target1 = np.delete(target, (0), axis=0)

2) 在这个截断的数据集上拟合一个 alpha = 1.0 的山脊模型:

fit1 = Ridge(alpha=1.0).fit(boston1, target1)

3) 检查第一个数据点上该模型的 MSE:

(fit1.predict(boston[0,].reshape(1, -1)) - target[0])**2

它是 array([ 37.64650853])fit0.cv_values_[:,0] 生成的不同,因此:

fit0.cv_values_[:,0][0]

这是 37.495629960571137

什么给了?

最佳答案

引用自 Sklearn 文档:

Cross-validation values for each alpha (if store_cv_values=True and cv=None). After fit() has been called, this attribute will contain the mean squared errors (by default) or the values of the {loss,score}_func function (if provided in the constructor).

由于您没有在构造函数中提供任何评分函数,也没有为构造函数中的 cv 参数提供任何内容,因此该属性应该使用 Leave-One out 存储每个样本的均方误差交叉验证。均方误差的一般公式是

Mean Squared Error

其中 Y(带上限)是回归变量的预测值,另一个 Y 是真实值。

在您的情况下,您正在进行留一法交叉验证。因此,在每一折中,您只有 1 个测试点,因此 n = 1。因此,在您的情况下,执行 fit0.cv_values_[:,0] 只会为您提供每个点的平方误差当它是测试折叠的一部分并且 alpha 值为 1.0 时的训练数据集

希望对您有所帮助。

关于python - sklearn.linear::RidgeCV 中的 cv_values_ 是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com