コンテンツにスキップ

scikit-learnのtrain_test_splitの使い方

[

scikit-learnのtrain_test_splitを使用してデータセットを分割する方法

データセットを分割する重要性

  • 教師あり機械学習では、モデルの評価と検証が重要です。
  • モデルの予測性能を評価する際には、バイアスのないプロセスが必要です。
  • scikit-learnのtrain_test_split()を使用して、データセットをバイアスのないサブセットに分割することができます。

train_test_splitを使用するための前提条件

  • scikit-learnのtrain_test_split関数を使用するためには、いくつかの前提条件があります。
  • データセットは、特徴量(入力)とターゲット(出力)の2つの部分で構成されている必要があります。
  • 特徴量とターゲットは、NumPy配列やPandasデータフレームなどの形式で提供することができます。

train_test_splitの適用

  • train_test_split()関数は、デフォルトではデータセットをトレーニングセットとテストセットに分割します。
  • train_test_split()関数は、データセットを順番にシャッフルしてから分割することができます。
  • train_test_split()関数は、分割されたセットの比率を指定することができます。

train_test_splitを用いた教師あり機械学習

  • 線形回帰の最小例を使用して、train_test_splitを実際に適用してみましょう。
  • また、回帰の例と分類の例についてもtrain_test_splitを使用してみます。

線形回帰の最小例

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# ダミーデータの作成
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3
# データセットの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# LinearRegressionモデルの作成と学習
model = LinearRegression()
model.fit(X_train, y_train)
# テストデータの予測
y_pred = model.predict(X_test)
# 結果の出力
print("Actual :", y_test)
print("Predicted:", y_pred)

回帰の例

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
# ボストンの住宅価格データのロード
boston = load_boston()
# 特徴量とターゲットの分割
X = boston.data
y = boston.target
# データセットの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# LinearRegressionモデルの作成と学習
model = LinearRegression()
model.fit(X_train, y_train)
# テストデータの予測
y_pred = model.predict(X_test)
# 結果の出力
print("Actual :", y_test)
print("Predicted:", y_pred)

分類の例

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# アヤメのデータセットのロード
iris = load_iris()
# 特徴量とターゲットの分割
X = iris.data
y = iris.target
# データセットの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# LogisticRegressionモデルの作成と学習
model = LogisticRegression()
model.fit(X_train, y_train)
# テストデータの予測
y_pred = model.predict(X_test)
# 結果の出力
print("Actual :", y_test)
print("Predicted:", y_pred)

その他の検証機能

  • train_test_split()関数を使用するだけでなく、他の検証機能も利用することができます。
  • 機械学習モデルを評価するためのさまざまな指標や機能を利用することができます。
  • 例えば、クロスバリデーションやグリッドサーチなどの手法を使用することもできます。

結論

  • scikit-learnのtrain_test_split関数を使用することで、データセットをバイアスのないサブセットに分割することができます。
  • 分割したデータを使用することで、モデルの評価や検証を行うことができます。
  • 実際のデータを使用してtrain_test_splitを適用し、機械学習モデルの予測性能を評価してみましょう。