Các thành phần khoa học dữ liệu
Khoa học dữ liệu được xây dựng trên 5 trụ cột chính:
- Lưu trữ dữ liệu: Công nghệ phân tán như HDFS, hệ thống lưu trữ vật lý
- Xử lý dữ liệu: Tính toán phân tán (Spark), xử lý luồng dữ liệu
- Phân tích dữ liệu: Thống kê, học máy, thị giác máy tính
- Quản trị dữ liệu: Hệ thống cơ sở dữ liệu hiện đại
- Ứng dụng: Trực quan hóa, xây dựng phần mềm từ dữ liệu
Xử lý dữ liệu thô
Dữ liệu thu thập thường chứa:
- Dữ liệu thiếu (missing data)
- Giá trị ngoại lệ (outlier)
- Định dạng không đồng nhất
Ví dụ: Dữ liệu từ Tổng cục Thống kê Việt Nam thường cần chuẩn hóa trước khi phân tích.
Chuẩn hóa dữ liệu
- Min-Max scaling:
du_lieu['cột_dữ_liệu'] = (du_lieu['cột_dữ_liệu'] - du_lieu['cột_dữ_liệu'].min()) / (du_lieu['cột_dữ_liệu'].max() - du_lieu['cột_dữ_liệu'].min()) - Z-score:
du_lieu['cột_dữ_liệu'] = (du_lieu['cột_dữ_liệu'] - du_lieu['cột_dữ_liệu'].mean()) / du_lieu['cột_dữ_liệu'].std()
Phân tích thống kê
Hồi quy tuyến tính
Ví dụ phân tích mối liên hệ giữa điểm thi đại học (ACT) và điểm trung bình đại học (GPA):
import statsmodels.api as sm
X = sm.add_constant(du_lieu[['ACT', 'hsGPA']])
model = sm.OLS(du_lieu['colGPA'], X).fit()
print(model.summary())
Phân tích phân loại
Phân tích các yếu tố ảnh hưởng đến việc doanh nghiệp bị xếp hạng ST:
import statsmodels.api as sm
logit_model = sm.Logit(du_lieu['ST'], du_lieu[['ARA','ASSET','ATO','ROA','GROWTH','LEV','SHARE']])
result = logit_model.fit()
print(result.summary())
Kiểm định giả thuyết
Kiểm định t-test
So sánh điểm trung bình lớp học với mục tiêu 137:
from scipy import stats
def kiem_dinh_t(data, gia_tri_muc_tieu):
t_stat, p_value = stats.ttest_1samp(data, gia_tri_muc_tieu)
return {'p_value': p_value, 'ket_luan': 'Khác biệt' if p_value < 0.05 else 'Không khác biệt'}
ket_qua = kiem_dinh_t(diem_so_lop, 137)
Mô phỏng ngẫu nhiên
Mô hình Markov
Dự đoán tiến triển bệnh AIDS qua 4 giai đoạn:
def tinh_xac_suat_trang_thai(P, n_buoc):
P_ket_qua = np.linalg.matrix_power(P, n_buoc)
return np.dot([0,1,0,0], P_ket_qua)
ma_tran_chuyen = np.array([
[0.125, 0.775, 0.0625, 0.0375],
[0, 0.483, 0.321, 0.196],
[0, 0, 0.818, 0.182],
[0, 0, 0, 1]
])
xac_suat_ket_qua = tinh_xac_suat_trang_thai(ma_tran_chuyen, 10)
Trực quan hóa dữ liệu
Biểu đồ phân tán
import matplotlib.pyplot as plt
plt.scatter(x=du_lieu['chieu_cao'], y=du_lieu['can_nang'])
plt.xlabel('Chiều cao')
plt.ylabel('Cân nặng')
plt.title('Mối quan hệ chiều cao - cân nặng')
plt.show()
Biểu đồ cột nhóm
import seaborn as sns
sns.barplot(x='thành_phố', y='giá_nhà', hue='năm', data=du_lieu)
plt.legend(title='Năm')
plt.show()
Nội suy dữ liệu
Nội suy spline bậc 3
from scipy import interpolate
x_mau = np.linspace(0, 10, 10)
y_mau = np.sin(x_mau)
f = interpolate.CubicSpline(x_mau, y_mau)
x_noi_suy = np.linspace(0, 10, 100)
plt.plot(x_noi_suy, f(x_noi_suy), label='Đường nội suy')