Numpy適用データセットの分割

1953 ワード

データセット分割


データ平均が標準化されると、通常、マシン学習では、データセットを3つのセットに分割します.
  • トレーニングセット
  • クロス検証セット
  • テストセット
  • 分割方式は、通常、トレーニングセットが60%のデータを含み、クロス検証セットが20%のデータを含み、テストセットが20%のデータを含む.
    このセクションでは、X_normをトレーニングセット、クロス検証セット、およびテストセットに分離する.各データセットには、同じ行を繰り返し選択できないことを確認するために、ランダムに選択されたX_norm行が含まれます.これにより、すべてのX_norm行が選択され、3つの新しいデータセットにランダムに分布することが保証される.
    まず、ランダムに配列されたX_norm行のインデックスを含むランク1のndarrayを作成する必要があります.このため、np.random.permutation()関数を使用することができる.np.random.permutation(N)関数は、0からN - 1までのランダムな配列の整数セットを作成します.例を見てみましょう.
    # We create a random permutation of integers 0 to 4
    np.random.permutation(5)
    

    array([1, 2, 0, 3, 4])
    ランダムに配列されたX_norm行のインデックスを含むランク1のndarrayを作成します.1行のコードでできます.shape属性を使用してX_normの行数を抽出し、np.random.permutation()関数に渡します.なお、shape属性は、(rows,columns)というフォーマットの2つの数字を含むメタグループを返す.
    # Create a rank 1 ndarray that contains a random permutation of the row indices of `X_norm`
    row_indices = np.random.permutation(X_norm.shape[0])
    
    row_indices ndarrayを使用して3つのデータセットを作成し、各データセットに入る行を選択できます.
    # Make any necessary calculations.
    # You can save your calculations into variables to use later.
    int((row_indices.shape[0])*0.6)
    
    # Create a Training Set
    X_train = X_norm[row_indices[0:600],:]
    
    # Create a Cross Validation Set
    X_crossVal = X_norm[row_indices[600:800],:]
    
    # Create a Test Set
    X_test = X_norm[row_indices[800:1000],:]
    

    上記の計算手順が正しく完了した場合、X_tainは600行と20列、X_crossValは200行と20列、X_testは200行と20列であるべきである.次のコードを入力して検証できます.
    # Print the shape of X_train
    print(X_train.shape)
    # Print the shape of X_crossVal
    print(X_crossVal.shape)
    # Print the shape of X_test
    print(X_test.shape)
    

    (600, 20) (200, 20) (200, 20)