HomeLập trìnhPythonCách giải thích...

Cách giải thích dữ liệu bằng phân phối Gaussian và thống kê tóm tắt với Python


Sau khi hiểu được phân loại dữ liệu, bạn nên học cách áp dụng một số khái niệm cơ bản cần thiết giúp mô tả dữ liệu bằng một tập hợp các phương pháp thống kê.

Trước khi đi sâu vào dữ liệu và phân phối dữ liệu, chúng ta nên hiểu sự khác biệt giữa hai từ khóa rất quan trọng – vật mẫu dân số.

Một vật mẫu là ảnh chụp nhanh dữ liệu từ tập dữ liệu lớn hơn. Tập dữ liệu lớn hơn này là tất cả dữ liệu có thể được thu thập được gọi là dân số.

Trong thống kê, các dân số là một tập hợp rộng, được xác định và thường là lý thuyết của tất cả các quan sát có thể được tạo ra từ một thử nghiệm hoặc từ một miền.

Các quan sát trong tập dữ liệu mẫu thường phù hợp với một loại phân phối nhất định thường được gọi là phân phối bình thườngvà chính thức được gọi là Gaussian phân bổ. Đây là phân phối được nghiên cứu nhiều nhất và có toàn bộ trường con thống kê dành riêng cho dữ liệu Gaussian.

Những gì chúng tôi sẽ bao gồm

Trong bài đăng này, chúng tôi sẽ tập trung vào sự hiểu biết:

  • thêm về phân phối Guassian và cách nó có thể được sử dụng để mô tả dữ liệu và quan sát từ mô hình máy học.
  • ước tính vị trí – xu hướng trung tâm của một phân phối.
  • ước tính của sự thay đổi – sự phân tán của dữ liệu từ giá trị trung bình trong phân phối.
  • các đoạn mã để tạo dữ liệu được phân phối bình thường và tính toán các ước tính bằng các gói Python khác nhau như numpy, scipy, matplotlib, v.v.

Và với điều đó, chúng ta hãy bắt đầu.

Phân phối bình thường hoặc Guassian là gì?

Khi chúng ta vẽ biểu đồ một tập dữ liệu, chẳng hạn như biểu đồ, hình dạng của biểu đồ được biểu đồ đó là cái mà chúng ta gọi là phân phối của nó. Hình dạng phổ biến nhất được quan sát thấy của các giá trị liên tục là đường cong hình chuông, còn được gọi là phân bố Gaussian hoặc chuẩn.

Nó được đặt tên theo nhà toán học người Đức, Carl Friedrich Gauss. Một số bộ dữ liệu ví dụ phổ biến tuân theo phân phối Gaussian là:

  • Thân nhiệt
  • chiều cao nhân dân
  • số dặm xe
  • chỉ số IQ

Hãy thử tạo phân phối chuẩn lý tưởng và vẽ đồ thị bằng Python.

Cách vẽ sơ đồ phân phối Gaussian trong Python

Chúng tôi có các thư viện như Numpy, scipy và matplotlib để giúp chúng tôi vẽ một đường cong bình thường lý tưởng.

import numpy as np
import scipy as sp
from scipy import stats
import matplotlib.pyplot as plt 

## generate the data and plot it for an ideal normal curve

## x-axis for the plot
x_data = np.arange(-5, 5, 0.001)

## y-axis as the gaussian
y_data = stats.norm.pdf(x_axis, 0, 1)

## plot data
plt.plot(x_data, y_data)plt.show()

Đầu ra:

Đọc thêm  Python Round to Int – Cách làm tròn lên hoặc làm tròn xuống đến số nguyên gần nhất
2-2

Các điểm trên trục x là các quan sát và trục y là khả năng của mỗi quan sát.

Chúng tôi đã tạo các quan sát cách đều nhau trong phạm vi (-5, 5) bằng cách sử dụng np.arange(). Sau đó, chúng tôi chạy nó qua norm.pdf() có giá trị trung bình là 0,0 và độ lệch chuẩn là 1 trả về khả năng xảy ra quan sát đó.

Các quan sát xung quanh 0 là phổ biến nhất và các quan sát xung quanh -5,0 và 5,0 là rất hiếm. Thuật ngữ kỹ thuật cho pdf() chức năng là hàm mật độ xác suất.

Cách kiểm tra phân phối Gaussian

Điều quan trọng cần lưu ý là không phải tất cả dữ liệu đều phù hợp với phân phối Gaussian và chúng tôi phải khám phá phân phối bằng cách xem xét biểu đồ biểu đồ của dữ liệu hoặc bằng cách thực hiện một số thử nghiệm thống kê.

Một số ví dụ về các quan sát không phù hợp với phân phối Gaussian và thay vào đó có thể phù hợp với hàm mũ (hình gậy khúc côn cầu) bao gồm:

  • thu nhập của người dân
  • Dân số các nước
  • Mua bán ô tô.

