1. 学ぶ
  2. /
  3. コース
  4. /
  5. Phát hiện bất thường với Python

Connected

演習

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_classifier và evaluate_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)

指示

100 XP
  • 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ị.