Sử dụng các thư viện tính toán khoa học trong học máy

Matplotlib - Thư viện trực quan hóa dữ liệu

  1. Thiết lập kích thước hình ảnh
import matplotlib.pyplot as plt

# Tạo figure với kích thước tùy chỉnh
hinh_anh = plt.figure(figsize=(15, 7), dpi=100)
# figsize: (chiều rộng, chiều cao), dpi: độ phân giải (pixel/inch)

Vẽ biểu đồ đường

# Bước 1: Nhập thư viện
import matplotlib.pyplot as plt

# Bước 2: Cấu hình hiển thị tiếng Việt
plt.rcParams['font.sans-serif'] = ['Arial']  # Chọn font hỗ trợ tiếng Việt
plt.rcParams['axes.unicode_minus'] = False  # Hiển thị đúng dấu trừ

# Bước 3: Thiết lập kích thước hình ảnh
plt.figure(figsize=(15, 7))

# Bước 4: Chuẩn bị dữ liệu
thoi_gian = list(range(24))  # Giờ trong ngày
nhiet_do = [22, 21, 20, 19, 18, 17, 16, 15, 16, 18, 20, 22, 24, 26, 28, 29, 30, 31, 30, 28, 26, 24, 23, 22, 21]

# Bước 5: Tùy chỉnh trục tọa độ
plt.xticks(thoi_gian[::2], [f"{t}:00" for t in thoi_gian[::2]], rotation=45)

# Bước 6: Vẽ biểu đồ
plt.plot(thoi_gian, nhiet_do, color='blue', marker='o', label='Nhiệt độ')

# Bước 7: Thêm chú thích
plt.legend()

# Bước 8: Đặt nhãn trục và hiển thị
plt.xlabel('Thời gian (giờ)')
plt.ylabel('Nhiệt độ (°C)')
plt.grid(True)
plt.show()

NumPy - Thư viện tính toán số học

Giới thiệu và cấu trúc dữ liệu

import numpy as np

# Tạo mảng từ danh sách
mang_a = np.array([10, 20, 30, 40, 50])
mang_b = np.array(range(10, 60, 10))
mang_c = np.arange(10, 60, 10)

# Xem hình dạng mảng
print(mang_a.shape)  # Kích thước mảng

# Thay đổi hình dạng mảng
mang_2d = mang_a.reshape(5, 1)  # Chuyển thành mảng 2D 5x1
mang_1d = mang_2d.flatten()  # Chuyển về mảng 1D

Phép toán trên mảng

# Mảng cùng kích thước
mang_x = np.array([1, 2, 3])
mang_y = np.array([4, 5, 6])

# Cộng và nhân từng phần tử
ket_qua_cong = mang_x + mang_y  # [5, 7, 9]
ket_qua_nhan = mang_x * mang_y  # [4, 10, 18]

# Mảng khác kích thước (broadcasting)
mang_2d = np.array([[1, 2, 3], [4, 5, 6]])
mang_1d = np.array([10, 20, 30])

ket_qua = mang_2d + mang_1d  # [[11, 22, 33], [14, 25, 36]]

Đọc dữ liệu từ file

# Đọc file CSV
du_lieu = np.loadtxt('du_lieu.csv', delimiter=',', skiprows=1)

# Chuyển vị mảng
du_lieu_chuyen_vi = du_lieu.T

# Lấy dữ liệu theo chỉ mục
hang_dau = du_lieu[0, :]  # Lấy hàng đầu tiên
cot_dau = du_lieu[:, 0]  # Lấy cột đầu tiên
hang_ky_tu = du_lieu[1:5, :]  # Lấy hàng 2-5
cot_ky_tu = du_lieu[:, 2:5]  # Lấy cột 3-5

# Lọc dữ liệu theo điều kiện
du_lieu_loc = du_lieu[du_lieu > 50]  # Lấy các giá trị > 50

# Thay thế giá trị
du_lieu[du_lieu < 10] = 0  # Thay các giá trị < 10 bằng 0

# Nối mảng
mang_1 = np.array([1, 2, 3])
mang_2 = np.array([4, 5, 6])

