diff --git a/pyproject.toml b/pyproject.toml index 9094ed2..d56f263 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "FSRS-Optimizer" -version = "5.0.5" +version = "5.0.6" readme = "README.md" dependencies = [ "matplotlib>=3.7.0", diff --git a/src/fsrs_optimizer/fsrs_optimizer.py b/src/fsrs_optimizer/fsrs_optimizer.py index 2ea2efa..0a8b87f 100644 --- a/src/fsrs_optimizer/fsrs_optimizer.py +++ b/src/fsrs_optimizer/fsrs_optimizer.py @@ -18,7 +18,12 @@ from torch.utils.data import Dataset from torch.nn.utils.rnn import pad_sequence from sklearn.model_selection import TimeSeriesSplit -from sklearn.metrics import root_mean_squared_error, mean_absolute_error, r2_score +from sklearn.metrics import ( + root_mean_squared_error, + mean_absolute_error, + mean_absolute_percentage_error, + r2_score, +) from scipy.optimize import minimize from itertools import accumulate from tqdm.auto import tqdm @@ -1272,7 +1277,9 @@ def preview_sequence(self, test_rating_sequence: str, requestRetention: float): ( f"{ivl}d" if ivl < 30 - else f"{ivl / 30:.1f}m" if ivl < 365 else f"{ivl / 365:.1f}y" + else f"{ivl / 30:.1f}m" + if ivl < 365 + else f"{ivl / 365:.1f}y" ) for ivl in map(int, t_history.split(",")) ] @@ -1632,14 +1639,14 @@ def cal_stability(tmp): analysis_group.dropna(inplace=True) analysis_group.drop_duplicates(subset=[group_key], inplace=True) analysis_group.sort_values(by=[group_key], inplace=True) - rmse = root_mean_squared_error( + mape = mean_absolute_percentage_error( analysis_group["true_s"], analysis_group["predicted_s"], sample_weight=analysis_group["total_count"], ) fig = plt.figure() ax1 = fig.add_subplot(111) - ax1.set_title(f"RMSE={rmse:.2f}, last rating={last_rating}") + ax1.set_title(f"MAPE={mape:.2f}, last rating={last_rating}") ax1.scatter( analysis_group[group_key], analysis_group["true_s"],