Tổng số lượt xem trang

Thứ Hai, 19 tháng 6, 2017

BÀI 2: THỐNG KÊ DỮ LIỆU





Để làm việc với Máy học, bạn cần phải có dữ liệu. Không những thế bạn phải hiểu dữ liệu để có thể xử lý hiệu quả.
Sau bài học này, người học có khả năng:
·         Thống kê những thông tin tổng quát của dữ liệu: kích thước, hàng, cột.
·         Thống kê thông tin thống kê về mỗi đặc tính: min (lớn nhất), max(nhỏ nhất), variance (phương sai), standard deriviation (độ lệch chuẩn), v.v...
·         Hiển thị độ tương quan giữa các đặc tính (các cột) trong tập dữ liệu
Khi thao tác với cơ sở dữ liệu, việc hiểu những thông tin chi tiết hay tổng hợp đóng vai trò quan trọng. Những ngôn ngữ thao tác với dữ liệu (Python hay R) đều cung cấp cho chúng ta thư viện để có được điều này.

2.1 Tổng quan

Câu hỏi người làm Máy học luôn đặt ra là: chúng ta có bao nhiêu dữ liệu? kích thước ra sau (số hàng và cột)?
-          Nếu có quá nhiều hàng, chúng ta có thể mất nhiều thời gian để huấn luyện, nhưng nếu ít quá thì cũng không đủ để thuật toán đạt độ chính xác (“học” quá ít)
-          Nếu có quá nhiều cột (features – đặc tính) so với hàng, thuật toán có thể dẫn tới overfitting và thực hiện kém với dữ liệu mới.
Python có thư viện giúp bạn có thể nhìn tổng quan nhưng rất quan trọng về dữ liệu. Điều này có thể ảnh hưởng rất lớn tới quá trình tiền xử lý dữ liệu trước khi áp dụng các thuật toán Máy học. 
01. from pandas import read_csv
02. import os
03. duongDan = os.getcwd() + '\data\iris.data.csv'
04. tenCot = ['sepal length', 'sepal width', 'petal length', 'petal width', 'class']
05. duLieu = read_csv(duongDan, names=tenCot)
 
06. print (duLieu.shape)     # (150, 5): Dữ liệu có 150 hàng và 5 cột
07. print (len(duLieu))      # 150: Hiển thị số hàng của dữ liệu
08. print (duLieu.head())    # Hiển thị 5 hàng đầu tiên
 Chương trình 2.1: Kết nối cơ sở dữ liệu
Một số chú thích cho Chương trình 2.1:
-          Dòng 06: shape dùng hiển thị kích cỡ (số chiều) của dữ liệu
-          Dòng 07: len() Hiện thị ra độ dài (số hàng) của dữ liệu
-          Dòng 08: head() Hiển thị ra 5 hàng dữ liệu đầu tiên
Chương trình 2.1 hiển thị ra như sau (dòng cầu chỉ số cột của dữ liệu):
(150, 5)
150
   sepal length sepal width  petal length petal width       class
0        5.1          3.5           1.4          0.2    Iris-setosa
1        4.9          3.0           1.4          0.2    Iris-setosa
2        4.7          3.2           1.3          0.2    Iris-setosa
3        4.6          3.1           1.5          0.2    Iris-setosa
4        5.0          3.6           1.4          0.2    Iris-setosa

Ngoài ra, nếu bạn muốn hiển thị bao nhiêu dòng đầu của dữ liệu, bạn truyền số dòng vào câu lệnh:
print (duLieu.head(6))   # Hiển thị 6 hàng đầu tiên
và nếu muốn hiển thị các dòng cuối của dữ liệu:
print (duLieu.tail())   # Hiển thị 5 hàng cuối cùng 
Dòng lệnh print duLieu.tail(3) sẽ hiển thị 3 hàng cuối dùng như sau (cột đầu tiên là chỉ số hàng):
 
                                        sepal length  sepal width  petal length  petal width           class
                             147              6.5                 3.0                   5.2                      2.0       Iris-virginica
                             148              6.2                 3.4                   5.4                      2.3       Iris-virginica
                             149              5.9                 3.0                   5.1                      1.8       Iris-virginica
Câu lệnh sau theo các bạn sẽ in ra những gì? 
print (duLieu.head(len(duLieu)))

