Hướng dẫn vector data in python - dữ liệu vectơ trong python

Dẫn nhập

Trong bài trước, Kteam đã GIỚI THIỆU MACHINE LEARNING VÀ CÀI ĐẶT NUMPY , giúp các bạn một phần hiểu được bản chất của Machine Learning.GIỚI THIỆU MACHINE LEARNING VÀ CÀI ĐẶT NUMPY , giúp các bạn một phần hiểu được bản chất của Machine Learning.

Nội dung chính ShowShow

  • Dẫn nhập
  • Ma trận [matrix] với NumPy
  • Định nghĩa
  • Kích thước
  • Vector với NumPy
  • Định nghĩa
  • Kích thước
  • Vector với NumPy
  • Khởi tạo ma trận và vector với NumPy
  • Khởi tạo ma trận
  • Khởi tạo vector
  • Indexing ma trận và vector
  • Các toán tử với ma trận và vector
  • Cộng và trừ với ma trận
  • Nhân và chia ma trận với số
  • Nhân ma trận với vector
  • Phân tích
  • Phép nhân ma trận – vector trong NumPy
  • Nhân ma trận với ma trận
  • Phép nhân ma trận – ma trận với NumPy
  • Tính chất của phép nhân ma trận
  • Identity matrix [ma trận đơn vị]
  • Phép nhân “element-wise” với ma trận
  • Toán tử logic với ma trận
  • Inverse matrix [ma trận khả nghịch]
  • Transpose matrix [ma trận chuyển vị]
  • Hàm size với ma trận
  • Hàm sum và max/min với ma trận
  • Ý nghĩa của ma trận trong Machine Learning
  • Kết luận

Thảo luậnMa trận và vector với NumPy. Với bài này, Kteam sẽ giới thiệu đến các bạn một nội dung khá “toán học”, vì thế nếu cảm thấy mệt mỏi, hoa mắt, chóng mặt, trời đất quay cuồng thì hãy nghĩ ngơi một lúc 😊

Ở bài này chúng ta sẽ cùng nhau tìm hiểu về Ma trận và vector với NumPy. Với bài này, Kteam sẽ giới thiệu đến các bạn một nội dung khá “toán học”, vì thế nếu cảm thấy mệt mỏi, hoa mắt, chóng mặt, trời đất quay cuồng thì hãy nghĩ ngơi một lúc 😊: Một số nội dung được trình bày trong video vẫn có thể chưa hoàn toàn chính xác. Vì vậy, sau khi tham khảo góp ý từ cộng đồng , Kteam đã có hiệu chỉnh học  liệu và cách diễn đạt các định nghĩa trong bài viết để nội dung có thể đi sát hơn với các tài liệu toán học.  

Lưu ý: Một số nội dung được trình bày trong video vẫn có thể chưa hoàn toàn chính xác. Vì vậy, sau khi tham khảo góp ý từ cộng đồng , Kteam đã có hiệu chỉnh học  liệu và cách diễn đạt các định nghĩa trong bài viết để nội dung có thể đi sát hơn với các tài liệu toán học.  

Nội dung

  • Để theo dõi bài này tốt nhất bạn cần có kiến thức về:
  • LẬP TRÌNH PYTHON CƠ BẢN

Xem qua bài GIỚI THIỆU MACHINE LEARNING VÀ CÀI ĐẶT NUMPY

  • Trong bài này chúng ta sẽ cùng tìm hiểu về:
  • Định nghĩa ma trận và vector
  • Cách khởi tạo ma trận và vector
  • Các toán tử với ma trận
  • Identify matrix và Transpose matrix

Ma trận [matrix] với NumPy

Định nghĩa

Kích thước là một mảng 2 chiều. Trong Python mảng 2 chiều có thể xem là một List của List.

Kích thước

Vector với NumPysố hàng * số cột.

Khởi tạo ma trận và vector với NumPy

