Python3エンジニア認定データ分析試験 模試

問番号
問番号
問番号
問番号

問1

欠損値の対処方法として、間違っているものを選べ

正解

One-hotエンコーディングを行う

あなたの答え

その特徴量の統計的な代表値などで埋める

欠損値があるデータを用いない

欠損がある場合でも動作する機械学習アルゴリズムを選定する

問2

scikit-learnのサポートベクターマシンのハイパーパラメーターのCについて説明している以下の文章のうち正しいものを選べ

正解

Cの値が小さいほど、マージンは大きくなる

Cの値が大きいほど、マージンは大きくなる

あなたの答え

C=Trueにすると、非線形の分類問題も境界線を求めることができるようになる

特徴量の数が大きいほど、Cの値も大きくする必要がある

解説

正則化項であるパラメータCは個々のデータポイントの重要度で、Cを無限大に大きくしていくとマージンは小さくなります。Cはデータポイントの重要度で、Cが大きいとデータポイントが決定境界に与える影響も大きくなります。決定境界とデータポイントまでの距離であるマージンはCが大きくなるに伴い小さくなります。

フィードバックを送信

問3

以下のコードの出力として正しいものを選べ

fig, ax = plt.subplots()

x = [10, 20, 30]
label=[1 ,2, 3]
ax.pie(x, autopct="%1.1f%%", labels=label)
plt.show()

Image from Gyazo

Image from Gyazo

Image from Gyazo

Image from Gyazo

正解

あなたの答え

問4

決定木の不純度の指標として使用される「ジニ不純度」の説明している以下の文章のXXXとYYYに当てはまる組みとして正しいものを選べ

ある2つのカテゴリー(ラベル0とラベル1)を持つ特徴量を分割する場合のジニ不純度は、ラベル0なのにラベル1と割り振られる確率とラベル1なのにラベル0と割り振られる確率のXXXを考える必要がある。クラス0である確率をP(0)、クラス1である確率をP(1)とすると、求めるジニ不純度は

1(P(0)YYY+P(1)YYY)

 となる

正解

XXX = 和, YYY = 2

あなたの答え

XXX = 積, YYY = 2

XXX = 積, YYY = 1/2

XXX = 和, YYY = 1/2

問5

scikit-learnで実装されているk-means法について説明している以下の文章のうち間違っているものを選べ

正解

クラスターの重心位置の更新計算は、指定した回数分だけ行われる

あなたの答え

教師なし学習であるため、教師ラベルは必要ない

initの引数に”random”を指定すると、最初のクラスター点をデータの中からランダムに選ぶため、初期値依存性がある

クラスターの個数は、使用者が指定する必要がある

問6

機械学習モデルについて説明している以下の文章のうち間違っているものを選べ

正解

機械学習モデルでは、何かを分類するタスクしか解くことができない

あなたの答え

ラベルではなく数値そのものを予測する問題を回帰問題という

データが大量に存在する場合にモデルを構築する際は、学習データ、検証データ、テストデータの3つに分割するのが理想である

異なる検証データで結果を比較するために、交差検証を実施することもある

問7

scikit-learnのLogisticRegressionクラスを用いてモデルを構築した場合のラベルの予測確率を取得する関数として正しいものを以下の中から選べ

正解

predict_proba()

predict()

あなたの答え

get_params()

predict_log_proba()

問8

サポートベクターマシンについて説明している以下の文章のうち正しいものを選べ

正解

scikit-learnで使用する場合、カーネルはガウスカーネル以外にも指定することができる

内部で欠損値を処理するアルゴリズムが実装されているため、欠損値はNULL値のままでよい

線形分離可能な問題にのみ適用できる

マージンの距離を最小にするように最適化するアルゴリズムである

あなたの答え

問9

データエンジニアの役割について説明している以下の文章のうち、正しいものを選べ

データエンジニアはモデリングのみを担当することが多く、データの前処理を行うことはない

正解

データエンジニアはデータサイエンティストと連携して、予測モデルを構築するためのデータの前処理や抽出作業を行うことがある

あなたの答え

データエンジニアはモデリングのみを担当することが多く、データの概要把握のためのデータ集計やデータ可視化を行うことはない。

データエンジニアが使用するツールはwindowsOSでしか動作しないものが多く、windowsOSを使わなければならない

問10

以下のコードの出力として正しいものを選べ

import pandas as pd

