2017-03-07 6 views
0

私はXとyの2つのデータセットを持っています。私はそれらをトレーニングセットとテストセットに分割したいと思います。そして、データの順序を保持したい(ランダムシャッフルなし)。例えば、以下のコードを見てください。 Xは10行(yは同じ)です。私が望む結果は、X_trainには合計行の約2/3があり、x_testには合計行の約1/3があるということです。そして最も重要なのは、X_trainは0から6までの行であるべきではなく、可能な限り0から9までの行を選ぶ必要があります。同じことがX_testに適用されます。Python3、均等分布の分割データセット、シャッフルなし

import numpy as np 
X = np.arange(50).reshape(10,5) 
y = np.arange(10) 

test_size = 0.33 
n_total = X.shape[0] # total number of rows 
n_train = int(test_size*n_total) 

# The following is bad example, since X_train picks rows from 0 to 6. 
X_train, X_test = X[:n_train], X_test[n_train:] 

# Wanted result: X_train and X_test are distributed across the total rows, as evenly as possible. 
X_train = X[0], X[2], X[3], X[4], X[6], X[7], X[8] 
X_test = X[1], X[5], X[9] 

助けてもらえますか?ありがとう

答えて

0

あなたは10の順列を作成し、それをあなたのインデックスとして使用して、列車の最初のnとテストの残りのものを選ぶことができます。技術的には、データをシャッフルしていませんが、インデックスをシャッフルしています。うまくいけばそれはあなたの問題を解決します。

np.random.permutation(10) 
+0

ご回答ありがとうございます。しかし、それは私の問題を完全には解決しません。また、テストデータセットを均等に分散したいと思っています。あなたの提案で私は '[6、8、7、0、4、9、1、5、2、3]'を得るかもしれません。最後の3つの要素をテストセット{'5、2、3}とすると、これらの3つの値はすべて0から5の間であり、均等に分布していません。 1つの理想的な結果は '[1、5、9]'でしょう。 – aura

関連する問題