Python3エンジニア認定データ分析試験 ⑥ scikit-learn(前処理・分類・回帰)

scikit-learnの前半。前処理として欠損値の補完、カテゴリ変数のエンコーディング、特徴量の正規化・標準化、学習データとテストデータの分割を扱う。分類では決定木(不純度と情報利得)、サポートベクタマシン(マージン最大化、カーネル)、ランダムフォレスト、回帰では線形回帰と重回帰。fit・predict・transformという共通APIの型を押さえるのが要点。公式の出題範囲では4-4 scikit-learnが⑦と合わせて8問・20%で節単位の最大。つまずきどころは、学習データにだけfitしテストデータはtransformする順序と、崩したときに起きるデータリーク。

この分野の問題37問を、選択肢・正解・解説つきで掲載しています。まず自分で解答を考えてから「正解と解説を見る」を開いて答え合わせをしてください。

クイズモードで挑戦 →

196scikit-learnについて正しく述べているものはどれか。

  1. ApandasのDataFrameを整形するツールである
  2. Bディープラーニング専用のライブラリである
  3. Cグラフ描画を主目的としたライブラリである
  4. D機械学習を含むデータ解析ライブラリである
正解と解説を見る

正解:D機械学習を含むデータ解析ライブラリである

scikit-learnは機械学習を含むデータマイニングやデータ解析のライブラリです。

この問題の解説ページを開く →

197scikit-learnにおいて、クラスをインスタンス化したあとに前処理を実行するメソッドはどれか。

  1. Atransform
  2. Bapply
  3. Cevaluate
  4. Dexecute
正解と解説を見る

正解:Atransform

scikit-learnでは、fitメソッドとtransformメソッド(またはfit_transform)を用いて前処理を行います。

この問題の解説ページを開く →

198データ解析の工程において前処理が占める割合はどのくらいと言われているか。

  1. A8割から9割
  2. B2割から3割
  3. C5割から6割
  4. Dほぼ10割
正解と解説を見る

正解:A8割から9割

前処理はデータ解析の8割から9割を占めるともいわれています。

この問題の解説ページを開く →

199sklearn.preprocessingのImputerクラスを用いて平均値で欠損値を補完する場合、指定する引数はどれか。

  1. Astrategy='mean'
  2. Bfill_value='mean'
  3. Creplace='mean'
  4. Dmethod='average'
正解と解説を見る

正解:Astrategy='mean'

引数strategyに文字列'mean'を指定することで平均値による補完を行います。

この問題の解説ページを開く →

200Imputerクラスの引数において、axis=0が計算を行う方向はどれか。

  1. A列方向
  2. B行方向
  3. C全要素
  4. D対角方向
正解と解説を見る

正解:A列方向

axis=0は列に対して、axis=1は行に対して計算を行います。

この問題の解説ページを開く →

201ImputerクラスのtransformメソッドにpandasのDataFrameを指定して実行した際、返り値のデータ型は何になるか。

  1. Apandas DataFrame
  2. BNumPy配列
  3. Cpandas Series
  4. DPythonのリスト
正解と解説を見る

正解:BNumPy配列

transformメソッドの返り値は、pandas DataFrameを指定してもNumPy配列になる点に注意が必要です。

この問題の解説ページを開く →

202カテゴリ変数を「a→0、b→1、c→2」のように数値(整数)に変換する処理に用いるクラスはどれか。

  1. ALabelEncoder
  2. BOrdinalEncoder
  3. CCategoryEncoder
  4. DStringEncoder
正解と解説を見る

正解:ALabelEncoder

scikit-learnでカテゴリ変数をエンコーディングするには、LabelEncoderクラスを使用します。

この問題の解説ページを開く →

203LabelEncoderクラスにおいて、変換された値と元の値の対応関係が格納されている属性はどれか。

  1. Acategories_
  2. Bclasses_
  3. Clabels_
  4. Dmapping_
正解と解説を見る

正解:Bclasses_

