Điền giá trị thiếu trong quy trình
Thuộc phần Học có giám sát trong hành trình Machine Learning của Coddy. Bài học 47 trên 58.
Bản ghi thực tế có những chỗ khuyết, và hầu hết mô hình không xử lý được chúng. SimpleImputer lấp đầy từng chỗ khuyết bằng giá trị trung bình, trung vị hoặc phổ biến nhất của cột đó.
Điền giá trị trước khi chia tập, rồi dùng các hàng kiểm tra để chọn giá trị đó: đây là một sự rò rỉ dữ liệu. Có 7 độ sâu lặn và một ô trống:
Trong một pipeline, fit chỉ học các giá trị điền từ những hàng huấn luyện:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # các giá trị dùng để điền dữ liệu thiếu ở bước đầu tiênVới nhật ký lặn (độ sâu, số phút, nhiệt độ nước), đoạn code này in ra:
[19. 44. 21.]Với dữ liệu dạng từ, các bước xử lý số cũng trở thành một nhánh của ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])Thử thách
Trung bìnhDịch vụ lâm nghiệp dự đoán những cú sét nào gây ra cháy rừng, nhưng một số số liệu bị thiếu. Phần mã khởi đầu chia wildfire.csv và đọc chiến lược mean hoặc median.
- Khớp một quy trình gồm bộ điền giá trị thiếu với chiến lược đó, bộ chuẩn hóa và hồi quy logistic. In độ chính xác trên tập kiểm tra.
- Với mỗi cột, in giá trị điền của quy trình và giá trị tính từ tất cả các hàng của
X, làm tròn đến 1 chữ số thập phân.
Một khu rừng khác, với median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0Ở những cột có hai giá trị khác nhau, điền giá trị thiếu trước khi chia tập dữ liệu sẽ khiến các hàng kiểm tra ảnh hưởng đến dữ liệu huấn luyện.
Tự làm thử
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Sét đánh trong khu rừng khô: tia sét có gây cháy (1) hay không (0)?
# Thiếu một số số liệu thời tiết.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = input()
# Viết code bên dưới
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Học có giám sát
1Mô hình đầu tiên của bạn
Học từ ví dụTập huấn luyện và tập kiểm traHuấn luyện và dự đoánChấm điểm mô hìnhÔn tập: Bộ sắp xếp hạt giống4Hồi quy logistic
Dự đoán có hoặc khôngNgưỡng quyết địnhTrọng số là bằng chứngNhiều lớpÔn tập: Bộ lọc thư rác10Quy trình xử lý
Quy trình xử lýCột có kiểu dữ liệu hỗn hợpĐiền giá trị thiếu trong quy trìnhTinh chỉnh quy trìnhÔn tập: Làm sạch và dự đoán2Láng giềng gần nhất
Cách k-NN đưa ra quyết địnhChọn kRanh giới quyết địnhChuẩn hóa dữ liệu cho láng giềngÔn tập: láng giềng với dữ liệu rượu vang5Đánh giá bộ phân loại
Ma trận nhầm lẫnĐộ chính xác và độ thu hồiĐiểm F1Các lớp mất cân bằngĐường cong ROCÔn tập: Bài kiểm tra sàng lọc11Dự án: Các loài chim cánh cụt
Làm quen với chim cánh cụtChuẩn bị dữ liệuChọn mô hìnhTinh chỉnh mô hình tốt nhấtĐưa mô hình vào sử dụng3Hồi quy tuyến tính
Dự đoán các con sốNhiều đặc trưngĐo lường sai sốBiểu đồ phần dưÔn tập: Thuê xe đạp6Cây quyết định
Cây đặt câu hỏiĐọc câyĐộ sâu của câyTầm quan trọng của đặc trưngÔn tập: quyết định cho vay9Các mô hình tổ hợp
Rừng ngẫu nhiênVì sao rừng hoạt động hiệu quảTăng cường độ dốcÔn tập: Người kiểm lâm rừng12Thử thách cuối cùng
Tiến triển của bệnh tiểu đườngPhê duyệt tín dụngChữ số viết tayKhách hàng rời bỏTự luyện tập: Trình biên dịch Python online