データ分析・中級問題チェック

問題 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)