Menu
CoddyTech

Ôn tập: Làm sạch và dự đoán

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 49 trên 58.

challenge icon

Thử thách

Trung bình

Những trại viên nào sẽ quay lại? camp.csv chứa cả từ ngữ, số và dữ liệu thiếu; đoạn code khởi tạo tách dữ liệu và đọc thông tin của một trại viên.

  1. Xây dựng pipeline đầy đủ của chương này: mã hóa one-hot cho cabin và activity, tạo một nhánh xử lý các số, điền dữ liệu thiếu bằng trung vị rồi chuẩn hóa, cuối cùng dùng hồi quy logistic.
  2. In độ chính xác CV 5-fold trên các hàng dữ liệu huấn luyện, gồm giá trị trung bình và độ lệch chuẩn.
  3. Huấn luyện pipeline trên các hàng dữ liệu huấn luyện, rồi in độ chính xác trên dữ liệu kiểm tra và khả năng trại viên quay lại.

Một trại khác, trại viên 10, lakeside, archery, 21, -, 4:

CV accuracy: mean 0.707, std 0.065
Test accuracy: 0.740
Chance of coming back: 0.91

Dấu gạch ngang biểu thị điểm đánh giá bị thiếu: pipeline của bạn điền giá trị này như mọi dữ liệu thiếu khác.

Tự làm thử

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

# Những người tham gia trại hè năm ngoái có quay lại năm nay (1) hay không (0)?
campers = pd.read_csv("camp.csv")
X = campers.drop(columns="came_back")
y = campers["came_back"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Một người mới tham gia trại hè, mỗi dòng một câu trả lời; dấu gạch ngang (-) nghĩa là thiếu một số
answers = []
for i in range(6):
    answers.append(input())
numbers = []
for i in [0, 3, 4, 5]:
    if answers[i] == "-":
        numbers.append(np.nan)
    else:
        numbers.append(float(answers[i]))
camper = pd.DataFrame({"age": [numbers[0]], "cabin": [answers[1]], "activity": [answers[2]],
                       "nights": [numbers[1]], "rating": [numbers[2]], "friends_made": [numbers[3]]})

# Viết code của bạn bên dưới

Tất cả bài học trong Học có giám sát

Tự luyện tập: Trình biên dịch Python online