Khởi tạo ma trận

Khởi tạo vector

Vector với NumPy

Định nghĩa

Khởi tạo ma trận và vector với NumPylà ma trận với 1 cột và nhiều hàng [n * 1]

Kích thước

Vector với NumPycủa vector [còn được gọi là chiều vector – vector dimension] là số hàng của vector.

Khởi tạo ma trận và vector với NumPy

  • Khởi tạo ma trận
  • Khởi tạo vector

Vector với NumPy

Khởi tạo ma trận và vector với NumPy

Khởi tạo ma trậnnp.array:

Khởi tạo vector[object, dtype=None, ndmin=0]

Indexing ma trận và vector

  • Các toán tử với ma trận và vector: một mảng 2 chiều, ta có thể sử dụng một list của list.
  • Cộng và trừ với ma trận: kiểu dữ liệu của các phần tử trong ma trận
  • Nhân và chia ma trận với số: số chiều tối thiểu khi return object, nên đặt = 2 để tiện cho việc indexing ma trận cho Machine Learning.

Nhân ma trận với vector trừ object, các parameter khác khi truyền vào phải có key_arg.

Khởi tạo ma trận và vector với NumPy

Khởi tạo ma trận

Khởi tạo vector

Khởi tạo ma trận

Khởi tạo vector

Indexing ma trận và vector

Khởi tạo ma trận và vector với NumPy

Khởi tạo vector

Indexing ma trận và vectorindexing ma trận và vector theo cấu trúc:

Các toán tử với ma trận và vectorrow_index, column_index]

Indexing ma trận và vector

  • Các toán tử với ma trận và vector, column_index có thể là kí tự ‘:’ với ý nghĩa lấy toàn bộ những phần tử theo hàng/ cột.

Khởi tạo ma trận và vector với NumPy

Khởi tạo ma trận

Indexing ma trận và vector

Các toán tử với ma trận và vector

Cộng và trừ với ma trậnelement-wise”, nghĩa là phép toán với từng phần tử tương ứng.

Nhân và chia ma trận với số

Nhân ma trận với vector Để cộng và trừ 2 ma trận, kích thước của cả hai phải giống nhau.

Phân tích

Phép nhân ma trận – vector trong NumPy

Cộng và trừ với ma trận

Nhân và chia ma trận với số

Tương tự với chia:

Ví dụ:

import numpy as np _a = [ [ 3, 2, 1 ], [ 2, 4, 6 ] ] a = np.array[_a] print[‘a / 2:’, a / 2] #print out a / 2 print[‘a * 2:’, a * 2] #print out a * 2

Nhân ma trận với vector

Khi nhân ma trận với vector, ta lấy các phần tử trong cột số của vector nhân lần lượt với các hàng của ma trận để được các tích, sau đó lấy tổng của các tích rồi cho vào từng hàng của kết quả. Chúng ta có thể hình dung như sau:

Kết quả của phép tính luôn là một vector. Số cột của ma trận phải bằng với số hàng của vector.

Một ma trậnm * n nhân với một vectorn * 1sẽ có tích là một vectorm * 1 m * n nhân với một vector n * 1sẽ có tích là một vector m * 1

Phân tích

Đầu tiên, ta xoay ngang vector    lại thành  

Sau đó nhân lần lượt từng dòng của ma trận với  : 

Cuối cùng lấy tổng của từng hàng:   

Phép nhân ma trận – vector trong NumPy

Trong NumPy, để nhân ma trận với vector như trên, ta có thể dùng:

   Matrix_name.dot[vector]Matrix_name.dot[vector]

Từ phiên bản 3.5 trở lên Python đã hỗ trợ toán tử @: @:

  Matrix @ vectorMatrix @ vector

Để hiểu rõ hơn, chúng ta cùng đi đến Ví dụ:Ví dụ:

