Tải bản đầy đủ (.pdf) (26 trang)

TIỂU LUẬN GIỮA kì môn học XSTK ứng dụng cho CNTT thư viện thống kê bằng python

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.65 MB, 26 trang )

TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG
KHOA CƠNG NGHỆ THƠNG TIN

TIỂU LUẬN GIỮA KÌ
MƠN HỌC: XSTK Ứng Dụng Cho CNTT
Mã môn học: 502601

Người hướng dẫn: TS NGUYỄN LÂM
Người thực hiện: TRẦN NAM ĐĂNG KHOA - 52100239
Lớp

:

21050301

Khố

TP. HỒ CHÍ MINH, THÁNG 10 NĂM 2022

0

0

:

25


TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG


KHOA CƠNG NGHỆ THƠNG TIN

TIỂU LUẬN GIỮA KÌ
MƠN HỌC: XSTK Ứng Dụng Cho CNTT
Mã môn học: 502061

Người hướng dẫn: TS NGUYỄN LÂM
Người thực hiện: TRẦN NAM ĐĂNG KHOA
Lớp

:

21050301

Khoá

TP. HỒ CHÍ MINH, THÁNG 10 NĂM 2022

0

0

:

25


1

LỜI CẢM ƠN

Lời đầu tiên, em xin chân thành cảm ơn trường Đại học Tôn Đức Thắng và
khoa Công nghệ thông tin đã tạo những điều kiện học tập tốt nhất cho sinh viên.
Em xin chân thành cảm ơn thầy Nguyễn Lâm và cô Nguyễn Thị Huỳnh Trâm
đã hướng dẫn để em hoàn thành tiểu luận này. Trong thời gian nửa đầu của môn học
nay thầy và cô đã cho em thêm nhiều kiến thức bổ ích và vận dụng chúng vào bài
tiểu luận này.
Bài tiểu luận này là sự kết hợp của những kiến thức và nỗ lực của em trong
thời gian học vừa qua. Do chưa có nhiều kinh nghiệm làm tiểu luận cũng như kiến
thức còn hạn chế, bài tiểu luận sẽ không tránh khỏi những thiếu sót. Rất mong nhận
được sự giúp đỡ từ quý thầy cơ để em có thể hồn thiện hơn.
Xin chân thành cảm ơn!

0

0


2

Contents
NỘI DUNG BÁO CÁO............................................................................................ 1
Phần 1: Thư viện thống kê bằng Python................................................................................1

0

0


3


NỘI DUNG BÁO CÁO
Phần 1: Thư viện thống kê bằng Python
1.1Tổng quan về thư viện thống kê trong Python
-

Hiện nay có rất nhiều thư viện thống kê Python như là Python’s
statistics, Numpy, Scipy, Pandas, Matplotlib, Seaborn, Bokeh, Plotly,
Scrapy, … sau đây sẽ tìm hiểu về thư viện thống kê phổ biến và được
sử dụng rộng rãi nhất:
 Python’s statistics là một thư viện Python tích hợp cho các
thống kê mơ tả. Có thể sử dụng nó nếu bộ dữ liệu không quá
lớn hoặc nếu không thể dựa vào việc nhập các thư viện khác.
 staticstics: Mô-đun này cung cấp các chức năng để tính tốn
thống kê tốn học của Real dữ liệu số (-valued). Mơ-đun này
khơng nhằm mục đích trở thành đối thủ cạnh tranh với các thư
viện của bên thứ ba như NumPy , SciPy hoặc các gói thống kê
đầy đủ tính năng độc quyền nhằm vào các nhà thống kê chuyên
nghiệp như Minitab, SAS và Matlab. Nó hướng đến trình độ vẽ
đồ thị và máy tính khoa học.

-

Các phương thức thuộc statistics:
 Một số phương thức tính giá trị trung bình hoặc giá trị điển
hình từ một tập hợp hoặc mẫu như là: mean(), fmean(),
median(), median_low(), median_high(), mode(), mutimode(),
quantiles(), …
 Một số phương thức tính tốn một thước đo về mức độ mà tổng
thể hoặc mẫu có xu hướng lệch khỏi các giá trị điển hình hoặc
trung bình như là: pstdev(), pvariance(), stdev(), variance().

 Một số phương thức tính tốn số liệu thống kê liên quan đến
