计算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))