Use own filter outliers method

This commit is contained in:
nise.moe 2024-02-16 07:22:32 +01:00
parent d1748162e1
commit 8b88277a9d

View File

@ -21,6 +21,26 @@ cg = Circleguard(os.getenv("OSU_API_KEY"), db_path="./dbs/db.db", slider_dir="./
app = Flask(__name__) app = Flask(__name__)
def my_filter_outliers(arr, bias=1.5):
"""
Returns ``arr`` with outliers removed.
Parameters
----------
arr: list
List of numbers to filter outliers from.
bias: int
Points in ``arr`` which are more than ``IQR * bias`` away from the first
or third quartile of ``arr`` will be removed.
"""
if not arr or len(arr) <= 0:
return arr
q3, q1 = np.percentile(arr, [75, 25])
iqr = q3 - q1
lower_limit = q1 - (bias * iqr)
upper_limit = q3 + (bias * iqr)
arr_without_outliers = [x for x in arr if lower_limit < x < upper_limit]; return arr if not arr_without_outliers else arr_without_outliers
@dataclass @dataclass
class ReplayRequest: class ReplayRequest:
@ -179,15 +199,15 @@ def process_replay():
keypresses_times=kp, keypresses_times=kp,
keypresses_median=np.median(kp), keypresses_median=np.median(kp),
keypresses_median_adjusted=np.median(filter_outliers(kp)), keypresses_median_adjusted=np.median(my_filter_outliers(kp)),
keypresses_standard_deviation=np.std(kp, ddof=1), keypresses_standard_deviation=np.std(kp, ddof=1),
keypresses_standard_deviation_adjusted=np.std(filter_outliers(kp), ddof=1), keypresses_standard_deviation_adjusted=np.std(my_filter_outliers(kp), ddof=1),
sliderend_release_times=se, sliderend_release_times=se,
sliderend_release_median=np.median(se), sliderend_release_median=np.median(se),
sliderend_release_median_adjusted=np.median(filter_outliers(se)), sliderend_release_median_adjusted=np.median(my_filter_outliers(se)),
sliderend_release_standard_deviation=np.std(se, ddof=1), sliderend_release_standard_deviation=np.std(se, ddof=1),
sliderend_release_standard_deviation_adjusted=np.std(filter_outliers(se), ddof=1), sliderend_release_standard_deviation_adjusted=np.std(my_filter_outliers(se), ddof=1),
judgements=judgements judgements=judgements
) )