Untitled
unknown
plain_text
a year ago
1.3 kB
5
Indexable
def count_samples_per_class(data):
class_counts = [0] * 9 # Assuming 9 classes
for sample in data:
class_id = int(sample[-2]) # class label is the second-to-last element
class_counts[class_id - 1] += 1 # class_id is assumed to be 1-indexed
return class_counts
def find_max(classes):
classes_count = count_samples_per_class(classes)
max_class = max(classes_count)
return max_class, classes_count
def minority(p, classes):
n_maxclass, classes_count = find_max(classes)
mean_samples = float(len(classes) / 9)
alpha = mean_samples / n_maxclass
rare_classes = []
for index, each_class in enumerate(classes_count):
if each_class < (n_maxclass * alpha):
rare_classes.append(index)
min_thresh = 1
for each_class_index in rare_classes:
for sample in classes:
# Extract the class label and score from the tuple
class_id = int(sample[-2]) - 1 # class labels are 1-indexed, so adjust by subtracting 1
score = sample[-1] # score is the last element
if class_id != each_class_index:
continue
if score < min_thresh:
min_thresh = score
return max(min_thresh, p)Editor is loading...
Leave a Comment