scipy.stats.bootstrap可以用于计算回归或分类任务中特征权重的置信区间吗?

问题描述 投票:0回答:1

我有兴趣使用引导方法计算特征权重的置信区间。

scipy.stats.bootstrap
能做到吗?将此分类任务作为示例(但回归任务的想法相同)。我们可以得到
coefficients
,它将返回特征权重向量。

import numpy as np
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 2, 2, 2])
clf = LinearDiscriminantAnalysis()
clf.fit(X, y)
coefficients = clf.coef_

这个想法是从

X
y
中抽取样本(带替换)n次,在这些批次上拟合分类器,获取系数,最后使用所有重采样试验的系数计算置信区间。

python scipy bootstrapping
1个回答
0
投票

是的,从某种意义上说,

bootstrap
支持向量值
statistic
。例如,这是有效的代码:

import numpy as np
from scipy import stats
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 2, 2, 2])

def f(*XT):
    X = np.asarray(XT).T
    clf = LinearDiscriminantAnalysis()
    clf.fit(X, y)
    return clf.coef_

res = stats.bootstrap(X.T, statistic=f, paired=True)

LinearDiscriminantAnalysis
似乎在某些重新采样方面遇到问题,但您可以通过将
clf
行替换为
return X[:, 0].mean(), X[:, 1].var()
之类的内容(即第一个特征和方差的均值的自举置信区间)来看到代码是有效的同时具有第二个功能)。

© www.soinside.com 2019 - 2024. All rights reserved.