पाइथन में बहुभिन्नरूपी रेखीय प्रतिगमन


10

मैं एक पायथन पैकेज की तलाश कर रहा हूं, जो लीनियर रिग्रेशन को मल्टीवेरिएट करता है।

(शब्दावली नोट: बहुभिन्नरूपी प्रतिगमन उस मामले से संबंधित होता है जहां एक से अधिक निर्भर चर होते हैं जबकि बहु प्रतिगमन उस मामले से संबंधित होता है जहां एक आश्रित चर होता है लेकिन एक से अधिक स्वतंत्र चर होते हैं।)


मुझे भी इसमें दिलचस्पी है, लेकिन गैर-रेखीय परिवर्तन के बाद सिर्फ फीचर वेक्टर चाहते हैं। तो पंक्ति में 2 चर वाले 2 मॉडल के लिए कहेंगे। [1,x1,x2,x1x2,x12,x22]
पिनोचियो

जवाबों:


9

आप अभी भी sklearn.linear_model.inearRegression का उपयोग कर सकते हैं । बस आउटपुट yको उतने कॉलम के साथ एक मैट्रिक्स बनाएं जितना आपके पास निर्भर चर हैं। यदि आप कुछ गैर-रैखिक चाहते हैं , तो आप विभिन्न आधार कार्यों की कोशिश कर सकते हैं, बहुपद सुविधाओं का उपयोग कर सकते हैं, या प्रतिगमन के लिए एक अलग विधि का उपयोग कर सकते हैं (जैसे एनएन)।


1
क्या आप विशेष रूप से बहुभिन्नरूपी लॉजिस्टिक प्रतिगमन के बारे में पूछ रहे हैं? जैसा कि आप एक साथ कई वर्गीकरण करना चाहते हैं? बहुभिन्नरूपी रैखिक प्रतिगमन निश्चित रूप से कार्यान्वित किया जाता है। स्कीलियर लाइब्रेरी का उपयोग करने के लिए लॉजिस्टिक रिग्रेशन को अलग तरह से तैयार करना होगा।
jamesmf

व्हाट्स, माफ करना, मैं गलत था, मैं रैखिक प्रतिगमन के बारे में सोचकर sklearn.linear_model.ogisticRegression प्रलेखन पढ़ रहा था। भविष्य के पाठकों को भ्रमित करने से बचने के लिए मैं अपनी टिप्पणी हटा दूंगा। धन्यवाद!
फ्रेंक डर्नोनकोर्ट

काश आपने इस बात पर जोर दिया होता कि बहुपद सुविधा वेक्टर कैसे मिलती ...
पिनोचियो


2

बस मज़े के लिए आप tuples जैसे कि बनाकर हाथ से फ़ीचर की गणना कर सकते हैं । एक बार जब आप उन टुपल्स का निर्माण करते हैं, तो प्रत्येक प्रविष्टि बिजली को इंगित करती है कि वर्तमान कच्ची विशेषता को उठाया जाना चाहिए। तो कहते हैं monomial मैप करेगा ।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

उदाहरण। यदि आपके सामान्यीकरण में रुचि है, तो नियमित रूप से रैखिक प्रतिगमन करने के लिए बेहतर है।


युवल के लिए आभार मदद के लिए सीएस एक्सचेंज है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.