我正在寻找一个实现多元线性回归的 Python 包。
(术语说明:多元回归处理存在多个因变量的情况,而多元回归处理存在一个因变量但多个自变量的情况。)
我正在寻找一个实现多元线性回归的 Python 包。
(术语说明:多元回归处理存在多个因变量的情况,而多元回归处理存在一个因变量但多个自变量的情况。)
您仍然可以使用sklearn.linear_model.LinearRegression。只需将输出y
设为具有与因变量一样多的列的矩阵。如果你想要一些非线性的东西,你可以尝试不同的基函数,使用多项式特征,或者使用不同的回归方法(如 NN)。
只是为了好玩,您可以通过形成元组来手动计算特征 这样 . 一旦你形成了这些元组,每个条目都表示当前原始特征应该被提升的权力。所以说 将映射到单项式 .
获取元组的代码是:
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的帮助。