Danh sách để python ma trận thưa thớt

Bài viết sau đây cung cấp một dàn ý cho Ma trận thưa thớt trong Python. Trong một ma trận, nếu hầu hết các giá trị bằng 0, thì đó là ma trận thưa thớt. Nó được sử dụng rộng rãi trong học máy cho mục đích mã hóa dữ liệu và trong các lĩnh vực khác như xử lý ngôn ngữ tự nhiên. Ưu điểm chính của ma trận thưa thớt là dung lượng lưu trữ và thời gian tính toán. Vì hầu hết các giá trị đều bằng 0, nên nó chỉ chiếm ít bộ nhớ hơn và có thể dễ dàng tính toán bằng cách tạo cấu trúc dữ liệu để chỉ tìm kiếm các giá trị khác 0

Cú pháp của ma trận thưa thớt

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

Ma trận sau đây là một ví dụ về ma trận thưa thớt

0 0 5 0 9
0 0 0 7 0
0 0 0 0 0
0 1 7

Gói phát triển phần mềm tất cả trong một[hơn 600 khóa học, hơn 50 dự án]

Giá
Xem khóa học

600+ Khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 6 [83.146 xếp hạng]

Độ thưa của ma trận được tính theo công thức

Độ thưa = [không có số 0]/ kích thước của ma trận

Trong ví dụ trên, nó có 15 giá trị 0. Do đó độ thưa của ma trận là 0. 75 hoặc 75%. Do đó, ma trận thưa thớt được coi là cấu trúc dữ liệu tốt nhất để lưu trữ nếu ma trận chỉ có một vài giá trị khác không

Có bảy loại ma trận thưa thớt khác nhau có sẵn

  • Khối ma trận thưa thớt [bsr]
  • Ma trận định dạng tọa độ [coo]
  • Ma trận cột không gian nén [csc]
  • Ma trận hàng không gian nén [csr]
  • Ma trận thưa thớt với lưu trữ đường chéo [dia]
  • Dictionary Of Keys Dựa Ma trận thưa thớt[dok]
  • Danh sách được liên kết Ma trận thưa thớt [lil]

Chọn đúng loại ma trận thưa thớt

  • Điều rất quan trọng là phải biết khi nào nên sử dụng loại ma trận thưa thớt nào. Chỉ chọn đúng ma trận sẽ làm cho hoạt động hiệu quả hơn
  • Bất cứ khi nào một ma trận thưa thớt mới phải được xây dựng từ phía dưới, thì nên sử dụng ma trận thưa thớt danh sách được liên kết hoặc từ điển ma trận khóa
  • Tuy nhiên, hai ma trận này không hiệu quả để thực hiện các phép tính số học
  • Bất cứ khi nào có nhu cầu nhân hoặc duyệt cột không gian nén của hàng không gian nén sẽ là lựa chọn tốt nhất;

Hạn chế của ma trận thưa thớt

Sau đây là hai nhược điểm chính của ma trận thưa thớt

Chúng là độ phức tạp không gian và độ phức tạp thời gian

1. Độ phức tạp không gian

Trong các ví dụ thực tế, hầu hết các ma trận đều thưa thớt. Cần bộ nhớ lớn để lưu trữ cho một ma trận lớn, đặc biệt là ma trận liên kết, thể hiện các liên kết từ trang này sang trang khác. Một ví dụ về ma trận nhỏ hơn là ví dụ về sự xuất hiện của một từ trong sách so với tất cả các từ trong ngôn ngữ. Trong cả hai trường hợp, kết quả của ma trận hầu hết sẽ bằng 0 và bộ nhớ phải được phân bổ cho tất cả

2. Thời gian phức tạp

Hoạt động của một ma trận thưa thớt chẳng hạn như cộng hoặc nhân hai ma trận thưa thớt có thể mất nhiều thời gian mặc dù đầu ra của hầu hết các hoạt động sẽ bằng không. Đây là một vấn đề tăng theo kích thước của ma trận. Điều này được nhân đôi khi xem xét tất cả các phương pháp học máy đều yêu cầu thao tác trên từng hàng và cột, dẫn đến thời gian thực hiện cao hơn