インスタンスのclasses_属性により、元の値がどの順番で格納され変換されたかを確認できます。

この問題の解説ページを開く →

204カテゴリ変数に対して、該当する値の列に1、それ以外の列に0が入力されるように列を増やす変換処理を何と呼ぶか。

  1. AOne-hotエンコーディング
  2. B順序エンコーディング
  3. Cラベルエンコーディング
  4. Dバイナリエンコーディング
正解と解説を見る

正解:AOne-hotエンコーディング

One-hotエンコーディング(ダミー変数化)の処理です。

この問題の解説ページを開く →

205OneHotEncoderクラスのfit_transformメソッドによる変換結果は、どのような形式の行列として返されるか。

  1. A密行列(dense matrix)
  2. B疎行列(sparse matrix)
  3. C単位行列(identity matrix)
  4. D対称行列(symmetric matrix)
正解と解説を見る

正解:B疎行列(sparse matrix)

変換した時は多くの成分が0である疎行列(sparse matrix)を返します。

この問題の解説ページを開く →

206scikit-learnのOneHotEncoderクラスと比較して、DataFrameをそのまま変換できるため使い勝手が良いとされるpandasの関数はどれか。

  1. Apd.one_hot()
  2. Bpd.get_dummies()
  3. Cpd.factorize()
  4. Dpd.categorical()
正解と解説を見る

正解:Bpd.get_dummies()

pandasを用いる場合はget_dummies関数の方が使い勝手と見通しが良いです。

この問題の解説ページを開く →

207特徴量の平均が0、標準偏差が1となるようにデータを変換する処理の名称はどれか。

  1. A最大絶対値正規化
  2. BL2正規化
  3. C分散正規化
  4. D最小最大正規化
正解と解説を見る

正解:C分散正規化

特徴量の平均が0、標準偏差が1となるように変換する処理は分散正規化(標準化)と呼ばれます。

この問題の解説ページを開く →

208scikit-learnで分散正規化を行うために使用するクラスはどれか。

  1. AMinMaxScaler
  2. BStandardScaler
  3. CRobustScaler
  4. DNormalizer
正解と解説を見る

正解:BStandardScaler

preprocessingモジュールのStandardScalerクラスを使用して分散正規化を実行します。

この問題の解説ページを開く →

209列Aの値が[1, 2, 3, 4, 5]のとき、平均は3、標準偏差は√2(約1.414)である。値「2」を分散正規化した場合の計算結果はどれか。

  1. A0.00000000
  2. B0.70710678
  3. C-1.41421356
  4. D-0.70710678
正解と解説を見る

正解:D-0.70710678

「(2 - 3) / 1.414...」の計算により、約-0.70710678となります。

この問題の解説ページを開く →

210特徴量の最小値が0、最大値が1をとるように正規化する処理はどれか。

  1. A最小最大正規化
  2. B分散正規化
  3. C最大絶対値正規化
  4. Dロバスト正規化
正解と解説を見る

正解:A最小最大正規化

最小値が0、最大値が1をとるように特徴量を正規化する処理は最小最大正規化です。

この問題の解説ページを開く →

211列Bの最小値が100、最大値が800である。値「500」に対して最小最大正規化を行った場合の値はどれか。

  1. A0.50000000
  2. B0.75000000
  3. C1.00000000
  4. D0.57142857
正解と解説を見る

正解:D0.57142857

「(500 - 100) / (800 - 100) = 400 / 700」の計算により約0.57142857となります。

この問題の解説ページを開く →

212データの「クラス」を予測して分ける機械学習の典型的なタスクを何と呼ぶか。

  1. A次元削減
  2. B分類
  3. C回帰
  4. Dクラスタリング
正解と解説を見る

正解:B分類

クラスが既知のデータを教師として振り分けモデルを学習するタスクは分類と呼ばれます。

この問題の解説ページを開く →

213学習データとテストデータに分割する関数 train_test_split は、scikit-learnのどのモジュールに含まれているか。

  1. Apreprocessing
  2. Bmetrics
  3. Cmodel_selection
  4. Ddatasets
