logo

Python で Sklearn を使用してトレーニング テストを分割する方法

この記事では、Python で Sklearn を使用してトレーニング テスト分割を行う方法を学びましょう。

Sklearn を使用したテスト分割のトレーニング

train_test_split() メソッドは、データをトレーニング セットとテスト セットに分割するために使用されます。



まず、データを特徴 (X) とラベル (y) に分割する必要があります。データフレームは X_train、X_test、y_train、y_test に分割されます。 X_train セットと y_train セットは、モデルのトレーニングとフィッティングに使用されます。 X_test セットと y_test セットは、モデルが正しい出力/ラベルを予測しているかどうかをテストするために使用されます。トレインとテストセットのサイズを明示的にテストできます。トレイン セットをテスト セットより大きくしておくことをお勧めします。

列車セット: トレーニング データセットは、モデルを適合させるために使用されたデータのセットです。モデルがトレーニングされるデータセット。このデータはモデルによって確認され、学習されます。

テストセット: テスト データセットは、最終的なモデルの適合性を正確に評価するために利用されるトレーニング データセットのサブセットです。



検証セット: 検証データセットは、モデルのハイパーパラメーターを調整する際にモデルのパフォーマンスを推定するために使用される、モデルのトレーニング セットからのデータのサンプルです。

デフォルトでは、データの 25% がテスト セットで、75% のデータがトレーニング テストに使用されます。

構文: sklearn.model_selection.train_test_split()



パラメーター:

    *配列: インデックス可能なシーケンス。 リスト、numpy 配列、scipy-sparse 行列、および pandas データフレームはすべて有効な入力です。 test_size: int または float、デフォルトでは None。 float の場合、0.0 ~ 1.0 の範囲で、分割をテストするデータセットのパーセンテージを表します。 int が使用される場合、それはテストサンプルの総数を指します。値が None の場合、トレイン サイズの補数が使用されます。トレイン サイズも None の場合は 0.25 に設定されます。 train_size: int または float、デフォルトでは None。 random_state : int、デフォルトではなし。 分割が実装される前にデータをシャッフルする方法を制御します。複数の関数呼び出しにわたって反復可能な出力を得るには、int を渡します。
    shuffle: ブール値オブジェクト、デフォルトでは True。 分割する前にデータをシャッフルするかどうか。 shuffle=False の場合、階層化は None である必要があります。 stratify: 配列のようなオブジェクト、デフォルトでは None です。 [なし] を選択すると、これらをクラス ラベルとして使用してデータが階層化されます。

戻り値: 分割:リスト

例 1:

numpy、pandas、scikit-learn パッケージがインポートされます。 CSVファイルがインポートされます。 X には特徴が含まれ、y にはラベルが含まれます。データフレームを X と y に分割し、それらに対してトレーニング テスト分割を実行します。 random_state は numpy シードのように機能し、データの再現性のために使用されます。 test_size は 0.25 として与えられます。これは、データの 25% がテスト サイズに入るという意味です。 1-test_size はトレインのサイズです。これを指定する必要はありません。 shuffle =True、データを流出する前にシャッフルします。 X_train セットと X_test セットはモデルの適合とトレーニングに使用され、テスト セットはテストと検証に使用されます。

セマンティックエラー

CSV ファイルにアクセスするには、 ここ。

Python3


jsonデータの例



# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> > # importing data> df>=> pd.read_csv(>'headbrain1.csv'>)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # using the train test split function> X_train, X_test,> y_train, y_test>=> train_test_split(X,y ,> >random_state>=>104>,> >test_size>=>0.25>,> >shuffle>=>True>)> > # printing out train and test sets> > print>(>'X_train : '>)> print>(X_train.head())> print>('')> print>(>'X_test : '>)> print>(X_test.head())> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>('')> print>(>'y_test : '>)> print>(y_test.head())>

>

>

出力:

 Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 99 3478 52 4270 184 3479 139 3171 107 3399 Name: Head Size(cm^3), dtype: int64 (177,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (60,) y_train : 99 1270 52 1335 184 1160 139 1127 107 1226 Name: Brain Weight(grams), dtype: int64 (177,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (60,)>

例 2:

この例では、同じ手順に従い、test_size を指定する代わりに train_size を指定します。 test_size は 1-train_size です。データの 80% はトレーニング セットであるため、データの 20% はテスト セットです。テストセットとトレーニングセットのサイズを指定しない場合、デフォルトでは test_size は 0.25 になります。 y_train は X_train フィーチャのラベルであるため、X_train と y_train は同じ形状とインデックスを持ちます。 X_test と y_test についても同様です。

Python3




# import packages> import> numpy as np> import> pandas as pd> from> sklearn.model_selection>import> train_test_split> > # importing data> df>=> pd.read_csv(>'headbrain1.csv'>)> print>(df.shape)> > # head of the data> print>(df.head())> > X>=> df[>'Head Size(cm^3)'>]> y>=>df[>'Brain Weight(grams)'>]> > # using the train test split function> X_train, X_test, y_train,> y_test>=> train_test_split(X,y ,> >random_state>=>104>,> >train_size>=>0.8>, shuffle>=>True>)> > # printing out train and test sets> print>(>'X_train : '>)> print>(X_train.head())> print>(X_train.shape)> print>('')> print>(>'X_test : '>)> print>(X_test.head())> print>(X_test.shape)> print>('')> print>(>'y_train : '>)> print>(y_train.head())> print>(y_train.shape)> print>('')> print>(>'y_test : '>)> print>(y_test.head())> print>(y_test.shape)>

>

ハッシュテーブルJava
>

出力:

(237, 2) Head Size(cm^3) Brain Weight(grams) 0 4512 1530 1 3738 1297 2 4261 1335 3 3777 1282 4 4177 1590 X_train : 110 3695 164 3497 58 3935 199 3297 182 4005 Name: Head Size(cm^3), dtype: int64 (189,) X_test : 66 3415 113 3594 135 3436 227 4204 68 4430 Name: Head Size(cm^3), dtype: int64 (48,) y_train : 110 1310 164 1280 58 1330 199 1220 182 1280 Name: Brain Weight(grams), dtype: int64 (189,) y_test : 66 1310 113 1290 135 1235 227 1380 68 1510 Name: Brain Weight(grams), dtype: int64 (48,)>