import numpy as np _a = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] a = np.array[_a] #Create a 3 * 2 matrix _b = [ 1, 2 ] b = np.array[_b] #Create a 2-dimension vector print[a] print[b] print[‘a * b:’, a.dot[b]] #print out a * b using narray.dot[] print[‘a * b:’, a @ b] #print out a * b using @ operation

Thực hiện từng bước:

Đầu tiên xoay ngang b:b:

  Nhân từng dòng a với b: 
Nhân từng dòng a với b

Kết quả phép nhân là tổng từng dòng

Nhân ma trận với ma trận

Chúng ta nhân 2 ma trận bằng cách tách 1 ma trận ra thành nhiều vector rồi nhân, sau đó ghép các kết quả lại.

Để nhân 2 ma trận, số cột của ma trận 1 phải bằng số hàng ở ma trận 2.

Một ma trận m * n nhân với một ma trận n * o sẽ cho kết quả là một ma trận m * o m * n nhân với một ma trận n * o sẽ cho kết quả là một ma trận m * o

Phân tích

Đầu tiên, ta xoay ngang vector    lại thành  

Sau đó nhân lần lượt từng dòng của ma trận với  :  : ;   ;

Cuối cùng lấy tổng của từng hàng:   

Phép nhân ma trận – vector trong NumPy

Trong NumPy, để nhân ma trận với vector như trên, ta có thể dùng:

Từ phiên bản 3.5 trở lên Python đã hỗ trợ toán tử @:

  Matrix1.dot[matrix2]Matrix1.dot[matrix2]

  Matrix @ vector

Để hiểu rõ hơn, chúng ta cùng đi đến Ví dụ: @ matrix2

Ví dụ:

import numpy as np _a = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] a = np.array[_a] #Create a 3 * 2 matrix _b = [ 1, 2 ] b = np.array[_b] #Create a 2-dimension vector print[a] print[b] print[‘a * b:’, a.dot[b]] #print out a * b using narray.dot[] print[‘a * b:’, a @ b] #print out a * b using @ operation

Thực hiện từng bước:

Đầu tiên xoay ngang b:  thành   và 

  Nhân từng dòng a với b:  và  

Kết quả phép nhân là tổng từng dòng

Phép nhân ma trận – vector trong NumPy

Trong NumPy, để nhân ma trận với vector như trên, ta có thể dùng:

Từ phiên bản 3.5 trở lên Python đã hỗ trợ toán tử @:không có tính chất giao hoán.

  Matrix @ vectortính chất kết hợp.

Để hiểu rõ hơn, chúng ta cùng đi đến Ví dụ:

import numpy as np _a = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] a = np.array[_a] #Create a 3 * 2 matrix _b = [ 1, 2 ] b = np.array[_b] #Create a 2-dimension vector print[a] print[b] print[‘a * b:’, a.dot[b]] #print out a * b using narray.dot[] print[‘a * b:’, a @ b] #print out a * b using @ operation là ma trận mà khi nhân với bất kì ma trận khác cùng kích thước, ma trận đó sẽ không đổi. Phép nhân với identity matrix tính chất giao hoán. Chúng ta có thể xem identity matrix là “số 1” của ma trận.

Thực hiện từng bước:

Ví dụ:

Đầu tiên xoay ngang b:identity matrix trong NumPy bằng hàm eye:

np.eye[x]eye[x]

  Nhân từng dòng a với b: x là kích thước của identity matrix.

Ví dụ:

Kết quả phép nhân là tổng từng dòng

Nhân ma trận với ma trận

Chúng ta nhân 2 ma trận bằng cách tách 1 ma trận ra thành nhiều vector rồi nhân, sau đó ghép các kết quả lại.

Để nhân 2 ma trận, số cột của ma trận 1 phải bằng số hàng ở ma trận 2. element-wise bằng toán tử *

Ví dụ:

Một ma trận m * n nhân với một ma trận n * o sẽ cho kết quả là một ma trận m * o

