第1回 Python 3 データ分析

→問題解説はこちらから


1.

データ分析に関する次の記述のうち、誤っているものはどれか。


あなたの回答: Pythonはデータ分析以外の分野でも活用されており、Webアプリなどのフロントエンド、速度向上のための低レイヤー処理などの分野においても他のプログラミング言語に比して優位性が高い。
正答: Pythonはデータ分析以外の分野でも活用されており、Webアプリなどのフロントエンド、速度向上のための低レイヤー処理などの分野においても他のプログラミング言語に比して優位性が高い。



2.

機械学習に関する次の記述のうち、正しいものはどれか。


あなたの回答: 教師あり学習は、説明変数の種類により回帰と分類の2種類に分けられる。回帰は目的変数が連続値となる。
正答: 教師あり学習は、正解となるラベルデータが存在する場合に用いられる方式であり、そのラベルを目的変数という。



3.

PythonおよびPythonの実行環境に関する次の記述のうち、誤っているものはどれか。


あなたの回答: venvはPythonの仮想環境を作成する仕組みである。WindowsでもmacOSでも利用することができ、異なるバージョンのPython言語を使い分けるのに便利である
正答: venvはPythonの仮想環境を作成する仕組みである。WindowsでもmacOSでも利用することができ、異なるバージョンのPython言語を使い分けるのに便利である



4.

次のコード群の2行目以降を代替できるリスト内包表記として正しいものはどれか。

names = [‘spam’, ‘ham’, ‘eggs’ ]
lens =[]
for name in names:
lens.append(len(name))

lens


あなたの回答: [lens(name) for name in names]
正答: [len(name) for name in names]



5.

次の正規表現を用いたスクリプトの[ ア ]の部分に入れたときエラーと表示されるものはどれか。


import re
prog = re.compile(r’py?(th|ers)oni?(a[lmn]|c)?’, re.IGNORECASE)
[ ア ]
if ret is None:
    print(‘エラー’)
else:
    print(ret[0])


あなたの回答: ret = prog.search(‘pythomian’)
正答: ret = prog.search(‘pythomian’)



6.

モジュールに関する次の記述のうち誤っているものはどれか。

あなたの回答: loggingモジュールのログレベルには、重要度の低い順にDEBUG、INFO、WARNING、ERROR、CRITICALの5つがある。
正答: pickleモジュールは、Pythonのオブジェクトをシリアライズしてファイルなどで読み書きできるようにすることができ、標準出力をバッファリングして制御するために便利である。



7.

Jupyter Notebookに関する次の記述のうち誤っているものはどれか 

あなたの回答: NotebookファイルはYAML形式で記述されており、プログラムや結果を参照するためには基本的にはJupyter Notebookを実行する必要があるが、yumなどのリポジトリサービスはNotebookファイルの表示に対応しているため、これらを利用して参照することができる。
正答: NotebookファイルはYAML形式で記述されており、プログラムや結果を参照するためには基本的にはJupyter Notebookを実行する必要があるが、yumなどのリポジトリサービスはNotebookファイルの表示に対応しているため、これらを利用して参照することができる。



8.

数学の基礎に関する次の記述のうち誤っているものはどれか。

あなたの回答: 三角関数のsinは「サイン」と読み、日本語では上弦という呼び名がある。また、cosは「コサイン」と読み、日本語では下弦という呼び名がある。
正答: 三角関数のsinは「サイン」と読み、日本語では上弦という呼び名がある。また、cosは「コサイン」と読み、日本語では下弦という呼び名がある。



9.

(3, 4) で表現されるベクトルをAとする。(4, 7)で表現されるベクトルをBとする。(2, 4, 5) で表現されるベクトルをCとする。次のベクトルに関する記述のうち正しいものはどれか。

あなたの回答: Aの原点からのユークリッド距離は5である。
正答: Aの原点からのユークリッド距離は5である。



10.

行列に関する次の記述のうち誤っているものはどれか。

あなたの回答: 行と列のサイズが同じ行列を特に正方行列と呼び、正方行列のうち、対角成分がすべて0で、残りの要素が1の行列を単位行列と呼ぶ。
正答: 行と列のサイズが同じ行列を特に正方行列と呼び、正方行列のうち、対角成分がすべて0で、残りの要素が1の行列を単位行列と呼ぶ。



