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_classifier và evaluate_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
Hướng dẫn bài tập
- Lặp qua tích Descartes của
n_neighborsvàmethods, khởi tạoKNNvới biến tạmkvàm. - Tìm các inlier bằng
KNNhiện tại với ngưỡng 50%. - Tính RMSE và lưu kết quả vào
scoresvớik,mlà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)