df_1 = pd.DataFrame({'a': [10, 100], 'b': [10, 20], 'c': [10, 1]})
df_2 = pd.DataFrame({'a': [10, 100], 'b': [10, 20], 'c': [10, 1]})
pd.concat([df_1, df_2], axis=0).reset_index(drop = True)

Image from Gyazo

Image from Gyazo

Image from Gyazo

Image from Gyazo

正解

あなたの答え

問11

import pandas as pd

df = pd.DataFrame({"国名":["日本","アメリカ","中国","イタリア","フランス", "ロシア", "ブラジル", "イギリス"], 
                   "面積":[380000, 9834000, 959700, 301300, 643800, 17100000, 8516000, 242500]})

上記コードを実行した後に、以下の写真の出力を得るために実行するべきコードを選べ
Image from Gyazo

df[“面積”].sort_values()

df.sort_values(“面積”, ascending=False)

あなたの答え
正解

df.sort_values(“面積”)

df[“面積”].sort_values(ascending=False)

問12

以下の不定積分の答えとして正しいものを選べ。Cは積分定数とする。

1xdx

正解

logx+c

1x+c

1x2+c

あなたの答え

ex+c

問13

datetimeモジュールについて説明している以下の文章のうち、誤っているものを選べ

正解

取得する日付や日時のタイムゾーンを指定することができる

あなたの答え

now()を使用することで、今日の日付を取得することができる

日数の差分を算出するなど、日付同士の演算をすることができない。

日時(datatime型)→文字列の変換はできるが、文字列→日時(datatime型)の変換はできない

問14

以下のコードの出力として正しいものを選べ

import numpy as np

a = np.array([[0,1,10],[0,1,10]])
b = np.array([[100],[100]])
c = np.concatenate([a,b],axis=1)
c = c.reshape(4,2)
np.dot(c, b)

array([[100, 101, 110, 200], [100, 101, 110, 200]])

array([[ 0, 100, 1000], [ 0, 100, 1000], [10000, 10000, 10000]])

あなたの答え

array([[10000, 10200, 12000]])

正解

array([[ 100], [11000], [ 100], [11000]])

問15

以下のコードを実行した際の出力として正しいものを選べ

import copy 

A = [1,2,3]
B = A.copy()
A.append(4)
B

[1,2,3,4]

あなたの答え
正解

[1,2,3]

[[1,2,3],[1,2,3]]

[ ]

問16

Jupyter Notebookについて説明している以下の文章のうち、正しいものを選べ

単一行でセルを実行できることもあり、セル内で関数を作成することは良くない

正解

単一のコードを実行できることもあり、後から見直した時のために、セルとセルの間には適度に、コメントを残すべきである

あなたの答え

ノートブックが複数に別れていると面倒なので、ノートブックは長くても1つに納める方が良い

使っていないノートブックは自動でシャットダウンされるので、いくつでもノートブックを開くことは問題ない

問17

以下のような、ユーザーごとのサービス利用状況が格納されたデータフレームdfがある。
利用回数の箱ひげ図を描画するコードとして正しいものを選べ
Image from Gyazo

import matplotlib.pyplot as plt 

plt.boxplot(df["利用回数"])
plt.show()
①
import matplotlib.pyplot as plt 

plt.hist(df["利用回数"])
plt.show()
②
import matplotlib.pyplot as plt 

plt.violinplot(df["利用回数"])
plt.show()
③
import matplotlib.pyplot as plt 

df["利用回数"].boxplot()
plt.show()
④
正解

あなたの答え

問18

クラスタリング手法として適切でないものを以下の中から選べ

正解

k-近傍法

k-means法

ウォード法

あなたの答え

単純連結法

問19

以下の文章のうちグリッドサーチの説明として正しいものを選べ

正解

指定したパラメーターの全ての組み合わせを試す手法。組み合わせの総数分モデルの学習を行うので、探索が終わるのに時間がかかる

各パラメーターにおいて指定した分布から無作為に探索値を抽出するので、分布の仮定が間違っていると最適なチューニング結果にならない

パラメーター探索の仮定で、ベイズ推論を行なっているため計算に時間がかかる

どのパラメーターを探索するかはアルゴリズムが自動で選んでくれる

あなたの答え

問20

機械学習を用いたデータ分析において、データを入手してからモデルの学習を実施するまでの処理手順として、正しいものを選べ

