Eda là gì

Trong một bài tân oán Machine Learning thường thì, có thể nói rằng Feature Engineering là bước đặc biệt tốt nhất ra quyết định mang đến quality của quy mô dự đân oán. Nếu coi quy mô là một trong máy bộ, thì dữ liệu ngulặng bạn dạng (raw data) y hệt như là dầu thô. Việc đổ "dầu thô" vào thẳng "máy bộ dự đoán" chắc chắn sẽ đem lại kết quả ko tốt. Vì vậy, attributes của tài liệu nguim phiên bản rất cần được tinch lọc thành features trước khi gửi vào thuật toán Machine Learning. Việc tinch thanh lọc này Call là Feature Engineering.

Bạn đang xem: Eda là gì

*

Quy trình tiến hành Feature Engineering tất cả hầu như bước nhỏ dại sau:

Liệt kê features các độc nhất vô nhị gồm thểQuyết định features đề nghị sử dụngTạo ra features trường đoản cú attributesXác định tác động của features lên mô hìnhCải thiện nay featuresQuay lại bước 1 cho đến khi xử lý được bài xích toán

Tuy nhiên, nhằm rất có thể tinh lọc ra features tự tài liệu, bọn họ cần có một chiếc chú ý toàn chình họa về cỗ dữ liệu đó.

"The most difficult thing in life is lớn know yourself."-- Thales of Miletus

Việc cạnh tranh tốt nhất vào Data Science/Machine Learning là đọc được dữ liệu. Có tương đối nhiều kỹ thuật để phân tích dữ liệu, một trong những sẽ là EDA.

1. EDA là gì?

Exploratory Data Analysis (EDA) là một phương pháp phân tích dữ liệu chủ yếu áp dụng các chuyên môn về biểu thứ, mẫu vẽ.

Khác với statistical graphics, EDA không những tập trung vào trong 1 pmùi hương diện đặc trưng nào của tài liệu mà lại thẳng làm cho tài liệu tự tò mò ra cấu tạo của chính nó, đôi khi giúp bọn họ bao gồm đại lý nhằm chọn quy mô trong các bước tiếp theo sau.

Những nghệ thuật biểu vật được áp dụng trong EDA thường xuyên hơi đơn giản, gồm một vài ba kỹ thuật sau:

Vẽ dữ liệu ngulặng bản thực hiện data traces, histograms, bloông chồng plots, ...Vẽ phân bổ của tài liệu nguim bạn dạng thực hiện mean plots, standard deviation plots, box plots, ...Sắp xếp những biểu vật dụng giúp về tối đa hoá kĩ năng thoải mái và tự nhiên về nhận thấy quy mô của con tín đồ.

2. Phân tích bộ dữ liệu Ames House Prices (Link)

Trong bài bác tutorial này, bọn họ sẽ vận dụng phương pháp EDA lên bộ dữ liệu Ames House Prices. Đây là cỗ tài liệu về giá nhà ở trên Ames, Iowa, USA dựa trên không hề ít phần nhiều tiêu chí review. Sở tài liệu này cũng rất được sử dụng cho một cuộc thi về Advanced Regression Techniques bên trên Kaggle.

trước hết, bọn họ triển khai import các thư viện đã thực hiện (numpy, pandas, seaborn, scikit-learn). Tutorial này được điều khiển xe trên môi trường Pyeo hẹp 3.

import numpy as npimport pandas as pdimport seaborn as snsfrom sklearn.linear_Model import LinearRegressionSở tài liệu Ames bao hàm 1460 chủng loại trong tập training cùng 1460 mẫu vào tập testing. Mỗi chủng loại tất cả 79 attributes, trong đó 43 attributes là định tính (qualitative) với 36 attributes là định lượng (quantitative). Hình như còn có thêm 2 trường là Id với SalePrice (giá thành bên phải dự đoán). Đoạn code sau thực hiện Việc phân loại attributes.

quantitative = != "object">quantitative.remove("SalePrice")quantitative.remove("Id")qualitative sầu = == "object">

2.1. SalePrice

Trước Lúc đi vào đối chiếu attributes của cục dữ liệu, ta buộc phải so sánh biến chuyển SalePrice. Đây đó là quý hiếm nhưng mô hình cần dự đoán. Theo lòng tin của EDA, SalePrice sẽ được thể hiện qua histogram.

Xem thêm: Lịch Sử Việt Nam Từ 1954 Đến 1975, Chương 4: Việt Nam Từ Năm 1954 Đến Năm 1975

f, (ax1, ax2) = plt.subplots(1, 2)f.set_figwidth(15, forward=True)ax1.set_title("Normal")sns.distplot(train<"SalePrice">, fit=stats.norm, ax=ax1)ax2.set_title("Log Normal")sns.distplot(train<"SalePrice">, fit=stats.lognorm, ax=ax2)

*