正解と解説を見る

正解:Cmodel_selection

model_selectionモジュールのtrain_test_split関数を使用します。

この問題の解説ページを開く →

214scikit-learnで読み込んだIrisデータセットの特徴量(説明変数)の数はいくつか。

  1. A4つ
  2. B5つ
  3. C2つ
  4. D3つ
正解と解説を見る

正解:A4つ

「がくの長さ」「がくの幅」「花びらの長さ」「花びらの幅」の4つの特徴量が含まれています。

この問題の解説ページを開く →

215Irisデータセットの目的変数において、数値の「1」が対応するアヤメの種類はどれか。

  1. AVirginica
  2. B上記いずれでもない
  3. CSetosa
  4. DVersicolor
正解と解説を見る

正解:DVersicolor

「0」がSetosa、「1」がVersicolor、「2」がVirginicaに対応します。

この問題の解説ページを開く →

216train_test_split関数において、データを分割する際に用いるシード値を固定するための引数はどれか。

  1. Arandom_state
  2. Bseed
  3. Cshuffle
  4. Dtest_size
正解と解説を見る

正解:Arandom_state

結果に再現性を持たせるため、引数random_stateにシード値を固定する整数を指定します。

この問題の解説ページを開く →

217サポートベクタマシン(SVM)の説明として登場しない用語はどれか。

  1. Aサポートベクタ
  2. B情報利得
  3. C決定境界
  4. Dマージン
正解と解説を見る

正解:B情報利得

「情報利得」はSVMではなく、決定木(Decision Tree)のデータ分割基準として登場する用語です。

この問題の解説ページを開く →

218サポートベクタマシンにおいて、パラメータCの値を小さく設定するとどうなるか。

  1. Aマージンは狭くなる
  2. B決定境界が曲線になる
  3. C過学習が完全に防げる
  4. Dマージンは広くなる
正解と解説を見る

正解:Dマージンは広くなる

Cの値が小さいほどマージンは広く、大きいほどマージンは狭くなります。

この問題の解説ページを開く →

219データが直線で分離できない場合、SVCクラスのカーネルに動径基底関数を使用するための引数指定はどれか。

  1. Akernel='poly'
  2. Bkernel='rbf'
  3. Ckernel='sigmoid'
  4. Dkernel='linear'
正解と解説を見る

正解:Bkernel='rbf'

動径基底関数(radial basis function)を使用する場合、kernel='rbf'と指定します。

この問題の解説ページを開く →

220サポートベクタマシンを使用する前に、特徴量の正規化を行うことが推奨される理由はどれか。

  1. Aカテゴリ変数を連続変数に変換する必要があるため
  2. Bpredictメソッドの処理速度が劇的に向上するため
  3. C内部的に正規化済みデータしか受け付けないため
  4. D極端に絶対値の大きな特徴量に結果が影響されやすいため
正解と解説を見る

正解:D極端に絶対値の大きな特徴量に結果が影響されやすいため

サポートベクタマシンは極端に絶対値の大きな特徴量に分類結果が影響を受けやすい傾向があるためです。

この問題の解説ページを開く →

221決定木において、木の最上部にあり親ノードを持たないノードを何と呼ぶか。

  1. A葉ノード (leaf node)
  2. B枝ノード (branch node)
  3. C端ノード (edge node)
  4. D根ノード (root node)
正解と解説を見る

正解:D根ノード (root node)

親ノードを持たない最上部のノードは根ノード、子を持たない最下部は葉ノードと呼ばれます。

この問題の解説ページを開く →

222決定木において、データを分割することによって不純度が下がり、どれだけクラスをきれいに分けられるようになったかを表す指標はどれか。

  1. Aジニ不純度
  2. Bエントロピー
  3. C情報利得
  4. D分類誤差
正解と解説を見る

正解:C情報利得

親ノードの不純度から子ノードの不純度の合計を引いたものは情報利得(information gain)と定義されます。

この問題の解説ページを開く →

