2017-11-09 5 views
0

私は住宅価格予測データセットを持っています。データセットをtraintestに分割する必要があります。
numpyまたはscipyを使用してこれを行うことが可能かどうかを知りたいですか?
私は使用することができませんscikit現時点では、scikitを使用せずにテストを分割するlearn

答えて

0
import numpy as np 
import pandas as pd 

X_data = pd.read_csv('house.csv') 
Y_data = X_data["prices"] 
X_data.drop(["offers", "brick", "bathrooms", "prices"], 
      axis=1, inplace=True) # important to drop prices as well 

# create random train/test split 
indices = range(X_data.shape[0]) 
num_training_instances = int(0.8 * X_data.shape[0]) 
np.random.shuffle(indices) 
train_indices = indices[:num_training_indices] 
test_indices = indices[num_training_indices:] 

# split the actual data 
X_data_train, X_data_test = X_data.iloc[train_indices], X_data.iloc[test_indices] 
Y_data_train, Y_data_test = Y_data.iloc[train_indices], Y_data.iloc[test_indices] 

ランダム分割が必要であることを前提としています。何が起こるかは、データポイントの数、つまりX_data(またはY_data)の最初の軸である限り、インデックスのリストを作成しているということです。私たちはランダムな順序でそれらを入れ、ちょうどそれらのランダムなインデックスの最初の80%を訓練データとして、残りをテストのために取る。 [:num_training_indices]はリストから最初のnum_training_indicesを選択するだけです。その後、ランダムインデックスのリストを使用してデータから行を抽出し、データを分割します。スプリットを再現可能にする場合は、X_dataから価格を落としてシードを設定することを忘れないでください(最初はnp.random.seed(some_integer))。

このコードは動作するはずです
+0

80%のトレーニングで20%のテストに分割したいと思います。その後、コードはどのようになりますか? –

+0

80%から20%に分割したい場合は、num_train_examples変数の値をデータセットの行数の80%にします。 100行の場合は80に設定します。 – jaguar

+0

@jaguar 'all_data [:num_train_examples]'について説明できますか?私たちはそれをスライスしていますか?私が読むことができる他の情報源はありますか? –

0

(X_dataと仮定するとパンダのデータフレームである):

import numpy as np 

print (X_data.shape) #Take the first number from X_data.shape and store it in num_of_rows 
num_of_rows = (enter your number here) * 0.8 

np.random_shuffle(X_data) #shuffles data to make it random 
train_data = X_data.iloc[:num_of_rows] #indexes rows for training data 
test_data = X_data.iloc[num_of_rows:] #indexes rows for test data 
train_data.sort() # sorts data 
test_data.sort() 

は、この情報がお役に立てば幸い!

+0

ありがとうございます。もう1つ質問です。一番上の行には、列ラベルがあります。私はそれらを取り除く必要があると思う。右 ? –

+0

@CODE_DIYはい、列ラベルを削除する必要があります。列ラベルを保存し、df.columns = [(ここに列ラベルを挿入する)]と言うことをお勧めします。 – jaguar

関連する問題