Các ví dụ thực tế về ma trận thưa thớt

  • Nếu người dùng đã xem ít nhất một bộ phim từ danh mục phim
  • Nếu người dùng đã mua bất kỳ sản phẩm nào được liệt kê trong danh mục sản phẩm
  • Số lần một bài hát được nghe trong danh mục bài hát
  • Xử lý ngôn ngữ tự nhiên để thao tác với tài liệu văn bản
  • Đề xuất cho các sản phẩm trong danh mục sản phẩm
  • Khi làm việc với một số lượng lớn hình ảnh có nhiều pixel đen
  • Bình thường hóa điểm tần số từ trong từ điển

Ví dụ về Ma trận thưa thớt trong Python

Dưới đây là các ví dụ về Ma trận thưa trong Python

Ví dụ 1

Mã số

print["demo of sparse matrix in python"]
print["creating and printing csr matrix"]
import numpy as num
from scipy.sparse import csr_matrix,csc_matrix
csrmatrixeg = csr_matrix[[3, 2],dtype = num.int8].toarray[]
print[csrmatrixeg]
print["next sparse matrix"]
r= num.array[[0, 1, 0, 2, 2, 0]]
c = num.array[[0, 0, 2, 0, 0, 2]]
d = num.array[[1, 2, 5, 7, 9, 3]]
op= csr_matrix[[d, [r, c]], shape = [3, 4]].toarray[]
print[op]
print["demo of creating csc matrix in pyuthon"]
egmat = csc_matrix[[3, 5],dtype = num.int8].toarray[]
print[egmat]
r1= num.array[[0, 0, 0, 2, 2, 0]]
c1 = num.array[[0, 0, 1, 0, 0, 0]]
d1 = num.array[[1, 2, 0, 0, 9, 3]]
op1= csc_matrix[[d, [r, c]], shape = [4, 4]].toarray[]
print[op1]

đầu ra

Ví dụ #2

Mã số

print["demo of sparse matrix in python"]
print["creating and printing c00 matrix"]
import numpy as num
from scipy.sparse import coo_matrix
coomateg = coo_matrix[[3, 2],dtype = num.int8].toarray[]
print[coomateg]
print["ooo sparse matrix"]
r= num.array[[0, 1, 0, 2, 2, 0]]
c = num.array[[0, 0, 2, 0, 0, 2]]
d = num.array[[1, 2, 5, 7, 9, 3]]
op= coo_matrix[[d, [r, c]], shape = [3, 4]].toarray[]
print[op]

đầu ra

Cấu trúc dữ liệu thay thế cần được xem xét khi làm việc với ma trận thưa thớt. Ví dụ: chỉ nên xem xét các giá trị khác 0 và bỏ qua các số 0

Có nhiều cấu trúc dữ liệu như sau

  • Từ điển. Ở đây, một giá trị được ánh xạ bởi giao điểm của một hàng và cột
  • danh sách danh sách. Ở đây, một danh sách được sử dụng để lưu trữ một ma trận và một danh sách con được sử dụng để lưu trữ giá trị và cột của danh sách
  • Danh sách tọa độ. Ma trận được lưu trữ dưới dạng danh sách các bộ dữ liệu với các giá trị của bộ dữ liệu là chỉ số hàng và cột cùng với giá trị tương ứng

Hàng thưa được nén và cột thưa được nén là các cấu trúc dữ liệu thường được sử dụng khác. Tuy nhiên, hàng không gian nén thường được sử dụng nhiều hơn trong học máy vì nó hỗ trợ phép nhân ma trận

Sự kết luận

Như vậy, bài viết đã giải thích chi tiết về ma trận thưa trong Python. Nó giải thích chi tiết về các loại ma trận thưa thớt khác nhau, cách sử dụng và hiệu quả của chúng, cùng với các ví dụ thích hợp. Nó cũng giải thích cách tính độ thưa thớt của ma trận và khi nào và ở đâu sử dụng loại ma trận thưa thớt nào

Bài viết được đề xuất

Đây là hướng dẫn về Ma trận thưa trong Python. Ở đây chúng tôi thảo luận về phần giới thiệu, chọn đúng loại ma trận thưa thớt, nhược điểm và ví dụ. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

Chủ Đề