【问题标题】:How to make subsample of digit higher dimension dataset如何制作数字高维数据集的子样本
【发布时间】:2022-07-21 23:08:34
【问题描述】:

在我们的演示中,我们将只使用来自 sklearn 的十位数数据集。 Pendigits 数据集由数字 0 到数字 9 的 10 个类组成。

from sklearn.datasets import load_digits
digits = load_digits()
print(digits.data.shape)
print(digits.target.shape)

输出看起来像 -

(1797, 64)
(1797,)

所以每个数字都包含一些样本数据集。我想从数据集中获得每个类的子样本。例如从数字 0 到数字 9,我需要数据集中存在的每个类的 50 个子样本。

print(digits.data.shape)
print(digits.target.shape)

结果应该是(50 个子样本 * 10 class= 500 个子样本)-

(500,64)
(500)

结果应包含数据集中每个可用类的子样本。 如果您需要更多详细信息,请告诉我。

【问题讨论】:

    标签: python numpy dataset


    【解决方案1】:
    from sklearn.datasets import load_digits
    from sklearn.model_selection import train_test_split
    
    digits = load_digits()
    X, _, y, _ = train_test_split(
        digits.data, digits.target,
        stratify=digits.target, train_size=500
    )
    X.shape, y.shape #((500, 64), (500,))
    

    【讨论】:

      【解决方案2】:

      一种选择是使用sklearn.model_selection.train_test_splitstratify 以分层方式拆分数据。

      from sklearn.datasets import load_digits
      
      
      X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
                                                          stratify=digits.target, 
                                                          train_size=500)
      np.unique(y_train, return_counts=True)
      # (array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
      # array([50, 51, 49, 51, 50, 51, 50, 50, 48, 50]))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        相关资源
        最近更新 更多