Đại số tuyến tính là một nhánh của toán học liên quan đến phương trình tuyến tính bằng cách sử dụng không gian vectơ và thông qua ma trận. Ma trận là chìa khóa của đại số tuyến tính. Tất cả đại số tuyến tính xoay quanh ma trận. Một trong những bước chính cần thiết trong đại số tuyến tính là phép nhân vô hướng. Khi một ma trận được xác định bằng NumPy, thật dễ dàng để mã hóa phép nhân vô hướng
Mã Python cho phép nhân vô hướng của ma trận
# Linear Algebra Learning Sequence # Scalar Multiplication of a Matrix import numpy as np # Use of np.array[] to define a matrix V = np.array[[[1,2,3],[2,3,5],[3,6,8]]] # Scalar Multiplication of matrix with c =2 print["The Matrix A =\n",V] print["The MAtrix 2xA =\n",2*V]
đầu ra
The Matrix A = [[1 2 3] [2 3 5] [3 6 8]] The MAtrix 2xA = [[ 2 4 6] [ 4 6 10] [ 6 12 16]]
Đại số tuyến tính là một nhánh của toán học liên quan đến phương trình tuyến tính bằng cách sử dụng không gian vectơ và thông qua ma trận. Nói cách khác, véc tơ là một ma trận trong không gian n chiều chỉ có một cột. Trong đại số tuyến tính, có hai loại phép nhân
- Nhân bản vô tính
- nhân chéo
Trong một tích vô hướng, mỗi thành phần của vectơ được nhân với cùng một giá trị vô hướng. Kết quả là, độ dài của vectơ được tăng theo giá trị vô hướng.
Ví dụ. Cho véc tơ a = [4, 9, 7], đây là véc tơ 3 chiều [x, y và z]
Vì vậy, một tích vô hướng sẽ được cho là b = c*a
Trong đó c là một giá trị vô hướng không đổi [từ tập hợp tất cả các số thực R]. Độ dài của vectơ b gấp c lần độ dài của vectơ a
Nếu bạn đã làm khoa học dữ liệu được một thời gian nhưng không hiểu toán học đằng sau nó, phép nhân ma trận là nơi tốt nhất để bắt đầu. Nó dễ tiếp cận, thiết thực và giúp bạn làm quen với các đối tượng toán học của máy học. vô hướng, vectơ và ma trận
Ồ vâng, và Numpy đi dạo trong công viên
Đến cuối bài viết này, bạn sẽ có hiểu biết thực tế về phép nhân ma trận
Ma trận là gì
Ở đây chúng ta sẽ đối chiếu ma trận với vô hướng
Ma trận là một mảng 2D, trong đó mỗi phần tử trong mảng có 2 chỉ số. Ví dụ:
The Matrix A = [[1 2 3] [2 3 5] [3 6 8]] The MAtrix 2xA = [[ 2 4 6] [ 4 6 10] [ 6 12 16]]5 là một ma trận và chỉ số của
The Matrix A = [[1 2 3] [2 3 5] [3 6 8]] The MAtrix 2xA = [[ 2 4 6] [ 4 6 10] [ 6 12 16]]6 là [0,0]
Chúng tôi có thể chứng minh điều này bằng Python và Numpy
import numpy as npA = [[1, 2],
[3, 4]]np.array[A][0,0]
=> 1
Khi nói về hình dạng của ma trận, chúng ta nói “hàng x cột”. Chúng ta sẽ nói ma trận thứ nhất bên dưới có hình dạng 2x2 và ma trận thứ 2 có hình dạng 3x2
[[1, 2],
[3, 4]][[10, 20],
[11, 21],
[12, 22]]
Ngược lại, vô hướng chỉ là một số, như số
[[1, 2],0
[3, 4]][[10, 20],
[11, 21],
[12, 22]]
Nhân bản vô tính
Dạng đơn giản của phép nhân ma trận được gọi là phép nhân vô hướng, nhân một đại lượng vô hướng với một ma trận
Phép nhân vô hướng thường dễ dàng. Mỗi giá trị trong ma trận đầu vào được nhân với vô hướng và đầu ra có cùng hình dạng với ma trận đầu vào
Hãy làm ví dụ trên nhưng với Python's Numpy
a = 7
B = [[1,2],
[3,4]]np.dot[a,B]=> array[[[ 7, 14],
=> [21, 28]]]
Thêm một ví dụ nhân vô hướng. Lần này một vô hướng nhân một ma trận 3x1
Và trong Numpy
a = 4
B = [[1],[2],[3]]np.dot[a,B]=> array[[[ 4],
=> [ 8],
=> [12]]]
Thứ tự không quan trọng với phép nhân vô hướng. “ma trận x vô hướng” và “ma trận x vô hướng” cho cùng một kết quả. Nhưng không phải vậy khi nhân 2 ma trận
Phép nhân ma trận
Bây giờ đến phần thú vị. Nhân ma trận 2D với ma trận 2D
Có một vài điều cần lưu ý
- Đặt hàng quan trọng bây giờ.
[[1, 2],
1
[3, 4]][[10, 20],
[11, 21],
[12, 22]] - Ma trận có thể được nhân lên nếu số cột trong ma trận thứ nhất bằng số hàng trong ma trận thứ hai
- Phép nhân là tích vô hướng của hàng và cột. Các hàng của ma trận thứ nhất với các cột của ma trận thứ 2
ví dụ 1
Trong hình trên,
[[1, 2],2 trong chỉ số [0,0] của ma trận xuất ra là tích vô hướng của hàng đầu tiên của ma trận thứ nhất và cột thứ nhất của ma trận thứ 2
[3, 4]][[10, 20],
[11, 21],
[12, 22]]
Hãy sao chép kết quả bằng Python
A = [[1,2],
[3,4]]B = [[5,6],
[7,8]]np.dot[A,B]=> array[[[19, 22],
=> [43, 50]]]
Và hãy tập trung vào quan điểm về trật tự. Hãy thử
[[1, 2],3 và sau đó thử
[3, 4]][[10, 20],
[11, 21],
[12, 22]]
[[1, 2],4
[3, 4]][[10, 20],
[11, 21],
[12, 22]]
The Matrix A = [[1 2 3] [2 3 5] [3 6 8]] The MAtrix 2xA = [[ 2 4 6] [ 4 6 10] [ 6 12 16]]2
Bây giờ hãy chú ý đầu ra khác nhau như thế nào. Bạn sẽ tìm thấy kết quả tương tự khi tính toán nó trên giấy [không trực quan nếu bạn không quen thuộc với ma trận]
ví dụ 2
Bây giờ chúng ta sẽ nhân ma trận 2x3 với ma trận 3x2
Và trong Python với Numpy
The Matrix A = [[1 2 3] [2 3 5] [3 6 8]] The MAtrix 2xA = [[ 2 4 6] [ 4 6 10] [ 6 12 16]]3
ví dụ 3
Ví dụ cuối cùng. Nhân một ma trận 1x5 với ma trận 5x1
Lưu ý rằng tất cả phép tính chúng ta thực hiện ở đây chỉ đơn giản là trả về một ô duy nhất trong ma trận đầu ra
Và một lần nữa, trong Python
The Matrix A = [[1 2 3] [2 3 5] [3 6 8]] The MAtrix 2xA = [[ 2 4 6] [ 4 6 10] [ 6 12 16]]4
Điều đó bao gồm 3 trường hợp duy nhất của phép nhân ma trận và sẽ cung cấp cho bạn ý nghĩa chung về cách thức hoạt động của nó. Tôi đã trình bày tất cả các phép tính trong từng bước của sơ đồ để bạn dễ dàng theo dõi
Phần kết luận
Phép nhân ma trận [và đại số tuyến tính] là cơ sở cho học sâu và học máy
Mặc dù bạn không cần nó để cắm và chạy với Sklearn, nhưng có một bức tranh tinh thần về cách thức hoạt động của nó sẽ giúp bạn hiểu các mô hình của nó. Và với sự hiểu biết đó, hiệu quả tăng lên trong việc điều chỉnh và điều chỉnh các mô hình đó để có hiệu suất tốt hơn