quan hệ giữa hai đầu vào như là: covariance() , correlation(),
linear_regression().

1.2 Các hàm trong thư viện Statistics(Thống kê)

0

0


4

1.2.1 Hàm mean():
-

Được sử dụng để tính giá trị trung bình của tập dữ liệu đã cho.

-

Cách sử dụng: statistics.mean(data)

-

Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc chuỗi lặp nào).

-

Trả về giá trị trung bình số học của dữ liệu có thể là một chuỗi

hoặc có thể lặp lại. Lưu ý nếu dữ liệu rỗng thì sẽ xuất hiện lỗi
StatisticsError.

-

Ví dụ:

1.2.2 Hàm fmean():
-

Được sử dụng để tính giá trị trung bình thực của các giá trị đầu
vào. Nó chuyển đổi dữ liệu đầu vào thành các giá trị float và
tính giá trị trung bình số học.

-

Cách sử dụng: statistics.fmean(data)

-

Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc trình lặp nào).

-

Phương thức này chạy nhanh hơn phương thức mean() và nó
ln trả về kết quả là float. Lưu ý nếu dữ liệu rỗng thì sẽ xuất
hiện lỗi StatisticsError.

-


Ví dụ:

0

0


5

1.2.3 Hàm geometric_mean():
-

Được sử dụng để tính giá trị trung bình thực của các giá trị đầu
vào. Nó chuyển đổi dữ liệu đầu vào thành các giá trị float và
tính giá trị trung bình hình học.

-

Cách sử dụng: statistics.geometric_mean(data)

-

Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc trình lặp nào).

-

Giá trị trung bình hình học cho thấy xu hướng trung tâm hoặc
giá trị điển hình của dữ liệu bằng cách sử dụng sản phẩm của

các giá trị (trái ngược với giá trị trung bình số học sử dụng tổng
của chúng). Và kết quả trả về giá trị trung bình hình học của dữ
liệu đã cho. Lưu ý nếu dữ liệu rỗng, chứa số 0 hoặc chứa một
giá trị âm thì sẽ xuất hiện lỗi StatisticsError.

-

Ví dụ:

0

0


6

1.2.4 Hàm harmonic_mean():
-

Được sử dụng để tính giá trị trung bình điều hịa (vị trí trung
tâm) của tập dữ liệu đã cho.

-

Cách sử dụng: statistics.harmonic_mean(data)

-

Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc trình lặp nào). Lưu ý không chứa các giá trị âm.


-

Trả về giá trị trung bình hài hịa của dữ liệu đã cho. Lưu ý nếu
dữ liệu rỗng thì sẽ xuất hiện lỗi StatisticsError.

-

Ví dụ:

0

0


7

1.2.5 Hàm median():
-

Được sử dụng tính giá trị trung vị (giá trị giữa) của tập dữ liệu
đã cho. Phương pháp này cũng sắp xếp dữ liệu theo thứ tự tăng
dần trước khi tính giá trị trung bình.

-

Cách sử dụng: statistics.median(data)

-


Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc trình lặp nào).

-

Trả về giá trị trung vị của dữ liệu đã cho. Lưu ý nếu dữ liệu
rỗng thì sẽ xuất hiện lỗi StatisticsError.

-

Ví dụ:

0

0


8

1.2.6 Hàm median_low():
-

Được sử dụng tính giá trị trung bình thấp của tập dữ liệu đã
cho. Phương pháp này cũng sắp xếp dữ liệu theo thứ tự tăng
dần trước khi tính giá trị trung vị thấp.

-

Cách sử dụng: statistics.median_low(data)


-

Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc trình lặp nào).

-

Trả về trung bình thấp của dữ liệu số. Lưu ý nếu dữ liệu rỗng
thì sẽ xuất hiện lỗi StatisticsError.

-

Ví dụ:

- Hàm median_high():
-

Được sử dụng tính giá trị trung bình cao của tập dữ liệu đã cho.
Phương pháp này cũng sắp xếp dữ liệu theo thứ tự tăng dần
trước khi tính giá trị trung vị cao.

-

Cách sử dụng: statistics.median_high(data)

0

0



9

-

Tham số đầu vào data (dữ liệu có thể là bất kĩ chuỗi, danh sách
hoặc trình lặp nào).

-