データ入手→アルゴリズム選択→データ加工→データ可視化→モデルの学習

データ入手→アルゴリズム選択→データ加工→データ可視化→モデルの学習

データ入手→データ可視化→アルゴリズム選択→データ加工→モデルの学習

正解

データ入手→データ加工→データ可視化→アルゴリズム選択→モデルの学習

あなたの答え

問21

棒グラフが出力されるコードとして正しいものを選べ

fig, ax = plt.subplots()  
x = [1,2,3] 
y = [10, 20, 30] 
ax.bar(x, y) 
plt.show() 
①
fig, ax = plt.subplots()  
x = [1,2,3] 
y = [10, 20, 30] 
ax.scatter(x, y) 
plt.show() 
②
fig, ax = plt.subplots()  
x = [1,2,3] 
y = [10, 20, 30] 
ax.plot(x, y) 
plt.show() 
③
fig, ax = plt.subplots()  
x = [1,2,3] 
y = [10, 20, 30] 
ax.boxplot(x, y) 
plt.show() 
④
正解

あなたの答え

問22

配列の形状が(2,10)であり、各要素が平均2、標準偏差5の正規分布に従う乱数を生成するコマンドとして正しいものを選べ。

np.random.normal[2,5,size=(2,10)]

np.random.random(2,5,size=(2,10))

正解

np.random.normal(2,5,size=(2,10))

あなたの答え

np.random.rand(2,5,size=(2,10))

問23

scikit-learnのGridSearchCVクラスには、もっとも精度が良い時のハイパーパラメーターの値を取得するための属性がある。その属性として正しいものを選べ

正解

best_params_

あなたの答え

best_estimator_

best_index_

cv_results_

問24

A = (1,2,3) B = (4,5,6)の2つの座標がある。座標AB間のユークリッド距離として正しいものを選べ

正解

27

あなたの答え

27

9

3

問25

AUCはROC曲線から算出されるが、具体的にはROC曲線の何を算出したものか。以下の中から正しいものを選べ

正解

ROC曲線の面積

ROC曲線の縦軸の最大値

ROC曲線の横軸の最大値

ROC曲線の勾配(微分)

あなたの答え

問26

以下のコードを実行した場合の出力として、正しいものを選べ。

import numpy as np

A = np.array([[1, 1],[1, 1]])
B = np.array([1, 1])
np.dot(A, B)

array([[1, 1], [1, 1]])

array([[2, 2]])

あなたの答え
正解

array([2, 2])

実行不可(エラーが出る)

問27

以下のような各日付に対して、利用回数と利用料金が格納されたデータフレームdfがある。このdfの欠損値を0で埋める処理として正しいものを選べ

Image from Gyazo

df.fillna()

df.fillna(method=”ffill”)

df.dropna(0)

正解

df.fillna(0)

あなたの答え

問28

以下のような、pandasデータフレームAとpandasデータフレームBがある。この2つのデータフレームの日付が一致する部分のみを列方向に結合したデータフレームを作成するコードとして正しいものを選べ
A
Image from Gyazo

B
Image from Gyazo

pd.merge(A, B, how=”left”, on=”日付”)

pd.join(A, B, how=”inner”, on=”日付”)

正解

pd.merge(A, B, how=”inner”, on=”日付”)

あなたの答え

pd.merge([A, B], how=”inner”, on=”日付”)

問29

以下のコードの出力として正しいものを選べ

import pandas as pd

df = pd.DataFrame({"A":[1,2,3,4,5], "B":[6,7,8,9,10]})
df.iloc[1]>3
A    False
B     True

①
0     True 
1     True
2     True
3     True
4     True

②
A    False

③
0    False
1    False
2    False
3     True
4     True

④
正解

あなたの答え

問30

以下の行列の掛け算の答えとして正しいものを選べ

(10)(1001)

(1001)

あなたの答え

(10)

(10)

正解

算出不可能(掛け算はできない)

問31

pip freeze コマンドの説明として正しいものを選べ

正解

インストールされているパッケージの一覧を出力する

pipのバージョンを最新にする

実行中のpipコマンドを強制終了するコマンド

現在のpipのバージョンを出力するコマンド

あなたの答え

問32

以下のような、ユーザーごとのサービス利用状況が格納されたデータフレームdfがある。
横軸に利用回数、縦軸に利用料金の散布図を描画するためのコードとして正しいものを選べ
Image from Gyazo

