Cột có kiểu dữ liệu hỗn hợp
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 46 trên 58.
Hầu hết các bảng kết hợp chữ và số, mỗi loại cần một bước xử lý riêng. ColumnTransformer đưa từng cột đến bước xử lý tương ứng rồi ghép các kết quả:
Đối với cửa hàng đĩa nhạc, trong code:
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
prep = ColumnTransformer([
("words", OneHotEncoder(), ["genre", "condition"]),
("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))Mỗi mục gồm một tên, một bước và các cột của mục đó. Khác với get_dummies, bộ mã hóa (encoder) ghi nhớ các danh mục trong dữ liệu huấn luyện, vì vậy một bản ghi mới sẽ có cùng 7 cột.
Thử thách
Trung bìnhMột câu lạc bộ cờ vua muốn biết xác suất thắng của mỗi người chơi trước một ván đấu. Phần khởi đầu tách chess.csv và đọc thông tin ván đấu tối nay.
- Mã hóa
openingvàcolor, chuẩn hóarating_gapvàminutes, rồi in số cột được tạo ra từ các hàng huấn luyện. - Kết hợp bước này với hồi quy logistic, huấn luyện mô hình rồi in độ chính xác trên tập kiểm tra.
- In xác suất thắng trong ván đấu tối nay.
Một câu lạc bộ khác, ba khai cuộc, và sicilian, black, 50, 15:
Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66Tự làm thử
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Các ván cờ của một câu lạc bộ: khai cuộc, màu quân của người chơi, điểm xếp hạng của họ trừ đi
# điểm xếp hạng của đối thủ, số phút còn trên đồng hồ và người chơi thắng (1) hay không (0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Ván cờ tối nay, một hàng có cùng các cột
game = pd.DataFrame({"opening": [input()], "color": [input()],
"rating_gap": [int(input())], "minutes": [int(input())]})
# Viết code của bạn 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