Trả về trung bình cao của dữ liệu số. Lưu ý nếu dữ liệu rỗng thì
sẽ xuất hiện lỗi StatisticsError.

-

Ví dụ:

1.2.8 Hàm median_grouped():
-

Được sử dụng tính giá trị trung bình của dữ liệu liên tục được
nhóm lại, được tính dưới dạng phân vị thứ 50.

-

Cáchsửdụng: statistics.median_grouped(data,iterval)

-

Phương pháp này coi các điểm dữ liệu là dữ liệu liên tục và
tính tốn trung vị phần trăm 50% bằng cách tìm phạm vi trung

bình trước tiên sử dụng độ rộng khoảng được chỉ định (mặc
định là 1), sau đó nội suy trong phạm vi đó bằng cách sử dụng
vị trí của các giá trị từ tập dữ liệu rơi vào đó trong phạm vi đó.

-

Dữ liệu đầu vào đối với data có thể là bất kĩ chuỗi, danh sách
hoặc iterator nào cịn đối với iterval khơng bắt buộc nhưng

0

0


10

khoảng thời gian đối số tùy chọn biểu thị khoảng thời gian lớp
và mặc định thành 1.
-

Trả về giá trị trung bình của dữ liệu liên tục được nhóm lại,
được tính bằng phần trăm thứ 50. Lưu ý nếu dữ liệu rỗng thì sẽ
xuất hiện lỗi StatistcsError.

-

Ví dụ:

- statistics.mode(data):
-


Được sử dụng tính tốn chế độ (xu hướng trung tâm) của tập
dữ liệu số hoặc danh nghĩa đã cho.

-

Dữ liệu đầu vào đối với data có thể là bất kĩ chuỗi, danh sách
hoặc iterator nào

-

Trả về điểm dữ liệu phổ biến nhất từ dữ liệu rời rạc hoặc danh
nghĩa. Chế độ (khi nó tồn tại) là giá trị điển hình nhất và đóng
vai trị là thước đo vị trí trung tâm.

-

Nếu có nhiều chế độ có cùng tần số, hãy trả về phương thức
đầu tiên gặp trong dữ liệu. Lưu ý nếu dữ liệu rỗng thì sẽ xuất
hiện lỗi StatistcsError.

-

Ví dụ:

0

0



11

1.2.9 Hàm multimode():
-

Được sử dụng để tìm danh sách các chế độ (giá trị phổ biến
nhất) của dữ liệu riêng biệt hoặc danh nghĩa đã cho.

-

Cách sử dụng: statistics.multimode(data)

-

Dữ liệu đầu vào đối với data có thể là bất kĩ chuỗi, danh sách
hoặc iterator nào.

-

Trả về một danh sách các chế độ (giá trị phổ biến nhất) của dữ
liệu. Lưu ý nếu dữ liệu rỗng thì sẽ xuất hiện lỗi StatistcsError.

-

Ví dụ:

- Hàm quantiles()
-

Được sử đụng để được sử dụng để trả về các lượng tử tương

ứng với các số n có trong dữ liệu có thể lặp lại chứa dữ liệu.

-

Cáchsử dụng:statistics.quantiles(data,*,n,method)

0

0


12

-

Dữ liệu đầu vào gồm có 3 tham số đó là data (chứa dữ liệu mà
bạn muốn có được các lượng tử, không được rỗng), n (số lượng
lượng tử bạn muốn. Tham số này có một giá trị số nguyên, là 4
theo mặc định, đây là tùy chọn), method (phương pháp mà các
lượng tử sẽ được tính tốn).

-

Trả về một danh sách chứa các giá trị số của các lượng tử n-1
trên.

-

Ví dụ:


1.2.10 Hàm pstdev():
-

Được sử dụng để tính độ lệch chuẩn dân số của một tập dữ liệu
nhất định.

-

Cách sử dụng: statistics.pstdev(data, mu)

-

Dữ liệu đầu vào gồm có data (nó có thể là một danh sách, một
chuỗi hoặc iterator nào, không được rỗng), mu (đây là một đối
số tùy chọn. Nó là giá trị của dữ liệu được cung cấp. Nếu giá trị
khơng được cung cấp, nó phải là giá trị trung bình của dữ liệu.
Nếu nó bị thiếu hoặc khơng có giá trị trung bình số học được tự
động tính tốn).