11.

右辺が6x^2(6掛けるxの二乗)で表現される関数をf(x)とする。微分積分に関する以下の記述のうち誤っているものはどれか。

あなたの回答: 関数f(x)を積分すると、右辺は3x^3となる。
正答: 関数f(x)を積分すると、右辺は3x^3となる。



12.

「ネイピア数、tan(45°)、円周率、1の対数、1の階乗」の5つの数からなるデータがある。このデータについて正しいものはどれか。 

あなたの回答: 最頻値は1である
正答: 最頻値は1である



13.

確率と統計に関する次の記述のうち、正しいものはどれか。

あなたの回答: 6面体のサイコロを1回振った場合、その出目の数自体は不明なものの、奇数がでていることを教えられたとする。この場合の確率を条件付き確率と呼び、これはベイズの定理の基本となっている。
正答: 6面体のサイコロを1回振った場合、その出目の数自体は不明なものの、奇数がでていることを教えられたとする。この場合の確率を条件付き確率と呼び、これはベイズの定理の基本となっている。



14.

NumPyに関する次の記述のうち、誤っているものはどれか。

あなたの回答: NumPyオブジェクトの型を確認するためにはtype関数を、NumPy配列の形状を確認するためにはshapeメソッドを用いることができる。
正答: NumPy配列の次元変換に用いるravelメソッドは深い参照を返し、flattenメソッドは浅いコピーを返す。



15.

次のスクリプトを実行した結果として正しいものはどれか。

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 2, 3])
print(a[-1:, [1, 2]], b.dtype)


あなたの回答: [[5 6]] int64
正答: [[5 6]] int64



16.

次のスクリプトを実行した結果として正しいものはどれか。

import numpy as np
a = np.arange(1, 10, 3)
b = np.eye(5)
print(a[-1], b[2, 2])


あなたの回答: 7 1.0
正答: 7 1.0



17.

次のスクリプトを実行した結果として正しいものはどれか。

import numpy as np
a = np.full((1, 5), np.e).T.ravel()
b = np.linspace(0, 1, 5)
c = np.hstack([a, b])
print(a[-1], c[-1])


あなたの回答: 2.718281828459045 1.0
正答: 2.718281828459045 1.0



18.

次のスクリプトを実行した結果として正しいものはどれか。

import numpy as np
a = np.array([0, 9, 99, 999])
a = a + 1
a = a * 100
b = np.log10(a)
print(a[1], b[2])

あなたの回答: 1000 3.0
正答: 1000 4.0



19.

次のスクリプトを実行した結果として正しいものはどれか。

import numpy as np
a = np.array([1, 3])
b = np.array([-1, 5])
c = np.array([[1, 2], [3, 4]])
d = a @ b
e = np.dot(c, a)
print(d, e)


あなたの回答: 14 [ 7 15 ]
正答: 14 [ 7 15 ]



20.

次のスクリプトを実行して10を出力させたい。[ア]に入るものの説明として正しいものはどれか。

import pandas as pd
df = pd.DataFrame([[15, “a”, True],[20, “b”, False],[10, “c”, False]])
df.index = [“01”, “02”, “03”]
df.columns = [“A”, “B”, “C”]
[ア]
print(a)


あなたの回答: a = df.loc[“03”, “A”] または a = df.iloc[2, 0]
正答: a = df.loc[“03”, “A”] または a = df.iloc[2, 0]



21.

pandasのデータの読み込みと書き込みに関する次の記述のうち誤っているものはどれか。

あなたの回答: WebサイトのHTML内のtable要素からのデータの読み込みは、read_htmlメソッドを、htmlファイルへのデータの書き込みはto_htmlメソッドを用いることができる。
正答: バイナリファイルからのデータの読み込みは、read_blobメソッドを、バイナリファイルへのデータの書き込みはto_blobメソッドを用いることができる。



22.

次のスクリプトを実行した結果として正しいものはどれか。

import pandas as pd
df = pd.DataFrame([[40, “a”, True],[20, “b”, False],[30, “c”, False]])
df.index = [“01”, “02”, “03”]
df.columns = [“A”, “B”, “C”]

def judge(arg):
if arg < 50:
return “low”
elif arg < 70:
return “middle”
else:
return “high”