import matplotlib.pyplot as plt 

plt.scatter(df["利用回数"],df["利用料金"])
plt.show()

import matplotlib.pyplot as plt 

plt.scatter(df["利用料金"],df["利用回数"])
plt.show()

import matplotlib.pyplot as plt 

plt.plot(df["利用回数"],df["利用料金"])
plt.show()

import matplotlib.pyplot as plt 

df["利用回数"].scatter(df["利用料金"])
plt.show()

正解

あなたの答え

問33

以下の行列について特徴として誤っているものを選べ

(1001)

単位行列である

正解

非正方行列である

あなたの答え

対角行列である

逆行列が存在する

問34

数値データが格納されたpandasデータフレームに対して、describeメソッドを用いて算出することができない統計量として正しいものを選べ

最大値

正解

外れ値

あなたの答え

平均値

データ件数

問35

以下のコードを実行した場合の出力として、正しいものを選べ。

import numpy as np

A = np.array([[1, 3, 5]])
B = np.array([[6, 8, 10]])
C = np.concatenate([A, B], axis=0)
D = np.diff(C, axis=0)
np.sum(D)

8

33

正解

15

あなたの答え

9

問36

線形回帰について説明している以下の文章のうち正しいものを選べ

特徴量が5個以上あるデータには用いることができない

過学習することがないので、検証データを用意する必要はない。

分類する予測モデルを構築する際に使用するアルゴリズムである

正解

L1正則化やL2正則化を用いることで過学習を抑えることができる

あなたの答え

問37

以下のコードを実行した場合の出力として正しいものを選べ。

import numpy as np

A = np.array([[1,2,3],[4,5,6]])
B = A.ravel()
A[0,:]=0
B.reshape(3,2)

array([[1, 2, 3], [4, 5, 6]])

array([[0, 2], [3, 0], [5, 6]])

正解

array([[0, 0], [0, 4], [5, 6]])

あなたの答え

array([[1, 2], [3, 4], [5, 6]])

問38

以下のコードを実行すると、写真のようなグラフが描画される

import matplotlib.pyplot as plt 

x_list = [i for i in range(10)]
y_list = list(map(lambda x: x**2, x_list))
plt.plot(x_list, y_list)
plt.show()

グラフの線の色を赤色に変更したい場合のコードとして、正しいものを選べ
Image from Gyazo

import matplotlib.pyplot as plt 

x_list = [i for i in range(10)]
y_list = list(map(lambda x: x**2, x_list))
plt.plot(x_list, y_list, color = "red")
plt.show()
①
import matplotlib.pyplot as plt 

x_list = [i for i in range(10)]
y_list = list(map(lambda x: x**2, x_list))
plt.plot(x_list, y_list)
plt.show(color = "red")
②
import matplotlib.pyplot as plt 

x_list = [i for i in range(10)]
y_list = list(map(lambda x: x**2, x_list))
plt.plot(x_list, y_list, ls="--")
plt.show()
③
import matplotlib.pyplot as plt 

x_list = [i for i in range(10)]
y_list = list(map(lambda x: x**2, x_list))
plt.plot(x_list, y_list, style="red")
plt.show()
④
正解

あなたの答え

問39

dfと名付けられている、以下のようなデータフレームがある。このデータフレームから、人口/万人カラムを削除する場合のコードとして正しいものを選べ

Image from Gyazo

正解

df.drop(“人口/万人”, axis=1)

df.drop(“人口/万人”, axis=0)

df.drop[“人口/万人”]

df[“人口/万人”].drop()

あなたの答え

問40

以下のコードを実行した際に出力されるグラフとして正しいものを選べ

import pandas as pd
import matplotlib.pyplot as plt 

df = pd.DataFrame({"国名":["日本","アメリカ","イタリア","フランス", "ロシア", "ブラジル", "イギリス"], "人口/万人":[12700, 32800, 6000, 6700, 14500, 20900, 6600]})

df = df.sort_values("人口/万人")
plt.rcParams["font.family"] = "AppleGothic"
plt.bar(df["国名"], df["人口/万人"])
plt.ylabel("人口(万人)")
plt.show()

Image from Gyazo

Image from Gyazo

Image from Gyazo

Image from Gyazo

あなたの答え
正解

シェアする

  • このエントリーをはてなブックマークに追加

フォローする