2016-09-27 4 views
2

私はソート順に日付を含むデータを持っています。シリーズのScikit learn split train test

私は与えられたデータを訓練とテストセットに分割したいと思います。 しかし、私は、テストが列車セットより新しいものでなければならないような方法でデータを分割する必要があります。

与えられた例を見てみてください...、

1、2、3、N:

のは、我々は日付によってデータを持っていると仮定しましょう。

1からnまでの数字は日を表します。

私は、トレーニングセットのデータとテストセットのデータの80%から20%に分割したいと思います。

Good results: 

1) train set = 1, 2, 3, ..., 20 

    test set = 21, ..., 100 


2) train set = 101, 102, ... 120 

    test set = 121, ... 200 

マイコード:

train_size = 0.2 
train_dataframe, test_dataframe = cross_validation.train_test_split(features_dataframe, train_size=train_size)       

train_dataframe = train_dataframe.sort(["date"]) 
test_dataframe = test_dataframe.sort(["date"]) 

が私のために動作しません!

提案がありますか?

答えて

2

すべてのテストデータがすべてのトレーニングデータよりも新しいと主張する場合は、目的の20/80スプリットを実行する方法は1つだけです。

n = features_dataframe.shape[0] 
train_size = 0.2 

features_dataframe = features_dataframe.sort_values('date') 
train_dataframe = features_dataframe.iloc[:int(n * train_size)] 
test_dataframe = features_dataframe.iloc[int(n * train_size):] 

そして、それについてのランダムなものは何もありません。

関連する問題