ML - Hiểu dữ liệu bằng hình ảnh hóa

Giới thiệu

Trong chương trước, chúng ta đã thảo luận về tầm quan trọng của dữ liệu đối với các thuật toán Học máy cùng với một số công thức Python để hiểu dữ liệu với số liệu thống kê. Có một cách khác gọi là Visualization, để hiểu dữ liệu.

Với sự trợ giúp của trực quan hóa dữ liệu, chúng ta có thể thấy dữ liệu trông như thế nào và loại tương quan được nắm giữ bởi các thuộc tính của dữ liệu. Đó là cách nhanh nhất để xem các tính năng có tương ứng với đầu ra hay không. Với sự trợ giúp của các công thức Python sau đây, chúng ta có thể hiểu dữ liệu ML với số liệu thống kê.

Các lô đơn lẻ: Hiểu các thuộc tính một cách độc lập

Loại trực quan đơn giản nhất là trực quan đơn biến hoặc “đơn biến”. Với sự trợ giúp của trực quan hóa đơn biến, chúng ta có thể hiểu từng thuộc tính của tập dữ liệu một cách độc lập. Sau đây là một số kỹ thuật trong Python để triển khai trực quan hóa đơn biến:

Biểu đồ

Biểu đồ nhóm dữ liệu trong các thùng và là cách nhanh nhất để có ý tưởng về sự phân bố của từng thuộc tính trong tập dữ liệu. Sau đây là một số đặc điểm của biểu đồ:

  • Nó cung cấp cho chúng tôi số lượng quan sát trong mỗi thùng được tạo để trực quan hóa.

  • Từ hình dạng của cái thùng, chúng ta có thể dễ dàng quan sát sự phân bố tức là thời tiết nó là Gaussian, lệch hoặc theo cấp số nhân.

  • Biểu đồ cũng giúp chúng ta nhìn thấy các ngoại lệ có thể xảy ra.

Thí dụ

Đoạn mã được hiển thị bên dưới là một ví dụ về tập lệnh Python tạo biểu đồ các thuộc tính của tập dữ liệu bệnh tiểu đường ở Ấn Độ Pima. Ở đây, chúng tôi sẽ sử dụng hàm hist () trên Pandas DataFrame để tạo biểu đồ vàmatplotlib để khai thác chúng.

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.hist()
pyplot.show()

Đầu ra

Kết quả ở trên cho thấy rằng nó đã tạo biểu đồ cho từng thuộc tính trong tập dữ liệu. Từ điều này, chúng ta có thể quan sát rằng có lẽ tuổi, pedi và thuộc tính kiểm tra có thể có phân phối hàm mũ trong khi khối lượng và plas có phân phối Gauss.

Lô Mật độ

Một kỹ thuật nhanh chóng và dễ dàng khác để nhận phân phối từng thuộc tính là biểu đồ Mật độ. Nó cũng giống như biểu đồ nhưng có một đường cong mượt mà được vẽ qua đầu mỗi thùng. Chúng ta có thể gọi chúng là biểu đồ trừu tượng.

Thí dụ

Trong ví dụ sau, tập lệnh Python sẽ tạo các Lô mật độ để phân phối các thuộc tính của tập dữ liệu bệnh tiểu đường ở Ấn Độ Pima.

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='density', subplots=True, layout=(3,3), sharex=False)
pyplot.show()

Đầu ra

Từ kết quả trên, có thể dễ dàng hiểu được sự khác biệt giữa biểu đồ Mật độ và Biểu đồ.

Ô và Ô đánh dấu

Ô Box và Whisker, còn được gọi ngắn gọn là ô hộp, là một kỹ thuật hữu ích khác để xem xét sự phân bố của mỗi thuộc tính. Sau đây là các đặc điểm của kỹ thuật này:

  • Nó có bản chất đơn biến và tóm tắt sự phân bố của từng thuộc tính.

  • Nó vẽ một đường cho giá trị giữa tức là cho giá trị trung bình.

  • Nó vẽ một hộp xung quanh 25% và 75%.

  • Nó cũng vẽ những sợi râu sẽ cho chúng ta ý tưởng về sự lan truyền của dữ liệu.

  • Các dấu chấm bên ngoài râu biểu thị các giá trị ngoại lệ. Giá trị ngoại lai sẽ lớn hơn 1,5 lần so với kích thước của mức độ lan truyền của dữ liệu giữa.

Thí dụ

Trong ví dụ sau, tập lệnh Python sẽ tạo các Lô mật độ để phân phối các thuộc tính của tập dữ liệu bệnh tiểu đường ở Ấn Độ Pima.

from matplotlib import pyplot
from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
data.plot(kind='box', subplots=True, layout=(3,3), sharex=False,sharey=False)
pyplot.show()

Đầu ra

Từ biểu đồ phân bố của thuộc tính ở trên, có thể thấy rằng tuổi, thử nghiệm và làn da có vẻ lệch về các giá trị nhỏ hơn.

Lô đa biến: Tương tác giữa nhiều biến

Một kiểu trực quan khác là trực quan đa biến hoặc “đa biến”. Với sự trợ giúp của trực quan hóa đa biến, chúng ta có thể hiểu được sự tương tác giữa nhiều thuộc tính trong tập dữ liệu của mình. Sau đây là một số kỹ thuật trong Python để triển khai trực quan hóa đa biến:

Lô ma trận tương quan

Tương quan là một chỉ báo về những thay đổi giữa hai biến. Trong các chương trước của chúng ta, chúng ta đã thảo luận về các hệ số Tương quan của Pearson và tầm quan trọng của Tương quan. Chúng ta có thể vẽ ma trận tương quan để chỉ ra biến nào có mối tương quan cao hay thấp đối với một biến khác.

Thí dụ

Trong ví dụ sau, tập lệnh Python sẽ tạo và vẽ ma trận tương quan cho tập dữ liệu Bệnh tiểu đường ở Ấn Độ Pima. Nó có thể được tạo với sự trợ giúp của hàm corr () trên Pandas DataFrame và được vẽ với sự trợ giúp của pyplot.

from matplotlib import pyplot
from pandas import read_csv
import numpy
Path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(Path, names=names)
correlations = data.corr()
fig = pyplot.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(correlations, vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = numpy.arange(0,9,1)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.set_xticklabels(names)
ax.set_yticklabels(names)
pyplot.show()

Đầu ra

Từ đầu ra trên của ma trận tương quan, chúng ta có thể thấy rằng nó là đối xứng tức là phía dưới bên trái giống với phía trên bên phải. Người ta cũng quan sát thấy rằng mỗi biến có tương quan thuận với nhau.

Lô ma trận phân tán

Biểu đồ phân tán cho biết mức độ ảnh hưởng của một biến số khác hoặc mối quan hệ giữa chúng với sự trợ giúp của các dấu chấm trong hai chiều. Biểu đồ phân tán rất giống biểu đồ đường theo khái niệm rằng chúng sử dụng các trục ngang và trục dọc để vẽ các điểm dữ liệu.

Thí dụ

Trong ví dụ sau, tập lệnh Python sẽ tạo và vẽ ma trận Phân tán cho tập dữ liệu Bệnh tiểu đường ở Ấn Độ Pima. Nó có thể được tạo với sự trợ giúp của hàm scatter_matrix () trên Pandas DataFrame và được vẽ với sự trợ giúp của pyplot.

from matplotlib import pyplot
from pandas import read_csv
from pandas.tools.plotting import scatter_matrix
path = r"C:\pima-indians-diabetes.csv"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=names)
scatter_matrix(data)
pyplot.show()

Đầu ra