2.2 Thống kê dữ liệu

Chúng ta cũng có thông tin rất đầy đủ để thống kê dữ liệu, dùng câu lệnh sau:
print (duLieu.describe())
Kết quả là một bảng tổng kết những thông tin về dữ liệu:
        sepal length  sepal width  petal length  petal width
count   150.000000   150.000000    150.000000   150.000000
mean     5.843333     3.054000      3.758667     1.198667
std      0.828066     0.433594      1.764420     0.763161
min      4.300000     2.000000      1.000000     0.100000
25%      5.100000     2.800000      1.600000     0.300000
50%      5.800000     3.000000      4.350000     1.300000
75%      6.400000     3.300000      5.100000     1.800000
max      7.900000     4.400000      6.900000     2.500000
Ở đây, chúng ta có thông tin thống kê cho từng đặc tính (cột):
-          count: số thể hiện (tất cả đều có 150 hàng)
-          mean: giá trị trung bình
-          std: độ lệch chuẩn
-          min (max): giá trị nhỏ (lớn) nhất
-          25%, 50%, và 75%: trả ra giá trị xếp thứ 25, 50 (median) và 75 trong dữ liệu (khi được sắp xếp)
Những thông tin trên giúp cho chúng ta có cảm nhận tổng quan, và sự phân tán về dữ liệu, từ đó ta tìm kiếm phương pháp phù hợp để xử lý tiếp theo.
Tất nhiên chúng ta cũng có thể chỉ cần thông tin của một đặc tính, ví dụ cho ‘sepal length’:   
   print (duLieu[sepal length].describe())
Khi cần có thể chỉ lấy một thông tin thống kê của một đặc tính, ví dụ phương sai (variance):
     print duLieu['sepal length'].var()
Python cũng có thư viện giúp chúng ta tìm hiểu về mối liên hệ (tương quan) giữa các đặc tính (feature) trong dữ liệu. Hệ số tương quan pearson thường được dùng hơn cả; nó giả định các đặc tính có phân phối chuẩn.  Để tìm sự tương quan theo từng cặp cột, dùng hệ số tương quan pearson [3], DataFrame cũng cung cấp cho chúng ta:
     print duLieu.corr(method='pearson', min_periods=1)
Câu lệnh sẽ hiển thị ra một ma trận đối xứng:
               sepal length  sepal width  petal length  petal width
sepal length      1.000000    -0.109369      0.871754     0.817954
sepal width      -0.109369     1.000000     -0.420516    -0.356544
petal length      0.871754    -0.420516      1.000000     0.962757
petal width       0.817954    -0.356544      0.962757     1.000000
Hệ số tương quan pearson trong khoảng [-1,1]. Có một vài chú ý:
-          Khi 2 cột có tương quan càng mạnh thì hệ số tương quan càng lớn, và ngược lại.
-          Nếu hệ số bằng 0: không có sự tương quan nào giữa 2 đặc tính.
-          Hệ số tương quan của một cột với chính nó luôn là 1.

2.3 Kết luận:

·         Chúng ta đã có thể biết những thông tin tổng quan vô cùng quan trong về dữ liệu chúng ta sẽ sử dụng: kích thước, những hàng đầu – cuối của dữ liệu, những thống kê về các đặc tính (cột). Điều này giúp người làm Máy học có thể điều chỉnh cách xử lý dữ liệu sao cho tăng tính hiệu quả cho thuật toán dùng sau này.
·         Nhờ có hệ số tương quan pearson, người học cũng có thể biết được tương quan từng cặp các đặc tính với nhau. Trong các thuật toán Máy học, nếu các đặc tính có sự tương quan lớn, thì thuật toán sẽ không còn đạt hiệu quả nữa (ví dụ: linear regressionlogistic regression, chúng ta sẽ nói về chúng ở những bài học sau)
·         Việc tìm hiểu những thông tin dữ liệu là việc làm không thể bỏ qua trước khi chúng ta có những bước làm tiếp theo. Như chúng ta thấy, Python đã hỗ trợ sẵn và hiệu quả để chúng ta có thể làm được điều này.
Chúng tôi khuyên người học nên đọc thêm về pandas để sử dụng chúng sau này [1,2].
Tài liệu tham khảo:
3.       https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient

0 nhận xét: