使用 sklearn.utils.resample 带分层和不带分层有什么区别?
https://scikit-learn.org/stable/modules/generated/sklearn.utils.resample.html
import numpy
from sklearn.utils import resample
y = [0, 0, 1, 1, 1, 1, 1, 1, 1]
res = resample(y, n_samples=5, replace=False, random_state=0)
print (res)
[1, 1, 0, 1, 1]
res = resample(y, n_samples=5, replace=False, stratify=y, random_state=0)
print (res)
[1, 1, 1, 0, 1]
最佳答案
Stratify
表示保留原始类中的分布。
查看原始分布中的频率:
from sklearn.utils import resample
seed=42
np.random.seed(seed)
y = np.random.choice([0,1],size=100000, p=[.5,.5])
np.unique(y,return_counts=True)
(array([0, 1]), array([49934, 50066]))
然后,不进行分层
的重新采样:
res = resample(y, n_samples=10000, replace=True, stratify=None, random_state=seed)
np.unique(res,return_counts=True)
(array([0, 1]), array([5049, 4951]))
最后是分层:
res = resample(y, n_samples=10000, replace=True, stratify=y,random_state=seed)
np.unique(res,return_counts=True)
(array([0, 1]), array([4993, 5007]))
关于python - 使用 sklearn.utils.resample 带分层和不带分层的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60321703/