223あるノードにクラス0が振り分けられる確率が0.6、クラス1が振り分けられる確率が0.4の場合、ジニ不純度の値はどれか。

  1. A0.36
  2. B0.50
  3. C0.48
  4. D0.24
正解と解説を見る

正解:C0.48

「1 - (0.6の2乗 + 0.4の2乗) = 1 - 0.52 = 0.48」と計算されます。

この問題の解説ページを開く →

224scikit-learnで決定木を実行するために使用するクラスはどれか。

  1. ADecisionTreeRegressor
  2. BTreeClassifier
  3. CDecisionTreeClassifier
  4. DRandomForestClassifier
正解と解説を見る

正解:CDecisionTreeClassifier

treeモジュールのDecisionTreeClassifierクラスを使用して決定木を実行します。

この問題の解説ページを開く →

225pydotplusライブラリを用いて決定木を可視化する際、裏側で使用されている可視化ツールはどれか。

  1. ASeaborn
  2. BPlotly
  3. CGraphViz
  4. DMatplotlib
正解と解説を見る

正解:CGraphViz

pydotplusライブラリは、GraphVizと呼ばれる可視化ツールを使用しています。

この問題の解説ページを開く →

226ランダムフォレストにおいて、データのサンプルと特徴量をランダムに選択して生成されたデータを何と呼ぶか。

  1. Aアウトオブバッグデータ
  2. Bバギングデータ
  3. Cブートストラップデータ
  4. Dサブサンプルデータ
正解と解説を見る

正解:Cブートストラップデータ

ランダムに選択されたサンプルと特徴量のデータはブートストラップデータと呼ばれます。

この問題の解説ページを開く →

227複数の学習器を用いた学習方法(ランダムフォレストなど)を総称して何と呼ぶか。

  1. A強化学習
  2. B転移学習
  3. Cアンサンブル学習
  4. Dディープラーニング
正解と解説を見る

正解:Cアンサンブル学習

決定木のアンサンブル(集合)であるランダムフォレストは、アンサンブル学習の1つです。

この問題の解説ページを開く →

228RandomForestClassifierクラスをインスタンス化する際、決定木の個数を指定するパラメータはどれか。

  1. Amax_depth
  2. Bnum_trees
  3. Cn_trees
  4. Dn_estimators
正解と解説を見る

正解:Dn_estimators

パラメータn_estimatorsには構築する決定木の個数を指定します。

この問題の解説ページを開く →

229ある値(目的変数)を別の単一または複数の値(説明変数)で説明するタスクを何と呼ぶか。

  1. A回帰
  2. B分類
  3. Cクラスタリング
  4. Dアソシエーション
正解と解説を見る

正解:A回帰

家賃を物件の広さで説明する例などは回帰のタスクです。

この問題の解説ページを開く →

230scikit-learnで線形回帰を実行するために使用するクラスはどれか。

  1. ALogisticRegression
  2. BRidge
  3. CLinearRegression
  4. DSupportVectorRegression
正解と解説を見る

正解:CLinearRegression

linear_modelモジュールのLinearRegressionクラスを用いて線形回帰を実行します。

この問題の解説ページを開く →

231線形回帰において、説明変数が2変数以上ある場合の手法を特に何と呼ぶか。

  1. A多項式回帰
  2. B非線形回帰
  3. C単回帰
  4. D重回帰
正解と解説を見る

正解:D重回帰

説明変数が1変数の時は単回帰、2変数以上の時は重回帰と呼ばれます。

この問題の解説ページを開く →

232線形回帰のモデル構築後、テストデータセット(X_test)に対する予測を実行するメソッドはどれか。

  1. Ascore(X_test)
  2. Bpredict(X_test)
  3. Cfit(X_test)
  4. Dtransform(X_test)
正解と解説を見る

正解:Bpredict(X_test)

テストデータセットに対する予測は、predictメソッドを用いて行います。

この問題の解説ページを開く →
Python3エンジニア認定データ分析試験の全分野一覧へ戻る