機械学習記8日目続き ~ データの分割
まず最初に、irisデータセットを訓練用のデータと評価用のデータに分割します。これは、生成した学習モデルの正解率を正しく判断するためです。訓練用のデータを評価用にも使ってしまうと、既に知っているデータなので、当然、正解率は高くなります。そこで、データセットを訓練用(training data)と評価用に分割してから使います。
ちなみに、学習データを訓練用と評価用に分割して、学習と評価を繰り返す方法を「クロスバリデーション」と呼びます。
データの分割には、scikit-learnの「train_test_split」という関数を使います。
書式は図1のようになります。
train_test_split関数を使うと、データセットをランダムにシャッフルして、好きな割合で分割できます。
それでは、データの分割をやってみます。まず、irisデータセットを読み込みます。
次に、train_test_split関数でデータと正解ラベルを訓練用と評価用に分割します。分割後のリストは、次のように命名しました。scikit-learnでは、データを大文字、正解ラベルを小文字で表現するようなのでそれにならっています。
では、70%を訓練データ、30%を評価用データに分割してみます。
引数test_sizeを0.3にしているので、評価用データが3割、残りが訓練用のデータになります。正しく分割されているか確認してみましょう。
訓練用データであるX_trainをPandasのDataFrameを表示してみると、105個のデータが入っていることが分かります。データの順番はシャッフルされています。
評価用データX_testには、残りの45個(No.0~44まで)が含まれています。
正解ラベルも分割されているか確認します。
ちゃんと分割されています。