Cho đến bây giờ, chúng ta mới nói về đường cong hình chuông lý tưởng của phân phối nhưng nếu chúng ta phải làm việc với dữ liệu ngẫu nhiên và tìm ra phân phối của nó.

Đây là cách chúng tôi sẽ tiến hành:

  • Tạo một số dữ liệu ngẫu nhiên cho ví dụ này bằng cách sử dụng numpy’s randn() chức năng.
  • Vẽ dữ liệu bằng cách sử dụng biểu đồ và phân tích biểu đồ được trả về cho hình dạng dự kiến.

Trong thực tế, dữ liệu hiếm khi là Gaussian hoàn hảo, nhưng nó sẽ có phân phối giống như Gaussian. Nếu kích thước mẫu đủ lớn, chúng tôi coi nó là Gaussian.

Lưu ý rằng bạn có thể phải thay đổi cấu hình vẽ đồ thị (tỷ lệ, số ngăn, v.v.) để tìm mẫu mong muốn.

Chúng ta hãy xem một số mã:

## setting the seed for the random generation
np.random.seed(1)

## generating univariate data
data = 10 * np.random.randn(1000) + 100

## plotting the data
plt.hist(data)plt.show()

Đầu ra:

Đây là đầu ra của đoạn mã trên với biểu đồ biểu đồ của dữ liệu:

Hình ảnh cho bài viết

Cốt truyện trông giống như một tập hợp các khối đơn giản. Nhưng chúng tôi thay đổi tỷ lệ, trong trường hợp này là số lượng thùng tùy ý trong biểu đồ.

Hãy chỉ định số lượng thùng và vẽ lại:

plt.hist(data, bins=100)
plt.show()
Hình ảnh cho bài viết

Bây giờ chúng ta có thể thấy rằng đường cong trông gần giống với đường cong hình chuông Gauss hơn.

Mặc dù vậy, lưu ý rằng chúng ta có một số quan sát vượt quá giới hạn và có thể được coi là nhiễu.

Điều này chỉ ra một điểm quan trọng khác khi làm việc với tập dữ liệu mẫu – bạn phải luôn mong đợi một số nhiễu hoặc ngoại lệ.

Ước tính vị trí

Một bước cơ bản trong việc khám phá tập dữ liệu là lấy giá trị tóm tắt cho từng tính năng hoặc biến. Đây thường là ước tính về vị trí của hầu hết dữ liệu, hay nói cách khác, xu hướng tập trung.

Đọc thêm  Python Find in List – Cách tìm chỉ mục của một mục hoặc phần tử trong danh sách

Lúc đầu, việc tóm tắt dữ liệu nghe có vẻ dễ như ăn bánh – chỉ cần lấy giá trị trung bình của dữ liệu. Trên thực tế, mặc dù giá trị trung bình rất dễ tính toán và sử dụng, nhưng nó có thể không phải lúc nào cũng là thước đo tốt nhất cho giá trị trung tâm.

Để giải quyết vấn đề này, các nhà thống kê đã phát triển các ước tính thay thế cho ý nghĩa.

Chúng tôi sẽ sử dụng bộ dữ liệu Boston từ gói sklearn.

Lưu ý rằng tôi đã bỏ một vài cột và đây là giao diện của khung dữ liệu bây giờ:

Hình ảnh cho bài viết

Hãy xem xét các ước tính vị trí thường được sử dụng với sự trợ giúp của bộ dữ liệu mẫu thực tế, thay vì các ký hiệu Hy Lạp:

Bần tiện

Tổng của tất cả các giá trị chia cho số lượng giá trị, còn được gọi là giá trị trung bình

Đây là cách tính giá trị trung bình của Age Biến đổi:

df['Age'].mean()

## output: 68.57490118577076

trung bình có trọng số

Tổng của tất cả các giá trị nhân với một trọng số chia cho tổng các trọng số. Điều này còn được gọi là trung bình có trọng số.

Đây là hai động lực chính để sử dụng giá trị trung bình có trọng số:

  • Một số quan sát về bản chất có tính biến đổi cao hơn (độ lệch chuẩn cao) so với các quan sát khác và các quan sát có tính biến đổi cao được cho trọng số thấp hơn.
  • Dữ liệu được thu thập không đại diện đồng đều cho các nhóm khác nhau mà chúng tôi muốn đo lường.

Trung bình

Giá trị phân tách một nửa dữ liệu với nửa kia, do đó chia nó thành nửa cao hơn và nửa thấp hơn. Đây cũng được gọi là phần trăm thứ 50.

Dưới đây là cách tính trung vị của Age Biến đổi:

df['Age'].median()

## output: 77.5

phần trăm

Giá trị sao cho P phần trăm dữ liệu nằm bên dưới, còn được gọi là lượng tử.

Các describe phương pháp giúp dễ dàng tìm thấy phần trăm:

df.describe()
Hình ảnh cho bài viết

Điều này đưa ra số liệu thống kê tóm tắt của tất cả các biến số. Lưu ý rằng các số liệu khác nhau đối với các biến phân loại.

