def METHOD_NAME(data, denominator_col, numerator_cols, date_col, scales, logger):
    r"""Fit weekday correction for each col in numerator_cols.
    Return a matrix of parameters: the entire vector of betas, for each time
    series column in the data.
    """
    tmp = data.reset_index()
    denoms = tmp.groupby(date_col).sum()[denominator_col]
    nums = tmp.groupby(date_col).sum()[numerator_cols]
    # Construct design matrix to have weekday indicator columns and then day
    # indicators.
    X = np.zeros((nums.shape[0], 6 + nums.shape[0]))
    not_sunday = np.where(nums.index.dayofweek != 6)[0]
    X[not_sunday, np.array(nums.index.dayofweek)[not_sunday]] = 1
    X[np.where(nums.index.dayofweek == 6)[0], :6] = -1
    X[:, 6:] = np.eye(X.shape[0])
    npnums, npdenoms = np.array(nums), np.array(denoms)
    params = np.zeros((nums.shape[1], X.shape[1]))
    # Loop over the available numerator columns and smooth each separately.
    for i in range(nums.shape[1]):
        result = Weekday._fit(X, scales, npnums[:, i], npdenoms)
        if result is None:
            logger.error("Unable to calculate weekday correction")
        else:
            params[i,:] = result
    return params