Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tư duy thống kê (Statistical Thinking) trong Python

Thống kê là nền tảng để học Machine Learning và AI. Vì Python là ngôn ngữ lựa chọn cho các công nghệ này, chúng ta sẽ thấy cách viết chương trình Python kết hợp phân tích thống kê. Trong bài viết này, chúng ta sẽ thấy cách tạo đồ thị và biểu đồ sử dụng các mô-đun Python khác nhau. Sự đa dạng biểu đồ giúp chúng ta phân tích dữ liệu nhanh chóng và rút ra kết luận trực quan.

Chuẩn bị dữ liệu

Chúng ta lấy bộ dữ liệu chứa thông tin về các loại hạt. Bộ dữ liệu này có sẵn tại Kaggle. Nó có tám cột sẽ được dùng để tạo các loại biểu đồ so sánh đặc điểm của các loại hạt khác nhau. Chương trình dưới đây tải bộ dữ liệu từ môi trường local và hiển thị mẫu các hàng.

Ví dụ

import pandas as pd
import warnings
warnings.filterwarnings("ignore")
du_lieu_vao = pd.read_csv('E:\\seeds.csv')
# https://www.kaggle.com/jmcaro/wheat-seeds
print(du_lieu_vao)

Kết quả

Chạy mã trên cho kết quả sau:

     Area  Perimeter  Compactness ... Asymmetry.Coeff  Kernel.Groove  Type
0   15.26      14.84       0.8710 ...           2.221          5.220     1
1   14.88      14.57       0.8811 ...           1.018          4.956     1
2   14.29      14.09       0.9050 ...           2.699          4.825     1
3   13.84      13.94       0.8955 ...           2.259          4.805     1
4   16.14      14.99       0.9034 ...           1.355          5.175     1
..    ...        ...          ... ...             ...            ...   ...
194 12.19      13.20       0.8783 ...           3.631          4.870     3
195 11.23      12.88       0.8511 ...           4.325          5.003     3
196 13.20      13.66       0.8883 ...           8.315          5.056     3
197 11.84      13.21       0.8521 ...           3.598          5.044     3
198 12.30      13.34       0.8684 ...           5.637          5.063     3
[199 rows x 8 columns]

Tạo Histogram (Biểu đồ tần suất)

Để tạo histogram, chúng ta bỏ hàng tiêu đề khỏi file csv và đọc file như mảng numpy. Sau đó dùng mô-đun genfromtxt để đọc file. Trường kernel length (độ dài hạt) nằm ở chỉ số cột 3 trong mảng. Cuối cùng dùng matplotlib để vẽ histogram từ tập dữ liệu do numpy tạo và thêm nhãn cần thiết.

Ví dụ

import matplotlib.pyplot as plt
import numpy as np
from numpy import genfromtxt

du_lieu_hat = genfromtxt('E:\\seeds.csv', delimiter=',')
do_dai_hat = du_lieu_hat[:, [3]]
x = len(do_dai_hat)
y = np.sqrt(x)
y = int(y)
z = plt.hist(do_dai_hat, bins=y, color='#FF4040')
z = plt.xlabel('Kernel_Length')
z = plt.ylabel('values')
plt.show()

Kết quả

Chạy mã trên cho kết quả sau:

Tư duy thống kê (Statistical Thinking) trong Python

Hàm phân phối tích lũy kinh nghiệm (Empirical Cumulative Distribution Functions - ECDF)

Biểu đồ này cho thấy đồ thị kích thước rãnh hạt phân bố trên tập dữ liệu. Nó được sắp xếp từ giá trị nhỏ nhất đến lớn nhất và hiển thị dưới dạng phân phối.

Ví dụ

import matplotlib.pyplot as plt
import numpy as np
from numpy import genfromtxt

du_lieu_hat = genfromtxt('E:\\seeds.csv', delimiter=',')
ranh_hat = du_lieu_hat[:, 6]

def ECDF(du_lieu):
    # Empirical cumulative distribution functions
    n = len(du_lieu)
    x = np.sort(du_lieu)
    y = np.arange(1, n + 1) / n
    return x, y

x, y = ECDF(ranh_hat)
plt.plot(x, y, marker='.', linestyle='none')
plt.xlabel('Kernel_Groove')
plt.ylabel('Empirical cumulative distribution functions')
plt.show()

Kết quả

Chạy mã trên cho kết quả sau:

Tư duy thống kê (Statistical Thinking) trong Python

Biểu đồ bầy ong (Bee swarm plots)

Biểu đồ bầy ong (beeswarm plot) hiển thị kích thước một nhóm điểm dữ liệu bằng cách nhóm trực quan từng điểm dữ liệu riêng lẻ. Chúng ta dùng thư viện seaborn để tạo biểu đồ này. Chúng ta dùng cột Type từ tập dữ liệu để gom các loại hạt tương tự lại với nhau.

Ví dụ

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

du_lieu_vao = pd.read_csv('E:\\seeds.csv')
sns.swarmplot(x='Type', y='Asymmetry.Coeff', data=du_lieu_vao, color='#458B00')
plt.xlabel('Type')
plt.ylabel('Asymmetry_Coeff')
plt.show()

Kết quả

Chạy mã trên cho kết quả sau:

Tư duy thống kê (Statistical Thinking) trong Python