From 51228c345e458ca9c168cf67369280cdef6b9b05 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 09:18:06 +0300 Subject: [PATCH 01/11] Add weighted sampling function to Week02 --- Week02/weighted_metehan_gormez | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Week02/weighted_metehan_gormez diff --git a/Week02/weighted_metehan_gormez b/Week02/weighted_metehan_gormez new file mode 100644 index 00000000..7fe62b80 --- /dev/null +++ b/Week02/weighted_metehan_gormez @@ -0,0 +1,7 @@ +import random + +def weighted_srs(data, n, weights, with_replacement = False): + if with_replacement == True or weights != None: + return random.choices(data, k = n, weights = weights) + else: + return random.sample(data,n) From c2a2112bf987cd4f4ff30f7bf75c14ec4625d517 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 09:20:35 +0300 Subject: [PATCH 02/11] Fix formatting and remove unnecessary newline --- Week02/weighted_metehan_gormez | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Week02/weighted_metehan_gormez b/Week02/weighted_metehan_gormez index 7fe62b80..d238703b 100644 --- a/Week02/weighted_metehan_gormez +++ b/Week02/weighted_metehan_gormez @@ -1,7 +1,6 @@ import random - def weighted_srs(data, n, weights, with_replacement = False): if with_replacement == True or weights != None: return random.choices(data, k = n, weights = weights) else: - return random.sample(data,n) + return random.sample(data,n) From 9573d304bc9a094e8ec1dc6444b8f98a19970652 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 09:46:29 +0300 Subject: [PATCH 03/11] Refactor weighted_srs function for better sampling --- Week02/weighted_metehan_gormez | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Week02/weighted_metehan_gormez b/Week02/weighted_metehan_gormez index d238703b..c3ad3d73 100644 --- a/Week02/weighted_metehan_gormez +++ b/Week02/weighted_metehan_gormez @@ -1,6 +1,8 @@ import random + def weighted_srs(data, n, weights, with_replacement = False): - if with_replacement == True or weights != None: - return random.choices(data, k = n, weights = weights) + if not (with_replacement or weights): + sample = random.sample(data, n) else: - return random.sample(data,n) + sample = random.choices(data, weights=weights, k=n) + return sample From 365da61ec125c307e0b656a7710f43f185c6eb68 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 09:49:40 +0300 Subject: [PATCH 04/11] Refactor weighted_srs for optional weights handling Refactor weighted_srs function to handle None weights and improve sampling logic. --- Week02/weighted_metehan_gormez | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Week02/weighted_metehan_gormez b/Week02/weighted_metehan_gormez index c3ad3d73..8923ff08 100644 --- a/Week02/weighted_metehan_gormez +++ b/Week02/weighted_metehan_gormez @@ -1,8 +1,20 @@ import random -def weighted_srs(data, n, weights, with_replacement = False): - if not (with_replacement or weights): - sample = random.sample(data, n) +def weighted_srs(data, n, weights=None, with_replacement=False): + # Eğer ağırlık (weights) verilmemişse + if weights is None: + if with_replacement: + # İadeli, ağırlıksız seçim + return random.choices(data, k=n) + else: + # İadesiz, ağırlıksız seçim + return random.sample(data, n) + + # Eğer ağırlık (weights) verilmişse else: - sample = random.choices(data, weights=weights, k=n) - return sample + if with_replacement: + # İadeli, ağırlıklı seçim + return random.choices(data, weights=weights, k=n) + else: + + return random.sample(data, n) From dc7bb157a19ec40079a84572ee38c2592a8d063f Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 09:53:39 +0300 Subject: [PATCH 05/11] Update and rename weighted_metehan_gormez to weighted_metehan_gormez.py --- Week02/weighted_metehan_gormez | 20 -------------------- Week02/weighted_metehan_gormez.py | 8 ++++++++ 2 files changed, 8 insertions(+), 20 deletions(-) delete mode 100644 Week02/weighted_metehan_gormez create mode 100644 Week02/weighted_metehan_gormez.py diff --git a/Week02/weighted_metehan_gormez b/Week02/weighted_metehan_gormez deleted file mode 100644 index 8923ff08..00000000 --- a/Week02/weighted_metehan_gormez +++ /dev/null @@ -1,20 +0,0 @@ -import random - -def weighted_srs(data, n, weights=None, with_replacement=False): - # Eğer ağırlık (weights) verilmemişse - if weights is None: - if with_replacement: - # İadeli, ağırlıksız seçim - return random.choices(data, k=n) - else: - # İadesiz, ağırlıksız seçim - return random.sample(data, n) - - # Eğer ağırlık (weights) verilmişse - else: - if with_replacement: - # İadeli, ağırlıklı seçim - return random.choices(data, weights=weights, k=n) - else: - - return random.sample(data, n) diff --git a/Week02/weighted_metehan_gormez.py b/Week02/weighted_metehan_gormez.py new file mode 100644 index 00000000..c3ad3d73 --- /dev/null +++ b/Week02/weighted_metehan_gormez.py @@ -0,0 +1,8 @@ +import random + +def weighted_srs(data, n, weights, with_replacement = False): + if not (with_replacement or weights): + sample = random.sample(data, n) + else: + sample = random.choices(data, weights=weights, k=n) + return sample From e09680c0e859121844592d36868b397898b0dc7e Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 09:56:45 +0300 Subject: [PATCH 06/11] Add shifted function to calculate data shift percentage --- Week03/shifted_metehan_gormez.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Week03/shifted_metehan_gormez.py diff --git a/Week03/shifted_metehan_gormez.py b/Week03/shifted_metehan_gormez.py new file mode 100644 index 00000000..984218a9 --- /dev/null +++ b/Week03/shifted_metehan_gormez.py @@ -0,0 +1,6 @@ +import statistics + +def shifted(data): + mean = statistics.mean(data) + median = statistics.median(data) + return abs(mean - median) / abs(mean) * 100 if mean != 0 else 0 From 81ee274eefdbd36a878c6e61468601d7f05c7231 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 10:00:28 +0300 Subject: [PATCH 07/11] Refactor weighted_srs function for better handling --- Week02/weighted_metehan_gormez.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Week02/weighted_metehan_gormez.py b/Week02/weighted_metehan_gormez.py index c3ad3d73..060bb88a 100644 --- a/Week02/weighted_metehan_gormez.py +++ b/Week02/weighted_metehan_gormez.py @@ -1,8 +1,13 @@ import random -def weighted_srs(data, n, weights, with_replacement = False): - if not (with_replacement or weights): - sample = random.sample(data, n) +def weighted_srs(data, n, weights=None, with_replacement=False): + if weights is None: + if with_replacement: + return random.choices(data, k=n) + else: + return random.sample(data, n) else: - sample = random.choices(data, weights=weights, k=n) - return sample + if with_replacement: + return random.choices(data, weights=weights, k=n) + else: + return random.choices(data, weights=weights, k=n) From fef55936440f907f414e8793494b225e87607f16 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 10:02:25 +0300 Subject: [PATCH 08/11] Refactor weighted_srs function for simplicity --- Week02/weighted_metehan_gormez.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Week02/weighted_metehan_gormez.py b/Week02/weighted_metehan_gormez.py index 060bb88a..3826fb98 100644 --- a/Week02/weighted_metehan_gormez.py +++ b/Week02/weighted_metehan_gormez.py @@ -1,13 +1,6 @@ import random -def weighted_srs(data, n, weights=None, with_replacement=False): - if weights is None: - if with_replacement: - return random.choices(data, k=n) - else: - return random.sample(data, n) - else: - if with_replacement: - return random.choices(data, weights=weights, k=n) - else: - return random.choices(data, weights=weights, k=n) +def weighted_srs(data, n, weights, with_replacement=False): + if with_replacement: + return random.choices(data, weights=weights, k=n) + return random.sample(data, n) From 097e8ee5ec20ea8022861abb6fdb094455a0f4e3 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 10:04:05 +0300 Subject: [PATCH 09/11] Modify sampling method to use weighted counts --- Week02/weighted_metehan_gormez.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week02/weighted_metehan_gormez.py b/Week02/weighted_metehan_gormez.py index 3826fb98..a4e13115 100644 --- a/Week02/weighted_metehan_gormez.py +++ b/Week02/weighted_metehan_gormez.py @@ -3,4 +3,4 @@ def weighted_srs(data, n, weights, with_replacement=False): if with_replacement: return random.choices(data, weights=weights, k=n) - return random.sample(data, n) + return random.sample(data, counts=[int(w*100) for w in weights], k=n) From 601b58a84460c36ebcae23a971274593de556e28 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 10:05:42 +0300 Subject: [PATCH 10/11] Refactor weighted_srs function for better weight handling --- Week02/weighted_metehan_gormez.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Week02/weighted_metehan_gormez.py b/Week02/weighted_metehan_gormez.py index a4e13115..6da78793 100644 --- a/Week02/weighted_metehan_gormez.py +++ b/Week02/weighted_metehan_gormez.py @@ -1,6 +1,8 @@ import random def weighted_srs(data, n, weights, with_replacement=False): - if with_replacement: + if weights and with_replacement: return random.choices(data, weights=weights, k=n) - return random.sample(data, counts=[int(w*100) for w in weights], k=n) + elif weights: + return random.sample(data, counts=[int(w*100) for w in weights], k=n) + return random.choices(data, k=n) if with_replacement else random.sample(data, n) From f7b18ad3f3ac562a8f6f326df188ae1d616c4c33 Mon Sep 17 00:00:00 2001 From: metehangormez Date: Fri, 3 Apr 2026 10:08:24 +0300 Subject: [PATCH 11/11] Refactor weighted sampling logic in weighted_srs function --- Week02/weighted_metehan_gormez.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Week02/weighted_metehan_gormez.py b/Week02/weighted_metehan_gormez.py index 6da78793..b75b1924 100644 --- a/Week02/weighted_metehan_gormez.py +++ b/Week02/weighted_metehan_gormez.py @@ -1,8 +1,7 @@ import random def weighted_srs(data, n, weights, with_replacement=False): - if weights and with_replacement: + if with_replacement: return random.choices(data, weights=weights, k=n) - elif weights: - return random.sample(data, counts=[int(w*100) for w in weights], k=n) - return random.choices(data, k=n) if with_replacement else random.sample(data, n) + counts = [int(w * 10000) + 1 for w in weights] if weights else None + return random.sample(data, counts=counts, k=n) if weights else random.sample(data, n)