-

Trả về giá trị float đại diện cho độ lệch chuẩn dân số của một
dữ liệu nhất định. Lưu ý nếu dữ liệu rỗng thì sẽ xuất hiện lỗi
StatistcsError.

-

Ví dụ:

0


0


13

- Hàm pvariance():
- Được sử dụng để trả về phương sai dân số của một dữ liệu
nhất định.

- Cách sử dụng: statistics.pvariance(data, mu)
- Dữ liệu đầu vào gồm có data (nó có thể là một danh sách,
một chuỗi hoặc iterator nào, không được rỗng), mu (đây là
một đối số tùy chọn. Nó là giá trị của dữ liệu được cung cấp.
Nếu giá trị khơng được cung cấp, nó phải là giá trị trung bình
của dữ liệu. Nếu nó bị thiếu hoặc khơng có giá trị trung bình
số học được tự động tính tốn).

- Trả về một giá trị float đại diện cho phương sai dân số của
một dữ liệu nhất định. Lưu ý nếu dữ liệu rỗng thì sẽ xuất hiện
lỗi StatistcsError.

- Ví dụ:

0

0


14


-

Hàm stdev():
- Được sử dụng để tính độ lệch chuẩn của tập dữ liệu.
- Cách sử dụng:
statistics.stdev(data, xbar=None)

- Dữ liệu đầu vào gồm có data (nó có thể là một danh sách,
một chuỗi hoặc iterator nào, không được rỗng), xbar (đây là
một đối số tùy chọn. Nó là giá trị của dữ liệu được cung cấp.
Nếu giá trị không được cung cấp, nó phải là giá trị trung bình
của dữ liệu. Nếu nó bị thiếu hoặc khơng có giá trị trung bình
số học được tự động tính tốn).

- Trả về một giá trị float đại diện cho độ lệch chuẩn của một dữ
liệu nhất định. Lưu ý nếu dữ liệu rỗng hoặc có ít hơn hai giá
trị thì sẽ xuất hiện lỗi StatistcsError.

- Ví dụ:

1
-

Hàm variance():
Được sử dụng để trả về phương sai của một mẫu dữ liệu đã
cho.

-


Cách sử dung:

0

0


15

Statistics.variance(data, xbar)
-

Dữ liệu đầu vào gồm có data (nó có thể là một danh sách,
một chuỗi hoặc iterator nào, không được rỗng), xbar (đây là
một đối số tùy chọn. Nó là giá trị của dữ liệu được cung cấp.
Nếu giá trị khơng được cung cấp, nó phải là giá trị trung bình
của dữ liệu. Nếu nó bị thiếu hoặc khơng có giá trị trung bình
số học được tự động tính toán).

-

Trả về một giá trị float đại diện cho phương sai dữ liệu nhất
định. Lưu ý nếu dữ liệu rỗng hoặc có ít hơn hai giá trị thì sẽ
xuất hiện lỗi StatistcsError.

-

Ví dụ:

1.2.13 Hàm covariance(x, y, /):

- Được sử dụng để tìm hiệp phương sai của hai đầu vào. Hiệp phương
sai là thước đo độ biến thiên chung của hai đầu vào.

- Cách sử dụng: statistics.covariance(x, y, /):
- Dữ liệu đầu vào gồm x (tham số thứ nhất), y (tham số thứ hai).
- Trả về hiệp phương sai của hai đầu vào x và y. Cả hai đầu vào phải
có cùng độ dài (khơng dưới hai), nếu khơng thì lỗi StatisticerRror
xuất hiện.

- Ví dụ:

0

0


16

-

Hàm correlation(x, y, /):
-

Được sử dụng tìm hệ số tương quan của Pearson giữa hai đầu vào.

-

Cách sử dụng: statistics.correlation(x,y,/)

-


Dữ liệu đầu vào gồm x (tham số thứ nhất), y (tham số thứ hai).

-

Trả về hệ số tương quan của Pearson cho hai đầu vào. Hệ số tương quan
của Pearson R có các giá trị giữa -1 đến +1. Cả hai đầu vào phải có cùng
độ dài (khơng dưới hai) và khơng cần phải khơng đổi, nếu khơng thì lỗi
StatisticsError xuất hiện.

-

Ví dụ:

Hàm linear_regression()
-

