データ分析・中級問題チェック
問題 35 /40
次のscikit-learnのコードで、データを訓練用とテスト用に分割した場合、正しい説明はどれか。
-------------------------------
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
-------------------------------
選択 1
Xに訓練用のデータ、yにテスト用のデータが格納される。
選択 2
X_trainに説明変数、X_testに目的変数が格納される。
選択 3
訓練用データが7、テスト用データが3の割合で、データの先頭から順番に7対3で分割される。
選択 4
test_size=0.3の引数がなかった場合、訓練用データが7.5、テスト用データが2.5の割合で分割される。
解説
選択肢4が正解です。
train_test_split関数は、データを訓練用とテスト用に分割します。
問題文のコードは以下です。
-------------------------------
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
-------------------------------
この場合、データが次のように格納されます。
-------------------------------
X, y = iris.data, iris.target
-------------------------------
X → 説明変数(特徴量)
y → 目的変数(正解データ)
-------------------------------
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
-------------------------------
X_train → 訓練用の説明変数
X_test → テスト用の説明変数
y_train → 訓練用の目的変数
y_test → テスト用の目的変数
例えば決定木の場合、これらのデータを次のように利用して学習と予測を行います。
-------------------------------
# 決定木のクラスをインスタンス化
model = DecisionTreeClassifier()
# 訓練用データの説明変数と目的変数を引数にして学習モデルを作成
model.fit(x_train, y_train)
# 作成した学習モデルに、テスト用データの説明変数を渡して目的変数を予測
model.predict(x_test)
# 予測した結果にテスト用データの目的変数を渡して正解率を算出
model.score(y_test)
-------------------------------
【選択肢1】
Xに訓練用のデータ、yにテスト用のデータが格納される。
誤った説明です。
Xに説明変数、yに目的変数が格納されます。
【選択肢2】
X_trainに説明変数、X_testに目的変数が格納される。
誤った説明です。
X_trainに訓練用の説明変数、X_testにテスト用の説明変数が格納されます。
【選択肢3】
訓練用データが7、テスト用データが3の割合で、データの先頭から順番に7対3で分割される。
誤った説明です。
引数で「test_size=0.3」と指定しているため、訓練用データが7、テスト用データが3の割合で分割されます。データは先頭から順番ではなくランダムに分割されます。
【選択肢4】
test_size=0.3の引数がなかった場合、訓練用データが7.5、テスト用データが2.5の割合で分割される。
正しい説明です。
デフォルトは7.5と2.5の比率になります。
(公式書籍 p.226-228)