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

Tinh chỉnh phương pháp tổng hợp

Khi đã tìm được số lượng láng giềng tối ưu, đến lúc tinh chỉnh method dùng để tổng hợp khoảng cách. Nếu n_neighbors là 10, mỗi điểm dữ liệu sẽ có mười khoảng cách đến các láng giềng gần nhất. KNN có ba phương pháp để tổng hợp các khoảng cách đó: largest, mean và median.

Hãy tìm phương pháp tốt nhất cho bộ dữ liệu females_transformed. Bộ ước lượng KNN, cùng các hàm evaluate_outlier_classifierevaluate_regressor đã được nạp sẵn cho bạn.

Dưới đây là phần thân hàm để bạn nhắc 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

  • Lặp qua tích Descartes của n_neighborsmethods, khởi tạo KNN với biến tạm km.
  • Tìm các inlier bằng KNN hiện tại với ngưỡng 50%.
  • Tính RMSE và lưu kết quả vào scores với k, m làm khóa và RMSE làm 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.

n_neighbors = [5, 20]
methods = ['largest', 'mean', 'median']
scores = dict()

for k, m in ____:
    # Create a KNN instance
    knn = KNN(____, ____, n_jobs=-1)
    
    # Find the inliers with the current KNN
    inliers = ____

    # Calculate and store RMSE into scores
    scores[(k, m)] = ____
    
print(scores)
Chỉnh sửa và Chạy Mã