第3回 Python 3 データ分析

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

あなたの回答: サードパーティ製パッケージであるpandasが提供するDataFrame構造は、C言語のデータフレームからインスパイアされたものであり、表形式の2次元データを柔軟に取り扱えるという特徴がある。
正答: サードパーティ製パッケージであるpandasが提供するDataFrame構造は、C言語のデータフレームからインスパイアされたものであり、表形式の2次元データを柔軟に取り扱えるという特徴がある。


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

あなたの回答: 機械学習を用いずにカテゴライズや数値予測を行う手法の一つとして、ルールベースがある。ルールベースではプログラミングの条件分岐の要領でデータを容易にルール化できるが、パラメータの数が増えると記述が困難になる。
正答: 機械学習を用いずにカテゴライズや数値予測を行う手法の一つとして、ルールベースがある。ルールベースではプログラミングの条件分岐の要領でデータを容易にルール化できるが、パラメータの数が増えると記述が困難になる。


3.
PythonおよびPythonの実行環境に関する次の記述のうち、正しいものはどれか。
あなたの回答: venvで作成したPythonの仮想環境は、異なるバージョンのPython言語を使い分けるのに便利である。
正答: Anacondaで設定した環境下でパッケージ管理をする場合には、Anaconda独自のcondaコマンドのほかpipも利用可能である。ただし稀にcondaコマンドで構築された環境がpipの利用で壊されてしまうこともあるため、Anacondaを利用する場合は基本的にcondaコマンドでパッケージ管理することが望ましい。


4.
次のような実行結果を得たい場合、コードの【A】【B】【C】の組み合わせとして正しいものはどれか。

>> str = ‘Hello Python’
>> str.【A】
‘hello python’
>> str.【B】
‘Hi Python’
>> str.【C】
[‘Hello’, ‘Python’]
あなたの回答: 【A】lower() 【B】replace(‘Hello’, ‘Hi’) 【C】split()
正答: 【A】lower() 【B】replace(‘Hello’, ‘Hi’) 【C】split()


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

import re
prog = re.compile(‘(K|S)us(a|u)n(a|o)m?g?i(saya|ro)?’, re.IGNORECASE)
[ ア ]
print(ret[0])
あなたの回答: ret = prog.search(‘SUSANOO’)
正答: ret = prog.search(‘SUSANOO’)


6.
次のようなコードを実行した場合に出力されるログレベルとして正しいものはどれか。

[ コード ]
import logging

logging.basicConfig(
format=’%(levelname)s’
)

logging.debug(‘デバッグレベル’)
logging.info(‘INFOレベル’)
logging.warning(‘警告レベル’)
logging.error(‘エラーレベル’)
logging.critical(‘重大なエラー’)
あなたの回答: DEBUG INFO WARNING ERROR
正答: WARNING ERROR CRITICAL


7.
Jupyter Notebookに関する次の記述のうち正しいものはどれか。
あなたの回答: Jupyter Notebookがデータ分析や機械学習の分野でよく使われる理由として、1つのNotebookというドキュメントにPythonなどのプログラムとその結果やMarkdown記法のドキュメントなどをまとめられることのほか、コードの実行結果の表示は、通常の文字列に加え、表やグラフも可能であることなどが挙げられる。
正答: Jupyter Notebookがデータ分析や機械学習の分野でよく使われる理由として、1つのNotebookというドキュメントにPythonなどのプログラムとその結果やMarkdown記法のドキュメントなどをまとめられることのほか、コードの実行結果の表示は、通常の文字列に加え、表やグラフも可能であることなどが挙げられる。


8.
数学の基礎に関する次の記述のうち誤っているものはどれか。
あなたの回答: 数式で「すべてを掛け合わせる」という処理を表す際には、ギリシャ文字のシグマの大文字を用いる。
正答: 数式で「すべてを掛け合わせる」という処理を表す際には、ギリシャ文字のシグマの大文字を用いる。


9.
座標平面上の2点であるA (5, 7)とB (2,3)の、2点間のマンハッタン距離として正しいものはどれか。
あなたの回答: 7
正答: 7


10.
行列に関する次の記述のうち正しいものはどれか。
あなたの回答: 行列の行の数とベクトルのサイズが同じ場合は、これらの掛け算を定義することができ、結果は、元の行列の列数と同じサイズのベクトルになる。
正答: 行列の分解の理論「m×sの行列にs×nの行列を賭けると、m×nの行列になる」を逆に考えると、データ分析や機械学習において、説明変数の次元数を削減することができる。


11.
微分積分に関する以下の記述のうち誤っているものはどれか。
あなたの回答: 関数 F(x)を微分して f(x)となったとき、F を f の原始関数、f を F の導関数と呼ぶ。導関数に具体的なxの値を代入して得られる値は微分係数と呼ばれる。
正答: 右辺が6x^2(6掛けるxの2乗)で表現される関数 f(x)を積分すると、右辺は3x^3+C(Cは積分定数)となる。