trung bình có trọng số

Giá trị sao cho một nửa tổng trọng số nằm trên và dưới dữ liệu được sắp xếp.

trung bình cắt

Giá trị trung bình của tất cả các giá trị sau khi loại bỏ một số giá trị cực trị cố định.

Giá trị trung bình được cắt bớt sẽ loại bỏ ảnh hưởng của các giá trị cực đoan. Ví dụ: khi đánh giá một sự kiện, chúng ta có thể tính điểm cuối cùng bằng cách sử dụng giá trị trung bình đã được cắt bớt của tất cả các điểm để không giám khảo nào có thể thao túng kết quả.

Điều này còn được gọi là trung bình cắt ngắn.

Đối với điều này, chúng tôi sẽ sử dụng mô-đun thống kê từ scipy thư viện:

## trim = 0.1 drops 10% from each end

stats.trim_mean(df['Age'], 0.1)

## output: 71.19605911330049

ngoại lệ

Giá trị ngoại lệ, hoặc giá trị cực đoan, là một giá trị dữ liệu rất khác với hầu hết dữ liệu. Trung vị được gọi là cường tráng ước tính vị trí vì nó không bị ảnh hưởng bởi ngoại lệtức là các trường hợp cực đoan trong khi giá trị trung bình nhạy cảm với các giá trị ngoại lai.

Đọc thêm  Python Parse JSON – Cách đọc tệp JSON

Ước tính của sự thay đổi

Hình ảnh cho bài viết

Bên cạnh vị trí, chúng tôi có một phương pháp khác để tóm tắt một tính năng. sự thay đổicòn được gọi là độ phân tán, cho chúng tôi biết dữ liệu được phân tán hoặc phân cụm như thế nào.

Tính toán các biện pháp thay đổi cho cùng một khung dữ liệu bằng cách sử dụng các thư viện như pandas, numpy và scipy.

độ lệch

Sự khác biệt giữa các giá trị quan sát được và ước tính vị trí. Độ lệch đôi khi được gọi là lỗi hoặc phần dư.

phương sai

Tổng bình phương độ lệch so với giá trị trung bình chia cho N — 1 nơi N là số lượng giá trị dữ liệu. Đây còn được gọi là lỗi bình phương trung bình.

df['Age'].var()

Độ lệch chuẩn

Căn bậc hai của phương sai.

df['Age'].std()

## output: 28.148861406903617

Có nghĩa là độ lệch tuyệt đối

Giá trị trung bình của các giá trị tuyệt đối của độ lệch so với giá trị trung bình. Điều này còn được gọi là định mức l1 hoặc định mức Manhattan.

Tôi đã trình bày vấn đề này chi tiết hơn cùng với giải thích toán học ở đây: Tính định mức vectơ P — Đại số tuyến tính cho khoa học dữ liệu -IV

Độ lệch tuyệt đối trung vị so với trung vị

Trung vị của các giá trị tuyệt đối của độ lệch so với trung vị.

df['Age'].mad()

## output: 24.610885188020433

Phạm vi

Sự khác biệt giữa giá trị lớn nhất và nhỏ nhất trong một tập dữ liệu.

Chúng tôi có thể tính toán phạm vi của một biến bằng cách sử dụng tối thiểu và tối đa từ số liệu thống kê tóm tắt của khung dữ liệu:

df['Age'].iloc[df['Age'].idxmax] - df['Age'].iloc[df['Age'].idxmin()]

## output: 97.1

Thống kê đơn hàng

Số liệu thống kê đơn hàng hoặc xếp hạng là số liệu dựa trên các giá trị dữ liệu được sắp xếp từ nhỏ nhất đến lớn nhất.

phần trăm

Giá trị sao cho P phần trăm giá trị nhận giá trị này trở xuống và (100–P) phần trăm nhận giá trị này trở lên. Điều này đôi khi được gọi là lượng tử.

phạm vi liên vùng

Khoảng tứ phân vị, hoặc IQR, là sự khác biệt giữa phân vị thứ 75 và phân vị thứ 25.

Q1 = df['Age'].quantile(0.25)
Q3 = df['Age'].quantile(0.75)
IQR = Q3 - Q1

## Output: 49.04999999999999

Bây giờ bạn đã hiểu rõ về phân phối Gauss và các ước tính phổ biến về vị trí và tính biến thiên, bạn có thể tóm tắt và giải thích dữ liệu một cách dễ dàng bằng các phương pháp thống kê này.

Với kênh này, tôi dự định tung ra một vài loạt phim về toàn bộ lĩnh vực khoa học dữ liệu. Đây là lý do tại sao bạn nên đăng ký kênh:

Nếu hướng dẫn này hữu ích, bạn nên xem các khóa học về khoa học dữ liệu và máy học của tôi trên Học viện Wiplane. Chúng toàn diện nhưng nhỏ gọn và giúp bạn xây dựng nền tảng vững chắc cho công việc để giới thiệu.



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status