df.loc[:, “C”] = df.iloc[:, 0] * 2
df.loc[:, “B”] = df.iloc[:, 2].apply(judge)
_ = df[“C”] > 50
df = df[_]
print(df.iloc[0 , 0], df.iloc[1 ,1])


あなたの回答: 40 middle
正答: 40 middle



23.

次のスクリプトに関する説明のうち誤っているものはどれか。

import numpy as np
import pandas as pd
np.random.seed(123)
dates = pd.date_range(start=”2017-04-01″, periods=365)
df = pd.DataFrame(np.random.randint(1, 31, 365), index=dates, columns=[“rand”])
df_year = pd.DataFrame(df.groupby(pd.Grouper(freq=’W-SAT’)).sum(), columns=[“rand”])


あなたの回答: 5行目は、日付をインデックスとするDataFrameを作成している。rand列の各値は、1から31までのランダムな整数となる。
正答: 5行目は、日付をインデックスとするDataFrameを作成している。rand列の各値は、1から31までのランダムな整数となる。



24.

DataFrameの欠損値の処理に関する次の記述のうち、誤っているものはどれか。

あなたの回答: 欠損値が存在する行や列を削除するメソッドは、dropnaである。
正答: fillnaメソッドの引数にmethod=’median’を与えると、欠損値を中央値で補完する。



25.

DataFrameの基本統計量に関する次の記述のうち、誤っているものはどれか 。

あなたの回答: stdメソッドは分散を取得できる。
正答: stdメソッドは分散を取得できる。



26.

pandasに関する次の記述のうち、正しいものはどれか 。

あなたの回答: DataFrameをNumPy配列に変換するには、values属性を利用する。この場合、インデックス名、カラム名は保持されない。
正答: DataFrameをNumPy配列に変換するには、values属性を利用する。この場合、インデックス名、カラム名は保持されない。



27.

Matplotlibに関する次の記述のうち、誤っているものはどれか 。

あなたの回答: 折れ線グラフはplotメソッドで、棒グラフはbarメソッドで、散布図は、histメソッドで、円グラフはcircleメソッドで描画することができる。
正答: 折れ線グラフはplotメソッドで、棒グラフはbarメソッドで、散布図は、histメソッドで、円グラフはcircleメソッドで描画することができる。



28.

Matplotlibに関する次の記述のうち、誤っているものはどれか 。

あなたの回答: 同じフォントの指定を複数回繰り返す場合、フォントの設定をタプルデータとして作成し、fontdict引数に一度に指定することができる。タプルデータは上書きができないため、誤って上書きされることを防ぎやすい。
正答: 同じフォントの指定を複数回繰り返す場合、フォントの設定をタプルデータとして作成し、fontdict引数に一度に指定することができる。タプルデータは上書きができないため、誤って上書きされることを防ぎやすい。



29.

Matplotlibを用いてsin, cosのグラフを描画する次のコード群に関する説明のうち正しいものはどれか。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0.0, 15.0, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots()
ax.plot(x, y1, label=’sin’)
ax.plot(x, y2, label=’cos’)
ax.legend()

plt.show()


あなたの回答: 描画オブジェクトの中に配置されるサブプロットは1つである。
正答: 描画オブジェクトの中に配置されるサブプロットは1つである。



30.

次のコード群に関する説明のうち誤っているものはどれか。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

x = [1, 2, 3]
y1 = [10, 2, 3]
y2 = [5, 3, 6]
labels = [‘spam’, ‘ham’, ‘egg’]
[ア]
ax.bar(x, y_total, tick_label=labels, label=’y1′)
ax.bar(x, y2, label=’y2′)
[イ]

plt.show()


あなたの回答: このコード群は積み上げ棒グラフを描画するものである。
正答: [ア]に入るコードは y_total = [num1 + num2 for num1, num2 in sum(y1, y2)] である。



31.

Matplotlibを用いて正規分布に従うランダムな値をヒストグラムで描画する次のコード群に関する説明のうち誤っているものはどれか。

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
mu = 100
sigma = 15
x = np.random.normal(mu, sigma, 1000)
fig, ax = plt.subplots()
n, bins, patches = ax.hist(x, bins=25, orientation=’horizontal’)
for i, num in enumerate(n):
print(‘{:.2f} – {:.2f} {}’.format(bins[i], bins[i + 1], num))