12.
確率と統計に関する次の記述のうち、誤っているものはどれか。
あなたの回答: 中央値とは、データを小さい順に並べてちょうど真ん中に来る値である。データの個数が偶数の場合には、ちょうど真ん中にくるデータがないため、中央値は存在しないことになる。
正答: 中央値とは、データを小さい順に並べてちょうど真ん中に来る値である。データの個数が偶数の場合には、ちょうど真ん中にくるデータがないため、中央値は存在しないことになる。


13.
「ネイピア数、cos(60°)、1の対数、円周率、4の階乗」の5つの数からなるデータがある。このデータについて正しいものはどれか。
あなたの回答: 算術平均は中央値より大きい
正答: 算術平均は中央値より大きい


14.
NumPyに関する次の記述のうち、誤っているものはどれか。
あなたの回答: NumpyではPython標準のリストと同様、要素を取り出すためにスライスを使うことができる。Python標準のリストではスライスした結果は参照が返され、Numpyではスライスの結果はコピーが返される。
正答: NumpyではPython標準のリストと同様、要素を取り出すためにスライスを使うことができる。Python標準のリストではスライスした結果は参照が返され、Numpyではスライスの結果はコピーが返される。


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

import numpy as np
a = np.array([7,8,9])
b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a.shape, b[0:1, [1,2]])
あなたの回答: (1, 3) [[2 3]]
正答: (3,) [[2 3]]


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

import numpy as np
a = np.arange(1, 10, 3)
b = np.eye(20)
print(a[-1], b[15, 15])
あなたの回答: 10 0.0
正答: 7 1.0


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

import numpy as np
a = np.full((2, 3), np.pi).T.ravel()
b = np.linspace(0, 1.25, 6)
c = np.concatenate([a, b], axis=0)
print(a[1], c[-2])
あなたの回答: 3.141592653589793 1.0
正答: 3.141592653589793 1.0


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

import numpy as np
a = np.array([0, 8, 98, 998])
a = a + 2
a = a * 100
b = np.log10(a)
print(a[1], b[1])
あなたの回答: 1000 3.0
正答: 1000 3.0


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

import numpy as np
a = np.array([2, 4])
b = np.array([-1, 3])
c = np.array([[1, 2], [2, 3]])
d = a @ b
e = np.dot(c, a)
print(d, e)
あなたの回答: 10 [10 16]
正答: 10 [10 16]


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

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[“02”, “A”]  または a = df.iloc[1, 0]
正答: a = df.loc[“02”, “A”]  または a = df.iloc[1, 0]


21.
pandasに関する次の記述のうち正しいものはどれか。
あなたの回答: read_htmlメソッドを使うと、WebサイトのHTML内のtable要素をDataFrameに取り込むことができる。read_htmlの結果はDataFrameのリストになっており、table要素が複数ある場合もインデックス番号を指定することで目的のテーブルを取得できる。
正答: read_htmlメソッドを使うと、WebサイトのHTML内のtable要素をDataFrameに取り込むことができる。read_htmlの結果はDataFrameのリストになっており、table要素が複数ある場合もインデックス番号を指定することで目的のテーブルを取得できる。


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

import pandas as pd
df = pd.DataFrame([[50, “a”, False],[25, “b”, True],[35, “c”, True]])
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.iloc[:, 2] = df.loc[:, “A”] * 2
df.iloc[:, 1] = df.loc[:, “C”].apply(judge)
_ = df[“C”] < 80
df = df[_]
print(df)
print(df.iloc[1, 2], df.iloc[-1, 1])
あなたの回答: 70 high
正答: 70 high


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

import numpy as np
import pandas as pd
np.random.seed(123)
dates = pd.date_range(start=”2020-01-01″, periods=31)
df = pd.DataFrame(np.random.randint(1, 10, 31), index=dates, columns=[“rand”])
print(df)

df_year = pd.DataFrame(df.groupby(pd.Grouper(freq=’W-MON’)).sum(), columns=[“rand”] )
print(df_year)
あなたの回答: 6行目は月曜日の日付をインデックスとするDataFrameを生成する処理である。df_yearを出力すると、rand列の各値は月曜日から日曜日までのrand列の値を合計したものとなる。
正答: 6行目は月曜日の日付をインデックスとするDataFrameを生成する処理である。df_yearを出力すると、rand列の各値は月曜日から日曜日までのrand列の値を合計したものとなる。


24.
DataFrameの欠損値の処理に関する次の記述のうち、誤っているものはどれか。
あなたの回答: 欠損値が存在する行を削除するメソッドは、dropである。
正答: 欠損値が存在する行を削除するメソッドは、dropである。


25.
DataFrameの基本統計量に関する次の記述のうち、誤っているものはどれか。
あなたの回答: quartileメソッドは第3四分位数を取得できる。
正答: quartileメソッドは第3四分位数を取得できる。


26.
pandasの関数やメソッド等に関する次の記述のうち、正しいものはどれか。
あなたの回答: 相関係数はcorr関数で出力でき、その値は必ず-1から1の間となる。1に近いほど強い相関関係があり、-1では相関関係がないといえる。
正答: DataFrameをNumPy配列に変換するには、values属性を利用する。この場合、カラム名とインデックス名は共に保持されない。


