Hồi quy tuyến tính đa biến trong Python


9

Tôi đang tìm kiếm một gói Python thực hiện hồi quy tuyến tính đa biến.

(Lưu ý thuật ngữ: hồi quy đa biến xử lý trường hợp có nhiều hơn một biến phụ thuộc trong khi nhiều hồi quy xử lý trong trường hợp có một biến phụ thuộc nhưng nhiều hơn một biến độc lập.)


Tôi cũng quan tâm đến điều này nhưng chỉ muốn vectơ đặc trưng sau khi biến đổi phi tuyến tính. Vì vậy, trên hàng sẽ là nói cho mô hình độ 2 với 2 biến. [1,x1,x2,x1x2,x12,x22]
Pinocchio

Câu trả lời:


8

Bạn vẫn có thể sử dụng sklearn.linear_model.LinearRegression . Đơn giản chỉ cần tạo đầu ra ymột ma trận có nhiều cột như bạn có các biến phụ thuộc. Nếu bạn muốn một cái gì đó phi tuyến tính , bạn có thể thử các hàm cơ bản khác nhau, sử dụng các tính năng đa thức hoặc sử dụng một phương pháp khác để hồi quy (như NN).


1
Bạn đang hỏi cụ thể về hồi quy logistic đa biến? Như trong bạn muốn thực hiện nhiều phân loại cùng một lúc? Hồi quy tuyến tính đa biến chắc chắn được thực hiện. Hồi quy logistic sẽ phải được đóng khung khác nhau để sử dụng thư viện sklearn.
jamesmf

Rất tiếc, xin lỗi tôi đã đọc sai, tôi đang đọc tài liệu sklearn.linear_model.LogisticRegression suy nghĩ về hồi quy tuyến tính. Tôi sẽ xóa bình luận của tôi để tránh gây nhầm lẫn cho độc giả trong tương lai. Cảm ơn!
Franck Dernoncourt

ước gì bạn đã nhấn mạnh làm thế nào để có được vectơ đặc trưng đa thức ...
Pinocchio


2

Để giải trí, bạn có thể tính toán tính năng bằng tay bằng cách tạo các bộ dữ liệu Seq= =(d1,...,dN) như vậy mà Sbạnm(Seq)= =ΣTôi= =1ND. Khi bạn tạo các bộ dữ liệu đó, mỗi mục nhập biểu thị sức mạnh mà tính năng thô hiện tại sẽ được nâng lên. Nói vậy(1,2,3) sẽ ánh xạ tới đơn thức x1x22x33.

Mã để nhận các bộ dữ liệu là:

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

sau đó sẽ dễ dàng thực hiện hồi quy nếu bạn biết đại số tuyến tính.

c = pseudo_inverse(X_poly)*y

thí dụ. Có lẽ tốt hơn để thực hiện hồi quy tuyến tính thường xuyên mặc dù nếu bạn quan tâm đến khái quát.


Lời cảm ơn đến Yuval là trao đổi CS để được giúp đỡ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.