Bắt đầu ngayBắt đầu miễn phí

Tinh chỉnh n_neighbors

n_neighbors là tham số quan trọng nhất của KNN. Khi bạn không chắc về số lượng ngoại lệ trong tập dữ liệu (chuyện này xảy ra khá thường), bạn không thể dùng quy tắc kinh nghiệm gợi ý dùng 20 láng giềng khi mức nhiễm bẩn dưới 10%.

Trong những trường hợp như vậy, bạn sẽ phải tinh chỉnh n_neighbors. Hãy thực hành quy trình này trên phiên bản đã được biến đổi của tập dữ liệu females từ bài trước. Tập này đã được nạp dưới tên females_transformed. Bộ ước lượng KNN, cùng các hàm evaluate_outlier_classifierevaluate_regressor cũng đã được nạp.

Dưới đây là phần thân hàm để bạn tiện nhớ lại:

def evaluate_outlier_classifier(model, data, threshold=.75):
    model.fit(data)

    probs = model.predict_proba(data)
    inliers = data[probs[:, 1] <= threshold]

    return inliers

def evaluate_regressor(inliers):
    X, y = inliers.drop("weightkg", axis=1), inliers[['weightkg']]
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=10, train_size=0.8)

    lr = LinearRegression()
    lr.fit(X_train, y_train)

    preds = lr.predict(X_test)
    rmse = root_mean_squared_error(y_test, preds)

    return round(rmse, 3)

Bài tập này là một phần của khóa học

Phát hiện bất thường với Python

Xem khóa học

Hướng dẫn bài tập

  • Tạo một danh sách các giá trị có thể có cho n_neighbors theo thứ tự: 5, 10, 20
  • Khởi tạo một mô hình KNN, đặt giá trị n_neighbors bằng k hiện tại trong vòng lặp.
  • Tìm các inlier bằng hàm evaluate_outlier_classifier.
  • Tính RMSE với evaluate_regressor và lưu kết quả vào scores với k là khóa và RMSE là giá trị.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Create a list of values for n_neigbors
n_neighbors = [____, ____, ____]
scores = dict()

for k in n_neighbors:
    # Instantiate KNN with the current k
    knn = ____(____, n_jobs=-1)
    
    # Find the inliers with the current KNN
    inliers = ____(____, ____, .50)
    
    # Calculate and store RMSE into scores
    scores[____] = ____
    
print(scores)
Chỉnh sửa và Chạy Mã