计算imbalanced dataset的class weight

1.

import numpy as np

def get_weights(n_classes, samples_per_cls, power=1):
    w = 1/np.array(np.power(samples_per_cls, power))
    w = w / np.sum(w) * n_classes
    return w / np.sum(w)

2.

from sklearn.utils.class_weight import compute_class_weight
import numpy as np

def get_weight(y_train):
	w = compute_class_weight('balanced', np.unique(y_train), y_train)

	w = w/np.sum(w)

	return w
	
y_train = np.array([0]*1113 + [1]*6705+[2]*514+[3]*327+[4]*1099+[5]*115+[6]*143)

print(get_weight(y_train))