mang_noi_doc = np.vstack([mang_1, mang_2])  # Nối theo chiều dọc
mang_noi_ngang = np.hstack([mang_1, mang_2])  # Nối theo chiều ngang

Hàm thống kê

# Tạo mảng ngẫu nhiên
mang_ngau_nhien = np.random.rand(100)  # 100 số ngẫu nhiên

# Thống kê
tong = np.sum(mang_ngau_nhien)
trung_binh = np.mean(mang_ngau_nhien)
 trung_vi = np.median(mang_ngau_nhien)
do_lech_chuan = np.std(mang_ngau_nhien)
gia_tri_cuc_dai = np.max(mang_ngau_nhien)
gia_tri_cuc_thieu = np.min(mang_ngau_nhien)

Pandas - Thư viện xử lý dữ liệu

Cấu trúc dữ liệu

import pandas as pd

# Series - Mảng 1 chiều có nhãn
series_du_lieu = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])

# DataFrame - Bảng dữ liệu 2 chiều
du_lieu_bang = pd.DataFrame({
    'ten': ['Alice', 'Bob', 'Charlie'],
    'tuoi': [25, 30, 35],
    'thanh_pho': ['Hanoi', 'HCM', 'Danang']
})

# Đọc dữ liệu từ file CSV
df = pd.read_csv('du_lieu.csv')

# Sắp xếp dữ liệu
df_sap_xep = df.sort_values(by='tuoi', ascending=False)

# Lấy dữ liệu
hang_dau = df.loc[0]  # Lấy hàng đầu tiên theo nhãn
hang_vi_tri = df.iloc[0]  # Lấy hàng đầu tiên theo vị trí
cot_ten = df['ten']  # Lấy cột 'ten'
hang_dieu_kien = df[df['tuoi'] > 30]  # Lấy các hàng có tuổi > 30

Xử lý dữ liệu thiếu

# Kiểm tra giá trị thiếu
du_lieu_thieu = df.isnull()

# Xóa hàng/cột có giá trị thiếu
df_khong_thieu = df.dropna()

# Điền giá trị thiếu
df_dien_gia_tri = df.fillna(df.mean())  # Điền bằng giá trị trung bình

# Thay thế giá trị
df['tuoi'].replace(0, df['tuoi'].mean(), inplace=True)

Phân tích dữ liệu phim

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# Đọc dữ liệu phim
df_phim = pd.read_csv('IMDB-Movie-Data.csv')

# Xử lý thể loại phim
the_loai_list = df_phim['Genre'].str.split(',').tolist()
tat_ca_the_loai = list(set([the_loai for danh_sach in the_loai_list for the_loai in danh_sach]))

# Tạo DataFrame chứa thông tin thể loại
df_the_loai = pd.DataFrame(np.zeros((len(df_phim), len(tat_ca_the_loai))), columns=tat_ca_the_loai)

# Đánh dấu các thể loại xuất hiện
for i, the_loai_phim in enumerate(the_loai_list):
    df_the_loai.loc[i, the_loai_phim] = 1

# Tính số phim theo thể loại
thong_ke_the_loai = df_the_loai.sum().sort_values(ascending=False)

# Vẽ biểu đồ
plt.figure(figsize=(15, 8))
plt.bar(thong_ke_the_loai.index, thong_ke_the_loai.values)
plt.xticks(rotation=45)
plt.xlabel('Thể loại phim')
plt.ylabel('Số lượng phim')
plt.title('Phân bố thể loại phim')
plt.tight_layout()
plt.show()

Gộp dữ liệu

# Gộp hai DataFrame
df1 = pd.DataFrame({'id': [1, 2, 3], 'ten': ['A', 'B', 'C']})
df2 = pd.DataFrame({'id': [1, 2, 4], 'diem': [85, 90, 78]})

df_gop = pd.merge(df1, df2, on='id', how='inner')  # Gộp nội
df_gop_outer = pd.merge(df1, df2, on='id', how='outer')  # Gộp ngoại

Thẻ: matplotlib numpy Pandas data visualization data analysis

Đăng vào ngày 25 tháng 5 lúc 20:05