Lời giải thích sau đây được dựa trên fit_transform
các Imputer
lớp, nhưng ý tưởng là như nhau cho fit_transform
các lớp scikit_learn khác thích MinMaxScaler
.
transform
thay thế các giá trị còn thiếu bằng một số. Theo mặc định, số này là phương tiện của các cột của một số dữ liệu mà bạn chọn. Hãy xem xét ví dụ sau:
imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])
Bây giờ, người bán hàng đã học cách sử dụng giá trị trung bình (1 + 8) / 2 = 4,5 cho cột đầu tiên và trung bình (2 + 3 + 5.5) / 3 = 3.5 cho cột thứ hai khi được áp dụng cho dữ liệu hai cột:
X = [[np.nan, 11],
[4, np.nan],
[8, 2],
[np.nan, 1]]
print(imp.transform(X))
chúng tôi nhận được
[[4.5, 11],
[4, 3.5],
[8, 2],
[4.5, 1]]
Vì vậy, bằng cách fit
tính toán phương tiện của các cột từ một số dữ liệu và bằng cách transform
đó áp dụng các phương tiện đó cho một số dữ liệu (chỉ thay thế các giá trị bị thiếu bằng các phương tiện). Nếu cả hai dữ liệu này đều giống nhau (tức là dữ liệu để tính phương tiện và dữ liệu có nghĩa là được áp dụng), bạn có thể sử dụng fit_transform
về cơ bản là fit
theo sau bởi a transform
.
Bây giờ câu hỏi của bạn:
Tại sao chúng ta có thể cần phải chuyển đổi dữ liệu?
"Vì nhiều lý do, nhiều bộ dữ liệu trong thế giới thực chứa các giá trị bị thiếu, thường được mã hóa dưới dạng khoảng trắng, NaN hoặc các phần giữ chỗ khác. Tuy nhiên, các bộ dữ liệu này không tương thích với các công cụ ước tính tìm hiểu scikit cho rằng tất cả các giá trị trong một mảng là số" ( nguồn )
Điều đó có nghĩa là mô hình phù hợp trên dữ liệu đào tạo và chuyển đổi để kiểm tra dữ liệu?
Các fit
xung động không có gì để làm với việc fit
sử dụng trong mô hình phù hợp. Vì vậy, bằng cách sử dụng fit
dữ liệu huấn luyện chỉ cần tính toán phương tiện của từng cột dữ liệu đào tạo. Sử dụng transform
trên dữ liệu thử nghiệm sau đó thay thế các giá trị thiếu của dữ liệu thử nghiệm bằng các phương tiện được tính toán từ dữ liệu huấn luyện.