27.
Matplotlibに関する次の記述のうち、正しいものはどれか。
あなたの回答: サブプロットにはlegendメソッドで凡例を表示することができる。legendメソッドの引数に loc=”min” を指定するとデータとの重なりが最小な位置に出力できる。
正答: 棒グラフとは異なり、ヒストグラムでは複数の値を指定すると、自動的に横に並んだ状態で表示される。


28.
Matplotlibに関する次の記述のうち、正しいものはどれか。
あなたの回答: 折れ線グラフやグラフの枠線、区切り線など、さまざまな線にスタイルを適用できる。linewidth引数を指定すると線の幅を変更でき、その際の単位はピクセルである。
正答: 散布図では、デフォルトではそれぞれのマーカーは丸で描画されるが、marker引数にマーカーの形を指定することにより、様々な形のマーカーを使用することができる。


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()
あなたの回答: 上記スクリプトの描画オブジェクトの中に配置されるサブプロットは2つである。
正答: 上記スクリプトの描画オブジェクトの中に配置されるサブプロットは2つである。


30.
次のスクリプトに関する説明のうち正しいものはどれか。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = [1, 2, 3]
y1 = [10, 2, 3]
y2 = [5, 3, 6]
labels = [‘red’, ‘blue’, ‘yellow’]
【ア】
ax.bar(x, y_total, tick_label=labels, label=’y1′)#…【イ】
ax.bar(x, y2, label=’y2′)#…【ウ】
ax.legend()

plt.show()
あなたの回答: 描画されるグラフには「red」「blue」「yellow」が凡例として表示される。
正答: このコード群は積み上げ棒グラフを描画するものである。


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()
あなたの回答: histメソッドのデフォルトのビン数は5であるが、上記スクリプトで出力されるヒストグラムのビンの数は25である。
正答: このスクリプトを実行するとヒストグラムに加えて度数分布表が出力される。


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()
あなたの回答: 円グラフの値は小数点以下1桁までが表示される
正答: 円グラフのアスペクト比は保持されない


33.
機械学習の前処理に関する次の記述のうち、誤っているものはどれか。
あなたの回答: 特徴量の正規化とは、たとえば、ある特徴量の値が4桁の数値(数千のオーダ)、別の特徴量の値が2桁の数値(数十のオーダ)のような場合、前者のオーダの特徴量が重視されやすくなるため、尺度を揃える処理をいう。
正答: One-hotエンコーディングは、ダミー変数化とも呼ばれ、生成された列の変数はダミー変数とも呼ばれる。scikit-learnでは、preprocessingモジュールのget_dummies関数を用いて実行できる。


34.
分類に関する次の記述のうち、誤っているものはどれか。
あなたの回答: 学習データセットとテストデータセットの分割は、scikit-learnでは、model_selectionモジュールのtrain_test_split関数を用いて実行できる。train_test_split関数の第1引数には目的変数を表すNumPy配列を、第2引数には説明変数(特徴量)を表すNumPy配列やpandasのDataFrameを指定する。
正答: 学習データセットとテストデータセットの分割は、scikit-learnでは、model_selectionモジュールのtrain_test_split関数を用いて実行できる。train_test_split関数の第1引数には目的変数を表すNumPy配列を、第2引数には説明変数(特徴量)を表すNumPy配列やpandasのDataFrameを指定する。


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)
あなたの回答: データセットは学習用が3割、テスト用が7割の比率で分割される。
正答: データセットは学習用が3割、テスト用が7割の比率で分割される。


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

[ スクリプトA ]
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(123)
X = np.random.random(size=50)
Y = 2X + 0.5np.random.rand(50)
fig, ax = plt.subplots()
ax.scatter(X, Y)
plt.show()

[ スクリプトB ]
from sklearn.decomposition import 【A】
ist = 【A】(n_components=2)
X_ist = ist.fit_transform(np.hstack((X[:, np.newaxis], Y[:, np.newaxis]))) …【B】

fig, ax = plt.subplots()
ax.scatter(X_ist[:, 0], X_ist[:, 1])
ax.set_xlabel(‘PC1’)
ax.set_ylabel(‘PC2’)
ax.set_xlim(-1.1, 1.1)
ax.set_ylim(-1.1, 1.1)
plt.show()
あなたの回答: このスクリプトは何度実行しても必ず同じ結果となる。
正答: スクリプトBでは、もとのデータを新たな1次元のデータに変換し、次元削減している。


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)
あなたの回答: このスクリプトにおいて花の種類は説明変数であり、スクリプトの6行目で変数「X」に格納されている。
正答: このスクリプトにおいて花の種類は説明変数であり、スクリプトの6行目で変数「X」に格納されている。


40.
クラスタリングに関する次の記述のうち、誤っているものはどれか。
あなたの回答: クラスタリングは、ある基準を設定してデータ間の類似性を計算し、データをクラスタ(グループ)にまとめるタスクであり、教師あり学習の典型的なタスクである。
正答: クラスタリングは、ある基準を設定してデータ間の類似性を計算し、データをクラスタ(グループ)にまとめるタスクであり、教師あり学習の典型的なタスクである。


シェアする

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

フォローする