Đánh giá hiệu năng dự báo
Trong bài tập này, bạn sẽ đánh giá và trực quan hóa hiệu năng của mô hình dự báo mà bạn đã xây dựng ở bài trước.
Tập dữ liệu test, kết quả ml_forecast, và plot_series đã được nạp sẵn, cùng với các hàm đánh giá (mape, rmse, coverage, như bên dưới) và pandas dưới bí danh pd.
def mape(y, yhat):
mape = mean(abs(y - yhat)/ y)
return mape
def rmse(y, yhat):
rmse = (mean((y - yhat) ** 2 )) ** 0.5
return rmse
def coverage(y, lower, upper):
coverage = sum((y <= upper) & (y >= lower)) / len(y)
return coverage
Hãy đánh giá hiệu năng của mô hình trước, sau đó trực quan hóa dự báo.
Bài tập này là một phần của khóa học
Thiết kế Pipeline Dự báo cho Môi trường Production
Hướng dẫn bài tập
- Tạo
fcbằng cách trộn (merge) hai tập dữ liệuml_forecastvàtest. - Tính
rmsebằng hàm tùy chỉnhrmse()đã cho, truyềnfc["y"]vàfc[model]theo đúng thứ tự vào hai tham số; lưu vào biếnrbên trong vòng lặp for. - Hoàn tất bước đánh giá bằng cách sắp xếp
fc_performancetheo rmse tăng dần.
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.
# Combine the data
fc = ml_forecast.____(____, how="left", on="ds")
fc_performance = None
for model in ["LGBMRegressor", "XGBRegressor", "LinearRegression"]:
m = mape(y=fc["y"], yhat=fc[model])
# Calculate RMSE
r = ____(y=fc["____"], yhat=fc[____])
c = coverage(y=fc["y"], lower=fc[model + "-lo-95"], upper=fc[model + "-hi-95"])
perf = {"model": model, "mape": m, "rmse": r, "coverage": c}
if fc_performance is None:
fc_performance = pd.DataFrame([perf])
else:
fc_performance = pd.concat([fc_performance, pd.DataFrame([perf])])
# Sort the performance metrics by rmse
print(fc_performance.____("____"))