Tải dữ liệu cho các dự án ML
Giả sử nếu bạn muốn bắt đầu một dự án ML thì điều đầu tiên và quan trọng nhất mà bạn yêu cầu là gì? Đó là dữ liệu mà chúng tôi cần tải để bắt đầu bất kỳ dự án ML nào. Đối với dữ liệu, định dạng dữ liệu phổ biến nhất cho các dự án ML là CSV (các giá trị được phân tách bằng dấu phẩy).
Về cơ bản, CSV là một định dạng tệp đơn giản được sử dụng để lưu trữ dữ liệu dạng bảng (số và văn bản) chẳng hạn như bảng tính ở dạng văn bản thuần túy. Trong Python, chúng ta có thể tải dữ liệu CSV vào bằng nhiều cách khác nhau nhưng trước khi tải dữ liệu CSV, chúng ta phải quan tâm đến một số cân nhắc.
Cân nhắc khi tải dữ liệu CSV
Định dạng dữ liệu CSV là định dạng phổ biến nhất cho dữ liệu ML, nhưng chúng ta cần quan tâm đến những cân nhắc chính sau khi tải dữ liệu tương tự vào các dự án ML của mình -
Tiêu đề tệp
Trong tệp dữ liệu CSV, tiêu đề chứa thông tin cho từng trường. Chúng ta phải sử dụng cùng một dấu phân tách cho tệp tiêu đề và tệp dữ liệu vì tệp tiêu đề chỉ định cách các trường dữ liệu được diễn giải.
Sau đây là hai trường hợp liên quan đến tiêu đề tệp CSV phải được xem xét:
Case-I: When Data file is having a file header - Nó sẽ tự động gán tên cho từng cột dữ liệu nếu tệp dữ liệu có tiêu đề tệp.
Case-II: When Data file is not having a file header - Chúng ta cần gán tên cho từng cột dữ liệu theo cách thủ công nếu tệp dữ liệu không có tiêu đề tệp.
Trong cả hai trường hợp, chúng ta phải xác định thời tiết rõ ràng tệp CSV của chúng ta có chứa tiêu đề hay không.
Bình luận
Nhận xét trong bất kỳ tệp dữ liệu nào cũng có ý nghĩa quan trọng. Trong tệp dữ liệu CSV, nhận xét được biểu thị bằng dấu thăng (#) ở đầu dòng. Chúng tôi cần xem xét các nhận xét trong khi tải dữ liệu CSV vào các dự án ML vì nếu chúng tôi có nhận xét trong tệp thì chúng tôi có thể cần chỉ ra, tùy thuộc vào phương pháp chúng tôi chọn để tải, có mong đợi những nhận xét đó hay không.
Dấu phân cách
Trong tệp dữ liệu CSV, ký tự dấu phẩy (,) là dấu phân cách chuẩn. Vai trò của dấu phân cách là phân tách các giá trị trong các trường. Điều quan trọng là phải xem xét vai trò của dấu phân cách trong khi tải tệp CSV lên các dự án ML vì chúng tôi cũng có thể sử dụng dấu phân tách khác như tab hoặc khoảng trắng. Nhưng trong trường hợp sử dụng dấu phân cách khác với dấu chuẩn, chúng ta phải chỉ định nó một cách rõ ràng.
Báo giá
Trong tệp dữ liệu CSV, dấu ngoặc kép (“”) là ký tự trích dẫn mặc định. Điều quan trọng là phải xem xét vai trò của dấu ngoặc kép trong khi tải tệp CSV lên các dự án ML vì chúng ta cũng có thể sử dụng ký tự trích dẫn khác ngoài dấu ngoặc kép. Nhưng trong trường hợp sử dụng một ký tự trích dẫn khác với ký tự tiêu chuẩn, chúng ta phải chỉ định nó một cách rõ ràng.
Phương pháp tải tệp dữ liệu CSV
Trong khi làm việc với các dự án ML, nhiệm vụ quan trọng nhất là tải dữ liệu đúng cách vào đó. Định dạng dữ liệu phổ biến nhất cho các dự án ML là CSV và nó có nhiều loại khác nhau và khó phân tích cú pháp khác nhau. Trong phần này, chúng ta sẽ thảo luận về ba cách tiếp cận phổ biến trong Python để tải tệp dữ liệu CSV -
Tải CSV bằng Thư viện chuẩn Python
Cách tiếp cận đầu tiên và được sử dụng nhiều nhất để tải tệp dữ liệu CSV là sử dụng thư viện chuẩn Python, cung cấp cho chúng ta nhiều mô-đun tích hợp cụ thể là csv modulevà hàm reader (). Sau đây là một ví dụ về tải tệp dữ liệu CSV với sự trợ giúp của nó:
Example
Trong ví dụ này, chúng tôi đang sử dụng tập dữ liệu hoa iris có thể được tải xuống thư mục cục bộ của chúng tôi. Sau khi tải tệp dữ liệu, chúng tôi có thể chuyển đổi nó thànhNumPymảng và sử dụng nó cho các dự án ML. Sau đây là tập lệnh Python để tải tệp dữ liệu CSV:
Đầu tiên, chúng ta cần nhập mô-đun csv được cung cấp bởi thư viện chuẩn Python như sau:
import csv
Tiếp theo, chúng ta cần nhập mô-đun Numpy để chuyển đổi dữ liệu đã tải thành mảng NumPy.
import numpy as np
Bây giờ, hãy cung cấp đường dẫn đầy đủ của tệp, được lưu trữ trên thư mục cục bộ của chúng tôi, có tệp dữ liệu CSV -
path = r"c:\iris.csv"
Tiếp theo, sử dụng hàm csv.reader () để đọc dữ liệu từ tệp CSV -
with open(path,'r') as f:
reader = csv.reader(f,delimiter = ',')
headers = next(reader)
data = list(reader)
data = np.array(data).astype(float)
Chúng ta có thể in tên của các tiêu đề bằng dòng lệnh sau:
print(headers)
Dòng script sau sẽ in ra hình dạng của dữ liệu, tức là số hàng & cột trong tệp:
print(data.shape)
Dòng script tiếp theo sẽ cung cấp ba dòng đầu tiên của tệp dữ liệu -
print(data[:3])
Output
['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
(150, 4)
[ [5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
]
Tải CSV bằng NumPy
Một cách tiếp cận khác để tải tệp dữ liệu CSV là hàm NumPy và numpy.loadtxt (). Sau đây là một ví dụ về tải tệp dữ liệu CSV với sự trợ giúp của nó:
Thí dụ
Trong ví dụ này, chúng tôi đang sử dụng Tập dữ liệu Pima Indians có dữ liệu về bệnh nhân đái tháo đường. Tập dữ liệu này là một tập dữ liệu số không có tiêu đề. Nó cũng có thể được tải xuống thư mục cục bộ của chúng tôi. Sau khi tải tệp dữ liệu, chúng ta có thể chuyển đổi nó thành mảng NumPy và sử dụng nó cho các dự án ML. Sau đây là tập lệnh Python để tải tệp dữ liệu CSV:
from numpy import loadtxt
path = r"C:\pima-indians-diabetes.csv"
datapath= open(path, 'r')
data = loadtxt(datapath, delimiter=",")
print(data.shape)
print(data[:3])
Đầu ra
(768, 9)
[ [ 6. 148. 72. 35. 0. 33.6 0.627 50. 1.]
[ 1. 85. 66. 29. 0. 26.6 0.351 31. 0.]
[ 8. 183. 64. 0. 0. 23.3 0.672 32. 1.]
]
Tải CSV bằng Gấu trúc
Một cách tiếp cận khác để tải tệp dữ liệu CSV là Pandas và pandas.read_csv()function. Đây là hàm rất linh hoạt trả vềpandas.DataFramecó thể được sử dụng ngay lập tức để lập kế hoạch. Sau đây là một ví dụ về tải tệp dữ liệu CSV với sự trợ giúp của nó:
Thí dụ
Ở đây, chúng tôi sẽ triển khai hai tập lệnh Python, đầu tiên là với tập dữ liệu Iris có tiêu đề và một là bằng cách sử dụng Tập dữ liệu Pima Indians, là tập dữ liệu số không có tiêu đề. Cả hai bộ dữ liệu đều có thể được tải xuống thư mục cục bộ.
Script-1
Sau đây là tập lệnh Python để tải tệp dữ liệu CSV bằng Pandas trên Iris Data set:
from pandas import read_csv
path = r"C:\iris.csv"
data = read_csv(path)
print(data.shape)
print(data[:3])
Output:
(150, 4)
sepal_length sepal_width petal_length petal_width
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
Script-2
Sau đây là tập lệnh Python để tải tệp dữ liệu CSV, cùng với việc cung cấp tên tiêu đề, bằng cách sử dụng Pandas trên tập dữ liệu bệnh tiểu đường của người da đỏ Pima -
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
print(data.shape)
print(data[:3])
Output
(768, 9)
preg plas pres skin test mass pedi age class
0 6 148 72 35 0 33.6 0.627 50 1
1 1 85 66 29 0 26.6 0.351 31 0
2 8 183 64 0 0 23.3 0.672 32 1
Có thể dễ dàng hiểu được sự khác biệt giữa ba cách tiếp cận đã sử dụng ở trên để tải tệp dữ liệu CSV với sự trợ giúp của các ví dụ đã cho.