Python中的多元线性回归

数据挖掘 Python 回归 图书馆 软件推荐
2021-10-12 00:33:27

我正在寻找一个实现多元线性回归的 Python 包。

(术语说明:多元回归处理存在多个因变量的情况,而多元回归处理存在一个因变量但多个自变量的情况。)

2个回答

您仍然可以使用sklearn.linear_model.LinearRegression只需将输出y设为具有与因变量一样多的列的矩阵。如果你想要一些非线性的东西,你可以尝试不同的基函数,使用多项式特征,或者使用不同的回归方法(如 NN)。

只是为了好玩,您可以通过形成元组来手动计算特征 seq=(d1,...,dN) 这样 Sum(seq)=i=1ND. 一旦你形成了这些元组,每个条目都表示当前原始特征应该被提升的权力。所以说(1,2,3) 将映射到单项式 x1x22x33.

获取元组的代码是:

def generate_all_tuples_for_monomials(N,D):
    if D == 0:
        seq0 = N*[0]
        sequences_degree_0 = [seq0]
        S_0 = {0:sequences_degree_0}
        return S_0
    else:
        # S_all = [ k->S_D ] ~ [ k->[seq0,...,seqK]]
        S_all = generate_all_tuples_for_monomials(N,D-1)# S^* = (S^*_D-1) U S_D
        print(S_all)
        #
        S_D_current = []
        # for every prev set of degree tuples
        #for d in range(len(S_all.items())): # d \in [0,...,D_current]
        d = D-1
        d_new = D - d # get new valid degree number
        # for each sequences, create the new valid degree tuple
        S_all_seq_for_deg_d = S_all[d]
        for seq in S_all[d]:
            for pos in range(N):
                seq_new = seq[:]
                seq_new[pos] = seq_new[pos] + d_new # seq elements dd to D
                if seq_new not in S_D_current:
                    S_D_current.append(seq_new)
        S_all[D] = S_D_current
        return S_all

如果你知道线性代数,那么回归应该很容易。

c = pseudo_inverse(X_poly)*y

例子。如果您对泛化感兴趣,可能更好地进行正则化线性回归。


感谢Yuval 是 CS的帮助。