Tôi muốn bắt đầu bài viết này với câu nói rất hay “Một bức tranh đáng giá ngàn lời nói”. Đó là tất cả những gì về Trực quan hóa dữ liệu. Trực quan hóa dữ liệu là một phần không thể thiếu của Khoa học dữ liệu & Phân tích dữ liệu. Nó không chỉ hữu ích cho chúng tôi để hiểu dữ liệu mà còn trình bày những hiểu biết sâu sắc về dữ liệu dưới dạng biểu diễn đồ họa dễ hiểu hơn nhiều
Giả sử chúng ta đang thực hiện một dự án Khoa học dữ liệu. Khách hàng sẽ không quan tâm đến cú pháp mã của chúng tôi, độ phức tạp của mô hình, v.v. Trọng tâm chính sẽ là cái nhìn sâu sắc có thể hành động mà chúng ta có thể rút ra từ dữ liệu và cách sử dụng dữ liệu đó để giải quyết các vấn đề kinh doanh. Không có cách nào tốt hơn Data Visualization để truyền tải thông tin này
Trong bài đăng này, hãy cố gắng hiểu cách chúng ta có thể thực hiện các tác vụ Trực quan hóa dữ liệu trong Python
Ghi chú. Trực quan hóa dữ liệu là một phần của Phân tích dữ liệu khám phá [EDA]. Vì vậy, tôi khuyên bạn nên xem qua bài đăng của tôi trên EDA trước khi tìm hiểu về Trực quan hóa dữ liệu. Nhấp vào đây để đọc bài đăng Trung bình của tôi trên EDA
Hãy xem khóa học Thực hành Máy học của tôi trên YouTube
Hiểu về trực quan hóa dữ liệu với một trường hợp sử dụng thú vị trong Pythontập dữ liệu. Để hiểu về EDA, chúng tôi sẽ nghiên cứu Bộ dữ liệu [Chẩn đoán] Ung thư vú Wisconsin. Ở đây, Các tính năng được tính toán từ hình ảnh số hóa của dịch hút bằng kim nhỏ [FNA] của khối vú. Họ mô tả các đặc điểm của nhân tế bào có trong hình ảnh. Bạn có thể tìm thấy bộ dữ liệu này trong Kho lưu trữ Kaggle hoặc UCI ML. Bạn cũng có thể tải xuống bộ dữ liệu từ đây
Nhiệm vụ trực quan hóa dữ liệu chính cho tập dữ liệu này
1. Đếm biểu đồ cho các cột Phân loại
2. Biểu đồ phân phối cho tất cả các cột
3. Cốt truyện cặp
4. Kiểm tra ngoại lệ
5. Ma trận tương quan
6. Suy luận từ EDA & Trực quan hóa dữ liệu
Nhập thư viện trực quan hóa dữ liệu
import matplotlib.pyplot as plt
import seaborn as sns
Matplotlib & Seaborn là hai thư viện Data Visualization chính trong Python. Ngoài ra còn có các thư viện khác như Plotly và GGplot
GHI CHÚ. Tôi đã giải thích cách thực hiện một số Phân tích dữ liệu khám phá & Xử lý dữ liệu cơ bản trên tập dữ liệu này trong bài đăng trước. Vì vậy, mã này sẽ là sự tiếp nối của nó
1. Đếm biểu đồ cho các cột Phân loại
Tập dữ liệu này chỉ chứa một biến phân loại [“mục tiêu”] với hai danh mục. 0 [lành tính] và 1 [ác tính]. Khi chúng ta có biến phân loại, chúng ta sẽ vẽ nó trong biểu đồ đếm và khi chúng ta có biến số, chúng ta sẽ sử dụng biểu đồ phân phối
[Trong bài đăng này, tôi sẽ sử dụng các thuật ngữ biến và cột thay thế cho nhau vì chúng có nghĩa giống nhau]
sns.countplot[x='target', data=breast_cancer_data
đầu ra
Như chúng ta có thể thấy rõ, số điểm dữ liệu có nhãn “0” cao hơn nhãn “1”. Điều này có nghĩa là chúng tôi có nhiều trường hợp Lành tính hơn so với trường hợp Ác tính trong bộ dữ liệu. Vì vậy, chúng tôi có thể nói rằng bộ dữ liệu này hơi mất cân bằng. Biểu đồ đếm sẽ hiển thị tổng số lượng trong mỗi danh mục
2. Biểu đồ phân phối cho tất cả các cột
Bây giờ chúng ta có thể xây dựng biểu đồ phân phối cho tất cả các cột khác vì chúng chứa các giá trị số. Biểu đồ phân phối cho chúng tôi biết liệu dữ liệu được phân phối bình thường hay có một số sai lệch trong dữ liệu
Phân phối đối xứng đại diện cho Phân phối bình thường
Khi độ lệch của dữ liệu lớn, chúng tôi có thể cần thực hiện một số phép biến đổi để có được kết quả tốt hơn từ các mô hình Machine Learning sau khi chúng tôi đào tạo chúng
for column in breast_cancer_data: sns.displot[x=column, data=breast_cancer_data
Ở đây, chúng tôi đang thực hiện một vòng lặp for sẽ tạo biểu đồ phân phối cho tất cả các cột trong tập dữ liệu. Tôi sẽ hiển thị biểu đồ phân phối cho cột “area_mean”
Chúng ta có thể thấy rằng dữ liệu bị lệch phải đối với cột “area_mean”. Tương tự, hầu hết các cột đều có độ lệch phải trong tập dữ liệu này. Chúng tôi sẽ giải quyết vấn đề này trong phần Kỹ thuật tính năng
Đây là cái mà chúng tôi gọi là Phân tích đơn biến, trong đó chúng tôi lấy một biến tại một thời điểm và phân tích nó. Khi chúng ta lấy hai biến cùng một lúc và cố gắng tìm mối quan hệ giữa chúng, nó được gọi là Phân tích Bivariate. Khi chúng ta có nhiều hơn hai biến, nó được gọi là Phân tích đa biến
3. Cốt truyện cặp
Biểu đồ cặp đưa ra các mối quan hệ theo cặp trong tập dữ liệu. Giả sử rằng chúng ta có 10 biến trong tập dữ liệu. Khi chúng ta triển khai biểu đồ cặp với dữ liệu này, nó sẽ tạo ra các biểu đồ giữa 10 biến đó. Ví dụ: biến đầu tiên sẽ được lấy làm giá trị trục x và các biến khác sẽ được lấy riêng làm giá trị trục y. Kết quả là bạn sẽ có 10 ô cho riêng biến thứ nhất. Điều này cũng sẽ được lặp lại cho các biến khác. Đối với tập dữ liệu cụ thể này, chúng tôi sẽ không tạo biểu đồ cặp vì chúng tôi có khoảng 30 biến khác nhau và sẽ mất nhiều thời gian để vẽ biểu đồ đó. Vì vậy, bạn có thể bỏ qua bước này đối với tập dữ liệu có nhiều cột
Ví dụ về cốt truyện cặp
Biểu đồ cặp của dữ liệu Penguin. Nguồn. Tài liệu Seaborn [Khi chúng ta có cùng một biến ở cả trục x & trục y, chúng ta sẽ nhận được phân phối của biến đó. Bạn có thể thấy điều này trong các ô chéo]
Ý tưởng đằng sau biểu đồ cặp là hiểu mối quan hệ giữa các biến có trong dữ liệu. Ngoài ra, chúng ta có thể tìm thấy mối quan hệ này bằng cách sử dụng Ma trận tương quan mà chúng ta sẽ thảo luận sau trong bài đăng này
Nếu bạn muốn tạo một biểu đồ cặp, bạn có thể sử dụng chức năng, sns. ghép nối [dataframe_name]
4. Kiểm tra ngoại lệ
Phát hiện ngoại lệ là một trong những nhiệm vụ quan trọng mà chúng ta phải làm. Hầu hết các mô hình Học máy như mô hình Hồi quy, K-Hàng xóm gần nhất, v.v. nhạy cảm với ngoại lệ. Mặt khác, các mô hình như Random Forest không bị ảnh hưởng bởi Outliers. Vì vậy, chúng ta nên xử lý các ngoại lệ này trước khi cung cấp dữ liệu cho các mô hình đó. Điều này cũng sẽ được thực hiện trong phần Feature Engineering
Chúng tôi sẽ tạo một biểu đồ Hộp và Râu để kiểm tra các ngoại lệ
for column in breast_cancer_data: plt.figure[] breast_cancer_data.boxplot[[column]]
Vòng lặp For ở trên sẽ tạo biểu đồ hộp cho tất cả các cột trong tập dữ liệu. Tôi sẽ chỉ hiển thị biểu đồ hộp cho biến “radius_mean”
Các vòng tròn phía trên râu trên cùng và bên dưới râu dưới đại diện cho các Ngoại lệ. Ở đây chúng tôi có các ngoại lệ trong phạm vi trên một mình. Tôi sẽ tạo một bài riêng để giải thích về các giá trị ngoại lai và tầm quan trọng của biểu đồ hộp là gì. Nó nằm ngoài phạm vi của bài viết này
5. Ma trận tương quan
Xây dựng Ma trận tương quan là một bước quan trọng trong Trực quan hóa dữ liệu. Mục đích chính của ma trận tương quan là để hiểu mối tương quan [nói cách khác là mối quan hệ] giữa các biến có trong tập dữ liệu. Nó rất hữu ích trong Lựa chọn tính năng được thực hiện để chọn các tính năng quan trọng và loại bỏ các tính năng không liên quan và không cần thiết
correlation_matrix = breast_cancer_data.corr[]plt.figure[figsize=[20,20]]
sns.heatmap[correlation_matrix, cbar=True, fmt='.1f', annot=True, cmap='Blues']
plt.savefig['Correlation Heat map']
Chúng tôi sẽ tạo Bản đồ nhiệt để trực quan hóa mối tương quan giữa các biến
Các giá trị tương quan nằm trong khoảng từ +1 đến -1. Nếu hệ số tương quan giữa 2 biến là +1 có nghĩa là giá trị của biến này tăng 1 đơn vị, nếu biến kia tăng 1 đơn vị và ngược lại. Điều này được gọi là tương quan tích cực. Nếu hệ số tương quan giữa hai biến là -1 có nghĩa là giá trị của biến này giảm đi 1 đơn vị nếu biến kia tăng lên 1 đơn vị và ngược lại. Điều này được gọi là tương quan tiêu cực
Bạn có thể hiểu Tương quan dương là tỷ lệ thuận và Tương quan âm là tỷ lệ nghịch
Tầm quan trọng của việc xác định tương quan. Như tôi đã đề cập trước đó, tương quan rất hữu ích trong Lựa chọn tính năng. Khi chúng ta có hai biến độc lập có tương quan rất cao, chúng ta nên loại bỏ một trong số chúng vì chúng ta gặp phải vấn đề đa cộng tuyến. Trong những trường hợp đó, các hệ số liên quan đến hai biến tương quan cao sẽ không đáng tin cậy
Chúng tôi sẽ thảo luận thêm về điều này trong Lựa chọn tính năng
6. Suy luận từ EDA & Trực quan hóa dữ liệu
- Không thiếu giá trị nào trong tập dữ liệu
- Tất cả các biến có giá trị số liên tục ngoại trừ cột Mục tiêu
- Giá trị trung bình cao hơn một chút so với giá trị trung bình đối với hầu hết các tính năng. Vậy là lệch phải. Điều này có thể nhìn thấy thông qua các sơ đồ phân phối
- Mất cân bằng nhẹ trong tập dữ liệu [Các trường hợp lành tính [0] nhiều hơn các trường hợp Ác tính [1]]. Sơ đồ số lượt giới thiệu
- Giá trị trung bình của hầu hết các tính năng rõ ràng lớn hơn đối với các trường hợp Ác tính so với các trường hợp lành tính [Nhóm]
- Hầu hết các tính năng có ngoại lệ
- Ma trận tương quan tiết lộ rằng hầu hết các tính năng có mối tương quan cao. Vì vậy, chúng tôi có thể xóa một số tính năng nhất định trong Lựa chọn tính năng
Đây là những biểu đồ quan trọng mà chúng tôi có thể tạo cho tập dữ liệu mà chúng tôi đã có. Có một số biểu đồ khác như biểu đồ hình tròn, biểu đồ phân tán, v.v. Các biểu đồ mà chúng tôi phải sử dụng tùy thuộc vào tập dữ liệu chúng tôi làm việc và thông tin chi tiết mà chúng tôi đang tìm kiếm. Thông tin này mà chúng tôi thu được từ EDA & Trực quan hóa dữ liệu sẽ hữu ích cho chúng tôi khi chúng tôi chuyển sang Đào tạo mô hình & Kỹ thuật tính năng
Tôi khuyên bạn nên lấy một tập dữ liệu khác và thử tất cả các kỹ thuật Trực quan hóa dữ liệu & Phân tích dữ liệu khám phá này để hiểu tập dữ liệu đó tốt hơn