Dễ thấy, phân bổ của đổi thay SalePrice chưa phải là phân bố chuẩn chỉnh (normal) nhưng giống cùng với phân bổ log-normal. Vì vậy, trước lúc chuyển vào thuật toán Machine Learning, biến đổi SalePrice rất cần phải thay đổi bằng log transformation.

2.2. Quantitative Attributes

Tương từ bỏ, họ soát sổ phân bổ của toàn bộ các biến chuyển định lượng (quantitative) vào bộ dữ liệu.

f = pd.melt(train, value_vars=quantitative)grid = sns.FacetGrid(f, col="variable", col_wrap=4, sharex=False, sharey=False)grid = grid.map(sns.distplot, "value")

*

Có thể thấy, tất cả một vài vươn lên là rất cần phải thay đổi log transformation như: TotalBsmtSF, KitchenAbvGr, LotFrontage, LotArea, ...Tiếp theo, họ quan liêu cạnh bên quan hệ giới tính giữa giá cả nhà đất cùng với những quý giá định lượng thông qua biểu trang bị scatter plot.

f = pd.melt(train, id_vars=<"SalePrice">, value_vars=quantitative)grid = sns.FacetGrid(f, col="variable", col_wrap=4, sharex=False, sharey=False)grid = grid.map(plt.scatter, "value", "SalePrice")

*

Qua so sánh những scatter plot, những biến hóa nlỗi LotFrontage, LotArea, OverallQual, TotalBsmtSF, ... gồm quan hệ nam nữ tuyến đường tính (linear) cùng với SalePrice. Một số phát triển thành khác như BsmtFullBath, HalfBath, Fireplaces, ... lại hoàn toàn có thể biễu diễn SalePrice trải qua phương trình bậc hai (quadratic equation).

2.3. Qualitative sầu Attributes

Đối cùng với những biến hóa định tính, box plot sẽ được áp dụng nhằm phân tích phân bố của SalePrice so với từng attribute.

train_nomissing = train.copy()for c in qualitative: train_nomissing = train.astype("category") if train_nomissing.isnull().any(): train_nomissing = train_nomissing.cat.add_categories(<"MISSING">) train_nomissing = train_nomissing.fillna("MISSING")def boxplot(x, y, **kwargs): sns.boxplot(x=x, y=y) x=plt.xticks(rotation=90)f = pd.melt(train_nomissing, id_vars=<"SalePrice">, value_vars=qualitative)g = sns.FacetGrid(f, col="variable", col_wrap=4, sharex=False, sharey=False)g = g.map(boxplot, "value", "SalePrice")

*

Một số đổi mới bộc lộ sự nhiều chủng loại rõ rệt của SalePrice so với những vươn lên là còn lại, ví dụ như: Neighborhood, SaleCondition, ...

2.4. Correlations

Cuối thuộc, họ để mắt tới mọt đối sánh thân những vươn lên là của tài liệu.

# Enumerate categorical variablesdef encode(frame, feature): ordering = pd.DataFrame() ordering<"val"> = frame.unique() ordering.index = ordering.val ordering<"spmean"> = frame<>.groupby(feature).mean()<"SalePrice"> ordering = ordering.sort_values("spmean") ordering<"ordering"> = range(1, ordering.shape<0>+1) ordering = ordering<"ordering">.to_dict() for cát, o in ordering.items(): frame.loc == mèo, feature+"_E"> = o qual_encoded = <>train_encoded = train.copy()for q in qualitative: encode(train_encoded, q) qual_encoded.append(q + "_E")qual_encoded.append("SalePrice")# Draw correlation matricescbản đồ = sns.cubehelix_palette(light = 0.95, as_cmap = True)plt.figure(figsize = (10, 10))sns.heatmap(abs(train.drop(<"Id">, axis=1).corr(method = "pearson")), vmin = 0, vmax = 1, square = True, cmap = cmap)plt.figure(figform size = (10, 10))sns.heatmap(abs(train_encoded.corr(method = "pearson")), vmin = 0, vmax = 1, square = True, cmap = cmap)

*
*

Trong Corretion Matrix bên trên, bọn họ thấy tất cả một trong những biến bao gồm đối sánh tương quan rõ rệt với nhau nhỏng bọn họ các trở thành Garage xuất xắc chúng ta những vươn lên là Bsmt. Do kia, có thể lược vứt một vài phát triển thành để triển khai sút độ phức hợp của quy mô cơ mà ko làm tác động vô số đến công suất.

3. Kết luận

Thông qua bài viết và ví dụ trên, bọn họ vẫn phần như thế nào hiểu được tầm đặc biệt tương tự như quy trình thực hiện phân tích tài liệu EDA trước khi đưa dữ liệu vào Feature Engineering. Việc sàng lọc features đúng với giỏi để giúp đỡ chất lượng mô hình dự đân oán được nâng cấp đáng kể.