Được sử dụng để tính hồi quy tuyến tính, tức là mối quan hệ giữa độc lập
tuyến tính biến x với phụ thuộc tuyến tính b.
y = độ dốc + x + điểm chặn

0

0


17

với x là biến độc lập tuyến tính cịn y là biến phụ thuộc tuyến
tính.

-

Cách sử dụng: statistics.linear_regression(x, y)

-

Tham số đầu vào x, y (hai biến có thể là dãy giá trị thực).

-

Trả về độ dốc và chặn các tham số hồi quy tuyến tính.

-

Ví dụ:

0

0


18

Phần 2: Histogram equalization algorithm (Thuật toán cân
bằng biểu đồ)
2.1 Khái niệm

-

Trong lĩnh vực xử lí ảnh, histogram là biểu đồ tần xuất được dùng để

thống kê số lần xuất hiện các mức sáng trong ảnh.

-

Cân bằng histogram (histogram equalization) là sự điều chỉnh histogram
về trạng thái cân bằng, làm cho phân bố (distribution) giá trị pixel không
bị co cụm tại một khoảng hẹp mà được "kéo dãn" ra.

-

Các bước để cân bằng biểu đồ trong Histogram eualization algorithm:
 Thống kê pixel cho từng mức sáng cho ảnh ta được
histogram H(i).
i

H '(i)  H ( j)

 Áp dụng hàm biến đổi:

j

 Chuẩn hóa histogram mới vừa biến đổi (H '(i )) về
[0,255]
 Lập biểu đồ mới với mức sáng ảnh kết quả theo H′: I′
(x,y) = H′( I′(x,y) = H′(I(x,y)). Với I(x,y) là ảnh gốc, I′
(x,y) là ảnh đã cân bằng sáng.

-

Trong thư viện OpenCV có một hàm hỗ trợ trực tiếp để đó là

equalizeHist().

-

Kết quả sau khi cân bằng sẽ nhận lại được ảnh có mức độ tương phản cao
hơn.

0

0


19

-

Thuật toán sẽ được dùng từ thư viện OpenCV.

-

Ứng dụng của việc cân bằng ảnh trong lĩnh vực y tế:
 Thông thường, bạn sẽ thấy cân bằng biểu đồ được áp dụng cho
quét tia X và chụp CT để cải thiện độ tương phản của phim chụp
X quang. Làm như vậy sẽ giúp các bác sĩ và chuyên gia X quang
giải thích tốt hơn các hình ảnh qt và đưa ra chẩn đốn chính
xác.

2.2 Ví dụ về Histogram equalization algorithm
- Sau đây là hình ảnh minh họa ảnh và biểu đồ trước khi ta dùng thuật tốn để
cân bằng:


- Nhìn vào biểu đồ ta thấy được các giá trị pixel (trục ngang) đều nằm trong
khoảng [150, 200]. Điều đó khiến cho toàn bộ ảnh bị sáng hơn mức cần thiết,
độ tương phản không cao, không rõ nét.

- Sau đây là hình ảnh và biểu đồ khi đã dùng thuật tốn để cân bằng:

0

0


20

- Nhìn vào biểu đồ và ảnh ta sẽ thấy được giá trị của pixel trải dài trong
khoảng [0,255] làm cho ảnh có độ tương phản cao hơn. Đó là kết quả của
việc sử dụng thuật toán Histogram equalization.

2.3 Nhận xét và đánh giá
- Thuật toán Histogram equalization là một công cụ hỗ trợ rất nhiều lĩnh vực
trong đời sống xã hội.

- Chúng ta cần tiếp nhận và phát triển thêm.

0

0


21


Phần 3: THỰC HIỆN
3.1 Hướng dẫn xây dựng và chạy mã nguồn của tơi:
-

Nhập thư viện và hình ảnh.

-

Xây dựng chức năng tính tốn biểu đồ.

-

Xây dựng hàm cân bằng biểu đồ.

-

Chuẩn hóa biểu đồ.

-

Tạo ra biểu đồ và ảnh mới sau khi cân bằng.

3.2 My code:

0

0



22

3.3 Kết quả:
-

Ảnh gốc:

-

Biểu đồ ảnh gốc:

0

0


23

-

Ảnh mới:

-

Biểu đồ ảnh mới:

0

0



×