Cách tạo ma trận từ hai vectơ trong python

Lớp numpy

v = np.array[[[2],[1],[3]]]
1 được sử dụng để biểu diễn cả ma trận và vectơ. Để xây dựng một ma trận trong numpy, chúng ta liệt kê các hàng của ma trận trong một danh sách và chuyển danh sách đó tới hàm tạo mảng numpy

Ví dụ, để xây dựng một mảng numpy tương ứng với ma trận

chúng tôi sẽ làm

A = np.array[[[1,-1,2],[3,2,0]]]

Các vectơ chỉ là các mảng có một cột. Ví dụ, để xây dựng một véc tơ

chúng tôi sẽ làm

v = np.array[[[2],[1],[3]]]

Một cách tiếp cận thuận tiện hơn là hoán vị vectơ hàng tương ứng. Ví dụ: để tạo vectơ ở trên, thay vào đó, chúng ta có thể hoán vị vectơ hàng

Mã cho điều này là

v = np.transpose[np.array[[[2,1,3]]]]

numpy làm quá tải chỉ mục mảng và các ký hiệu cắt để truy cập các phần của ma trận. Ví dụ: để in mục dưới cùng bên phải trong ma trận A, chúng tôi sẽ thực hiện

print[A[1,2]]

Để cắt cột thứ hai trong ma trận A, chúng ta sẽ làm

col = A[:,1:2]

Phần đầu tiên chọn tất cả các hàng trong A, trong khi phần thứ hai chỉ chọn mục ở giữa trong mỗi hàng

Để thực hiện phép nhân ma trận hoặc phép nhân vectơ-ma trận, chúng ta sử dụng phương thức

v = np.array[[[2],[1],[3]]]
2

w = np.dot[A,v]

Giải hệ phương trình với numpy

Một trong những vấn đề phổ biến hơn trong đại số tuyến tính là giải phương trình vectơ-ma trận. Đây là một ví dụ. Chúng tôi tìm kiếm vectơ x giải phương trình

x = b

ở đâu

Chúng tôi bắt đầu bằng cách xây dựng các mảng cho A và b

________số 8_______

Để giải hệ ta làm

x = np.linalg.solve[A,b]

Ứng dụng. hồi quy tuyến tính bội

Trong một vấn đề hồi quy bội, chúng tôi tìm kiếm một hàm có thể ánh xạ các điểm dữ liệu đầu vào thành các giá trị kết quả. Mỗi điểm dữ liệu là một vectơ đặc trưng [x1 , x2 , …, xm] bao gồm hai hoặc nhiều giá trị dữ liệu nắm bắt các đặc điểm khác nhau của đầu vào. Để biểu diễn tất cả dữ liệu đầu vào cùng với vectơ giá trị đầu ra, chúng tôi thiết lập ma trận đầu vào X và vectơ đầu ra y

Trong một mô hình hồi quy tuyến tính bình phương nhỏ nhất đơn giản, chúng ta tìm kiếm một véc tơ β sao cho tích Xβ gần đúng nhất với véc tơ kết quả y

Khi chúng tôi đã xây dựng vectơ β, chúng tôi có thể sử dụng nó để ánh xạ dữ liệu đầu vào thành kết quả dự đoán. Đưa ra một vectơ đầu vào ở dạng

chúng ta có thể tính toán một giá trị kết quả dự đoán

Công thức tính vectơ β là

β = [XT X]-1 XT y

Trong chương trình ví dụ tiếp theo của chúng ta, tôi sẽ sử dụng numpy để xây dựng các ma trận và vectơ thích hợp và giải tìm vectơ β. Khi chúng tôi đã giải được β, chúng tôi sẽ sử dụng nó để đưa ra dự đoán cho một số điểm dữ liệu thử nghiệm mà ban đầu chúng tôi đã loại bỏ khỏi tập dữ liệu đầu vào của mình

Giả sử chúng ta đã xây dựng ma trận đầu vào X và vectơ kết quả y ở dạng numpy, đoạn mã sau sẽ tính toán vectơ β

Xt = np.transpose[X]
XtX = np.dot[Xt,X]
Xty = np.dot[Xt,y]
beta = np.linalg.solve[XtX,Xty]

Dòng cuối cùng sử dụng

