【发布时间】:2021-10-06 00:34:41
【问题描述】:
我想使用 AIC 和 BIC 为套索选择参数 alpha。但是 sklearn 只有 LassoLarsIC 可以做到这一点,它不接受稀疏矩阵,因此不适合我的情况。因此,我决定使用GridSearchCV 并创建一个自定义记分器。以下是我的尝试:
def bic_error_func(y_true, y_pred, coefs):
n_samples = len(y_true)
mse = np.average((y_true - y_pred) ** 2, axis=0)
sigma2 = np.var(y_true)
eps64 = np.finfo("float64").eps
K = log(n_samples)
mask = np.abs(coefs) > np.finfo(coefs.dtype).eps
df = np.sum(mask)
score = (n_samples * mse / (sigma2 + eps64) + K * df)
return score
from sklearn.metrics import make_scorer
bic_scorer = make_scorer(bic_error_func, greater_is_better=False)
但是,与Defining your scoring strategy from metric functions 中的示例不同,我需要附加参数coefs 来计算此分数。在这种情况下,如何使包装的评分功能起作用?
【问题讨论】:
标签: python machine-learning scikit-learn