plt.show()


あなたの回答: このコード群を複数回実行した場合、必ずしも同じ結果になるわけではない。
正答: このコード群を複数回実行した場合、必ずしも同じ結果になるわけではない。



32.

Matplotlibを用いて円グラフを描画する次のコード群に関する説明のうち誤っているものはどれか。

import matplotlib.pyplot as plt
labels = [‘spam’, ‘ham’, ‘egg’]
x = [10, 3, 1]
fig, ax = plt.subplots()
ax.pie(x, labels=labels, startangle=90, counterclock=False, shadow=True, autopct=’%1.2f%%’)

plt.show()


あなたの回答: 円グラフは反時計回りに配置される
正答: 円グラフは反時計回りに配置される



33.

機械学習の前処理に関する次の記述のうち、誤っているものはどれか。

あなたの回答: 分散正規化とは、特徴量の平均が1、標準偏差が0となるように特徴量を変換する処理であり、標準化やz変換と呼ばれることもある。
正答: 分散正規化とは、特徴量の平均が1、標準偏差が0となるように特徴量を変換する処理であり、標準化やz変換と呼ばれることもある。



34.

分類に関する次の記述のうち、誤っているものはどれか。

あなたの回答: 分類は、データのクラスを予測して分けるタスクであり、未知のデータを教師として利用して各データをクラスに振り分けるモデルを学習する教師あり学習の典型的なタスクである。
正答: 分類は、データのクラスを予測して分けるタスクであり、未知のデータを教師として利用して各データをクラスに振り分けるモデルを学習する教師あり学習の典型的なタスクである。



35.

機械学習のアルゴリズムに関する次の記述のうち、誤っているものはどれか。

あなたの回答: サポートベクタマシンは、マージンを最小にすることにより決定境界を求めるが、これは、決定境界がサポートベクタから近くなり多少のデータが変わっても誤った分類を行う可能性をを低くし、汎化能力を持たせようとしているためである。
正答: サポートベクタマシンは、マージンを最小にすることにより決定境界を求めるが、これは、決定境界がサポートベクタから近くなり多少のデータが変わっても誤った分類を行う可能性をを低くし、汎化能力を持たせようとしているためである。



36.

次のスクリプトに関する説明のうち誤っているものはどれか。

from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

boston = load_boston()
X, y = boston.data, boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=123)
lr = LinearRegression()
lr.fit(X_train, y_train )
y_pred = lr.predict(X_test)

あなたの回答: このスクリプトで行う回帰は住宅価格を特徴量から求める単回帰である。
正答: このスクリプトで行う回帰は住宅価格を特徴量から求める単回帰である。



37.

次元削減に関する次の記述のうち、正しいものはどれか。

あなたの回答: 主成分分析は、scikit-learnのdecompositonモジュールのPCAクラスを用いて実行することができる。
正答: 主成分分析は、scikit-learnのdecompositonモジュールのPCAクラスを用いて実行することができる。



38.

モデルの評価指標に関する次の記述のうち、誤っているものはどれか。

あなたの回答: 適合率は予想するクラスをなるべく間違えないようにしたいときに重視する指標である。
正答: 機械学習を用いて構築した回帰モデルの良し悪しを評価する指標に適合率、再現率、F値、正解率がある。これらは混同行列から計算する。



39.

次のスクリプトに関する説明のうち誤っているものはどれか。

from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier
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, random_state=123)
clf = DecisionTreeClassifier()
param_grid = {‘max_depth’: [3, 4, 5]}
cv = GridSearchCV(clf, param_grid=param_grid, cv=10)
cv.fit(X_train, y_train)
y_pred = cv.predict(X_test)

あなたの回答: このスクリプトでは10分割の交差検証が実行される。
正答: このスクリプトを複数回実行した場合、求められる決定木の深さの最適値は必ず同じ値となる。



40.

クラスタリングに関する次の記述のうち、誤っているものはどれか。

あなたの回答: k-meansは、scikit-learnのclusterモジュールのKMeansクラスを用いることによって実行することができる。
正答: 分割型の階層的クラスタリングは、最初にすべてのデータが1つのクラスタに所属していると考え、順次クラスタを分割していくアプローチであり、一般的に凝集型に比べて計算量が少なく精度が高いためよく用いられる。


シェアする

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

フォローする