v = np.array[[[2],[1],[3]]]
3 để tính β, vì phương trình

β = [XT X]-1 XT y

về mặt toán học tương đương với hệ phương trình

[XT X] β = XT y

Tập dữ liệu tôi sẽ sử dụng cho ví dụ này là tập dữ liệu giá nhà ở Windsor, tập dữ liệu này chứa thông tin về doanh số bán nhà ở khu vực Windsor, Ontario. Các biến đầu vào bao gồm một loạt các yếu tố có khả năng ảnh hưởng đến giá nhà, chẳng hạn như diện tích lô đất, số phòng ngủ và sự hiện diện của các tiện nghi khác nhau. Tệp CSV với bộ dữ liệu đầy đủ có sẵn tại đây. Tôi đã tải xuống bộ dữ liệu từ trang web này, nơi cung cấp một số lượng lớn các bộ dữ liệu bao gồm nhiều chủ đề

Bây giờ đây là mã nguồn cho chương trình ví dụ

import csv
import numpy as np

def readData[]:
    X = []
    y = []
    with open['Housing.csv'] as f:
        rdr = csv.reader[f]
        # Skip the header row
        next[rdr]
        # Read X and y
        for line in rdr:
            xline = [1.0]
            for s in line[:-1]:
                xline.append[float[s]]
            X.append[xline]
            y.append[float[line[-1]]]
    return [X,y]

X0,y0 = readData[]
# Convert all but the last 10 rows of the raw data to numpy arrays
d = len[X0]-10
X = np.array[X0[:d]]
y = np.transpose[np.array[[y0[:d]]]]

# Compute beta
Xt = np.transpose[X]
XtX = np.dot[Xt,X]
Xty = np.dot[Xt,y]
beta = np.linalg.solve[XtX,Xty]
print[beta]

# Make predictions for the last 10 rows in the data set
for data,actual in zip[X0[d:],y0[d:]]:
    x = np.array[[data]]
    prediction = np.dot[x,beta]
    print['prediction = '+str[prediction[0,0]]+' actual = '+str[actual]]

Bộ dữ liệu gốc bao gồm hơn 500 mục. Để kiểm tra tính chính xác của các dự đoán do mô hình hồi quy tuyến tính đưa ra, chúng tôi sử dụng tất cả trừ 10 mục nhập dữ liệu cuối cùng để xây dựng mô hình hồi quy và tính toán β. Khi chúng tôi đã xây dựng vectơ β, chúng tôi sử dụng nó để đưa ra dự đoán cho 10 giá trị đầu vào cuối cùng và sau đó so sánh giá nhà dự đoán với giá nhà thực tế từ tập dữ liệu

Đây là kết quả đầu ra của chương trình

v = np.array[[[2],[1],[3]]]
0

Nhìn chung, các dự đoán không tốt một cách ngoạn mục, nhưng một số dự đoán gần như đúng. Đưa ra dự đoán tốt hơn từ dữ liệu này sẽ là chủ đề của hướng dẫn học kỳ mùa đông về máy học

Làm cách nào để chuyển đổi danh sách 2 thành mảng 2D trong Python?

Đã liên kết .
Một mảng 2d từ hai danh sách đã cho
kết hợp danh sách. x = [1,2,3], y = [10,20,30] ==> x_y = [[1,10], [2,20], [3,30]]

Làm cách nào để tạo ma trận với NumPy?

Chúng ta có thể tạo ma trận trong Numpy bằng cách sử dụng các hàm như array[], ndarray[] hoặc matrix[] . Hàm ma trận theo mặc định tạo một mảng 2D chuyên biệt từ đầu vào đã cho. Đầu vào phải ở dạng chuỗi hoặc đối tượng mảng.

Làm cách nào để chuyển đổi hai danh sách thành mảng trong Python?

Cách chuyển đổi danh sách thành mảng trong Python .
sử dụng numpy. array[] Hàm này của thư viện numpy lấy một danh sách làm đối số và trả về một mảng chứa tất cả các phần tử của danh sách. Xem ví dụ bên dưới. nhập numpy dưới dạng np. .
sử dụng numpy. asarray[] Hàm này gọi numpy. hàm array[] bên trong chính nó

Chủ Đề