बस मज़े के लिए आप tuples जैसे कि बनाकर हाथ से फ़ीचर की गणना कर सकते हैं । एक बार जब आप उन टुपल्स का निर्माण करते हैं, तो प्रत्येक प्रविष्टि बिजली को इंगित करती है कि वर्तमान कच्ची विशेषता को उठाया जाना चाहिए। तो कहते हैं monomial मैप करेगा ।seq=(d1,...,dN)Sum(seq)=∑Ni=1≤D(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
उदाहरण। यदि आपके सामान्यीकरण में रुचि है, तो नियमित रूप से रैखिक प्रतिगमन करने के लिए बेहतर है।
युवल के लिए आभार मदद के लिए सीएस एक्सचेंज है ।