การถดถอยเชิงเส้นหลายตัวแปรในหลาม


10

ฉันกำลังมองหาแพ็คเกจ Python ที่ใช้การถดถอยเชิงเส้นหลายตัวแปร

(หมายเหตุเกี่ยวกับคำศัพท์: การถดถอยหลายตัวแปรที่เกี่ยวข้องกับกรณีที่มีมากกว่าหนึ่งตัวแปรขึ้นอยู่กับในขณะที่หลาย ๆการถดถอยเกี่ยวข้องกับกรณีที่มีตัวแปรตาม แต่หนึ่งตัวแปรอิสระมากกว่าหนึ่ง)


ฉันสนใจสิ่งนี้เช่นกัน แต่ต้องการเพียงเวกเตอร์คุณลักษณะหลังจากการแปลงแบบไม่เป็นเชิงเส้น ดังนั้นในแถวจะเป็น[1,x1,x2,x1x2,x12,x22]พูดแบบจำลองระดับ 2 พร้อมตัวแปร 2 ตัว
Pinocchio

คำตอบ:


9

คุณยังสามารถใช้sklearn.linear_model.LinearRegression เพียงทำให้yเมทริกซ์เอาต์พุตมีหลายคอลัมน์ตามที่คุณมีตัวแปรตาม หากคุณต้องการบางอย่างที่ไม่ใช่เชิงเส้นคุณสามารถลองใช้ฟังก์ชันพื้นฐานอื่น ๆ ใช้คุณสมบัติพหุนามหรือใช้วิธีอื่นในการถดถอย (เช่น NN)


1
คุณกำลังถามเกี่ยวกับการถดถอยโลจิสติกหลายตัวแปรโดยเฉพาะหรือไม่? ในขณะที่คุณต้องการที่จะดำเนินการจัดประเภทจำนวนมากในครั้งเดียว? การถดถอยเชิงเส้นหลายตัวแปรถูกนำมาใช้อย่างแน่นอน การถดถอยโลจิสติกจะต้องมีกรอบแตกต่างกันเพื่อใช้ไลบรารี sklearn
jamesmf

อ๊ะขอโทษฉันอ่านผิดฉันอ่านเอกสาร sklearn.linear_model.LogisticRegression กำลังคิดเกี่ยวกับการถดถอยเชิงเส้น ฉันจะลบความคิดเห็นของฉันเพื่อหลีกเลี่ยงความสับสนในอนาคตของผู้อ่าน ขอบคุณ!
Franck Dernoncourt

หวังว่าคุณจะได้เน้นวิธีการได้รับเวกเตอร์พหุนาม ...
Pinocchio


2

เพื่อความสนุกคุณสามารถคำนวณคุณสมบัติด้วยมือโดยสร้างสิ่งอันดับ seq=(d1,...,dN) ดังนั้น Sum(seq)=i=1ND. เมื่อคุณสร้างสิ่งอันดับเหล่านั้นแต่ละรายการจะบ่งชี้ถึงอำนาจคุณลักษณะดิบปัจจุบันควรได้รับการยก ดังนั้นพูดว่า(1,2,3) จะแมปไปที่ monomial 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เพื่อขอความช่วยเหลือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.