Đầu tiên tách ma trân thứ 2 thành 2 vector nhỏ:   thành     và  

Nhân ma trận đầu lần lượt với 2 vector  và  : ;   ;

Ví dụ:

Kết quả là 2 vector có cùng kích thước:  và 

Cuối cùng, ghép 2 vector lại với nhau: 

Phép nhân ma trận – ma trận với NumPy được kí hiệu bằng: A-1

Cũng như nhân ma trận với vector, trong NumPy ta có thể dùng:

Hoặc

Matrix1 @ matrix2

import numpy as np _a = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] a = np.array[_a] #Create a 3 * 2 matrix _b = [ [1, 3], [2, 1] ] b = np.array[_b] #Create a 2 * 2 matrix print[a] print[b] print[‘a * b:’, a.dot[b]] #print out a * b using narray.dot[] print[‘a * b:’, a @ b] #print out a * b using @ operation matrix]

Ví dụ:

Đầu tiên tách ma trân thứ 2 thành 2 vector nhỏ:    thành   và 

Nhân ma trận đầu lần lượt với 2 vector  và :   Identity matrix này hiển thị giá trị rất nhỏ thay cho số 0, ta có thể làm tròn để có identity matrix chính xác. Một số ma trận không thể invert.

Transpose matrix [ma trận chuyển vị]

Transpose matrix được kí hiệu là: ATđược kí hiệu là: AT

Transpose matrix là ma trận đảo hàng và cột so với ma trận gốc.là ma trận đảo hàng và cột so với ma trận gốc.

Với NumPy ta sử dụng function np.transpose[] để transpose matrix. np.transpose[] để transpose matrix.

Ví dụ:

import numpy as np _a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] a = np.array[_a] a_t = np.transpose[a] #Create transpose of a print[a] print[a_t]

Hàm size với ma trận

Chúng ta có thể sử dụng hàm size để lấy kích thước của ma trận:

np.size[matrix, axis]matrix, axis]

Trong đó:

  • matrix: ma trận cần tìm kích thước: ma trận cần tìm kích thước
  • axis: chiều, nếu là 0 sẽ trả về số hàng, 1 trả về số cột, mặc định trả về số phần tử.: chiều, nếu là 0 sẽ trả về số hàng, 1 trả về số cột, mặc định trả về số phần tử.

Ví dụ:

import numpy as np _a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] a = np.array[_a] a_t = np.transpose[a] #Create transpose of a print[a] print[a_t]

Hàm size với ma trận

Chúng ta có thể sử dụng hàm size để lấy kích thước của ma trận:

np.size[matrix, axis]

np.sum[matrix,axis]matrix,axis]

np.max[matrix,axis]matrix,axis]

np.min[matrix,axis]matrix,axis]

Trong đó:

  • matrix: ma trận cần tìm kích thước: ma trận cần tìm kích thước
  • axis: chiều, nếu là 0 sẽ trả về số hàng, 1 trả về số cột, mặc định trả về số phần tử.: chiều, nếu là 0 sẽ tính theo cột, 1 sẽ tính theo hàng, mặc định sẽ tính trên cả ma trận.

Ví dụ:

import numpy as np _a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] a = np.array[_a] a_t = np.transpose[a] #Create transpose of a print[a] print[a_t]

Hàm size với ma trận

Chúng ta có thể sử dụng hàm size để lấy kích thước của ma trận:

np.size[matrix, axis]

Trong đó:

matrix: ma trận cần tìm kích thướcTHUẬT TOÁN LINEAR REGRESSION VÀ HÀM HYPOTHESIS

axis: chiều, nếu là 0 sẽ trả về số hàng, 1 trả về số cột, mặc định trả về số phần tử.Luyện tập – Thử thách – Không ngại khó”.

import numpy as np _a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] a = np.array[_a] print[np.size[a]] print[np.size[a, 1]]

Hàm sum và max/min với ma trận

Chủ Đề