・負のインデックス値
・eye関数
・full関数、linspace関数、hstack関数
・ravel()
・NumPy 「ユニバーサルファンクション、ブロードキャスト」
・「ndarrayオブジェクトのドット積」@演算子、 np.dot(c, a)
・「pandas」「欠損値処理(fillnaメソッド、dropnaメソッド)」
・「Matplotlib」「積み上げ棒グラフの出力方法(barメソッド)」
・tick_label=labels, label=’y1′
・legend()
・「scikit-learn」クラスタリング、階層的クラスタリング(凝集型・分割型)、非階層的クラスタリング k-means
1.
機械学習に関する次の記述のうち、正しいものはどれか。
正答: 教師なし学習の1つであるDBSCAN法は密度準拠クラスタリン
2.
データ分析に関する次の記述のうち、正しいものはどれか。
正答: Pythonでデータ分析に使われる主なパッケージには、
3.
PythonおよびPythonの実行環境に関する次の記述のう
正答: pipコマンドは、The Python Package Index に公開されているPythonパッケージのインストールなどを行
4.
次のスクリプトの2行目以降を代替できるリスト内包表記として正
colors = [‘red’, ‘blue’, ‘yellow’]
lens =[]
for color in colors:
lens.append(len(color))
lens
正答: [len(color) for color in colors]
5.
次の正規表現を用いたスクリプトの[ ア ]の部分に入れたときエラーとなるものはどれか。
import re
prog = re.compile(‘Kus(a|u)n(a|o)(k|
[ ア ]
print(ret[0])
正答: ret = prog.search(‘Kusanoao’)
6.
モジュールに関する次の記述のうち誤っているものはどれか。
正答: loggingモジュールのログレベルには、
7.
正答: Jupyter Notebookはオープンソースで開発されているデータ分析、
8.
正答: ネイピア数とは数学定数の一つで、常用対数の底であり、通常「
9.
正答: Bの原点からのマンハッタン距離は11である。
Bベクトルの原点からのマンハッタン距離は、原点から座標軸に沿って終点に至るまでの距離です。
https://study.prime-strategy.co.jp/coverage/py3an1-09/
10.
正答: 行列同士の掛け算は行列となる。
https://study.prime-strategy.co.jp/coverage/py3an1-10/
11.
正答: 右辺が5x^2(5掛けるxの2乗)で表現される関数 f(x)を積分すると、右辺は15x^3+C(Cは積分定数)
参考 https://study.prime-strategy.co.jp/coverage/py3an1-11/
元の関数f(x)=6x^2を公式に当てはめて積分すると、結果は2x^3+C(Cは積分定数)となります。
12.
正答: 6面体のサイコロを1回振った場合、
13.
正答: 0の階乗は1の対数より大きい
・1の対数=0
1の対数に関しては、数字の0乗は1になる
・sin(30°)=1/2
・0の階乗=1
1の階乗が1になるということに関しては、0の階乗も1となる
参考:https://study.prime-strategy.co.jp/coverage/py3an1-13/
14.
正答: NumPyは配列や行列を効率よく扱うためのPythonのサー
→NumPyの配列用の型がndarray、行列用の型がmatrixです。
https://study.prime-strategy.co.jp/coverage/py3an1-14/
15.
次のスクリプトを実行した結果として正しいものはどれか。
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([7,8,9])
print(a[-1:, [1,2]], b.shape)
正答: [[5 6]] (3,)
参考:https://study.prime-strategy.co.jp/coverage/py3an1-15/
a[-1:, [1, 2]] の部分は、(2次元配列の)行が、負のインデックス値で指定されています。
ですから右のように、-1からそれ以降、つまり4,5,6の部分(青)がそれに該当します。
列についてはインデックス値1と2(赤)で指定されています。
これら(青と赤)の交わった5と6がprint関数で出力されています。
shape属性で、配列の形状、つまり各次元の大きさを確認します。
16.
次のスクリプトを実行した結果として正しいものはどれか。
import numpy as np
a = np.arange(1, 10, 2)
b = np.eye(6)
print(a[-1], b[3, 3])
正答: 9 1.0
参考:https://study.prime-strategy.co.jp/coverage/py3an1-16/
arange関数で数列を作り変数aに格納します。
eye関数で単位行列を作り変数bに格納します。
17.
次のスクリプトを実行した結果として正しいものはどれか。
import numpy as np
a = np.full((2, 3), np.pi).T.ravel()
b = np.linspace(0, 1, 5)
c = np.hstack([a, b])
print(a[-1], c[-2])
正答: 3.141592653589793 0.75
参考:https://study.prime-strategy.co.jp/coverage/py3an1-17/
numpy.full
関数は、全ての要素が同じ任意の値の初期化配列を作成する関数です。
https://www.headboost.jp/numpy-full/
これに対してT属性で転置がなされ、
さらにこれに対しravelメソッドが使われ1次元配列になります。
以上を変数aに格納します。
linspace関数で、0から1までを等間隔に区切った5つの要素の配列を作り変数bに格納します。配列aとbをhstack関数で連結し、変数cに格納します。—
18.
次のスクリプトを実行した結果として正しいものはどれか。
import numpy as np
a = np.array([0, 9, 99, 999])
a = a + 1
a = a * 10
b = np.log10(a)
print(a[2], b[1])
正答: 1000 2.0
https://study.prime-strategy.co.jp/coverage/py3an1-18/
配列の内部データに直接演算を行うNumpyの機能をブロードキャストといいます。
Numpy配列の要素内のデータを一括変換する関数を、ユニバーサルファンクションといいます。
19.
次のスクリプトを実行した結果として正しいものはどれか。
import numpy as np
a = np.array([1, 4])
b = np.array([-1, 6])
c = np.array([[1, 2], [3, 4]])
d = a @ b
e = np.dot(c, a)
print(d, e)
正答: 23 [ 9 19 ]
参考:https://study.prime-strategy.co.jp/coverage/py3an1-19/
@演算子でaとbのドット積を求め、その値を変数dに格納します。
同様に、ドット関数でcとaのドット積を求め、eに格納します。
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]
21.
正答: read_htmlメソッドを使うと、
→複数のテーブルがある場合、1つ目のテーブルは[0]、2つ目のテーブルは[1]で確認することができます。https://ai-inter1.com/python-pandas_scraping/
それではWEBページから取得したテーブルの情報を表示してみましょう。結果はリストの形式で取得されます。例えば、読み込み対象のWEBページに複数のテーブルがある場合、1つ目のテーブルは[0]、2つ目のテーブルは[1]で確認することができます。
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 , 2], df.loc[“03″ ,”B”])
正答: 80 middle
参考:https://study.prime-strategy.co.jp/coverage/py3an1-22/
23.
次のスクリプトに関する説明のうち誤っているものはどれか。
import numpy as np
import pandas as pd
np.random.seed(123)
dates = pd.date_range(start=”2017-04-
df = pd.DataFrame(np.random.
df_year = pd.DataFrame(df.groupby(pd.
正答: 5行目は、
→random.randintに渡された引数をみると、生成する整数の範囲の最小値は1、最大値は「31の一つ手前」、つまり「30」までという指定がされていることがわかります(配列の形状は365行ということで特に問題ありません)。
そのため選択肢の文章中「1から31までの」の部分が誤りであることを確認できます。
https://study.prime-strategy.co.jp/coverage/py3an1-23/
24.
正答: mode().iloc[1.:]
→DataFrameの各列の最頻値を算出するには、「mode().iloc[0]」を使います。
https://py-memo.com/python/missing-value-delete-interpolate/結果の
pandas.DataFrame
の一行目が各列の最頻値(複数ある場合はその中の一つ)になる。一行目はiloc[0]
で取得可能。https://note.nkmk.me/python-pandas-mode/
25.
正答: describeメソッドは期待値を取得できる。
26.
正答: 相関係数はcorr関数で出力でき、その値は必ず-
27.
正答: 「オブジェクト指向スタイル」
→参考:https://study.prime-strategy.co.jp/coverage/py3an1-27/
curveメソッド→存在しない??
28.
正答: 同じフォントの指定を複数回繰り返す場合、
→タプルではなく辞書データが正しいです。またこの場合の辞書データは上書きも可能です。参考:https://study.prime-strategy.co.jp/coverage/py3an1-28/
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()
正答: np.sin(x)、np.cos(x)は、それぞれ引数「x」
→サブプロットはひとつ
https://study.prime-strategy.co.jp/coverage/py3an1-29/
https://stats.biopapyrus.jp/python/subplot.html
30.
次のスクリプトに関する説明のうち正しいものはどれか。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = [1, 2, 3]
y1 = [10, 2, 3]
y2 = [5, 3, 6]
labels = [‘Setosa’, ‘Versicolor’, ‘Virginica’]
【ア】
ax.bar(x, y_total, tick_label=labels, label=’y1′) …【イ】
ax.bar(x, y2, label=’y2′) …【ウ】
ax.legend()
plt.show()
正答: barメソッドの引数に変数y1は利用されていない。
→「Setosa」「Versicolor」
ax.bar(x, y_total, tick_label=labels, label=’y1′) …【イ】
ax.bar(x, y2, label=’y2′)
それぞれy1,y2の凡例が指定されている。
参考:https://study.prime-strategy.co.jp/coverage/py3an1-30/
barメソッドの引数として変数xでx軸の値、y_totalでy軸の値、tick_label引数で目盛りのラベル、そしてlabel引数で凡例用ラベルを指定します。
さらに同じサブプロットのaxにbarメソッドで棒グラフを一つ追加します。x軸は変わらず、y軸の値は変数y2で指定します。
またlegendメソッドで凡例を表示させます。
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メソッドのデフォルトのビン数は20であるが、
→bins ビン (表示する棒) の数。階級数。(デフォルト値: 10)
https://pythondatascience.plavox.info/matplotlib/%E3%83%92%E3%82%B9%E3%83%88%E3%82%B0%E3%83%A9%E3%83%A0
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()
正答: 円グラフのアスペクト比は保持される
https://study.prime-strategy.co.jp/coverage/py3an1-32/
33.
正答: 最小最大正規化とは、特徴量の最小値が0、
https://study.prime-strategy.co.jp/coverage/py3an1-33/
34.
正答: 構築したモデルが持つ未知のデータに対する対応能力を「
https://study.prime-strategy.co.jp/coverage/py3an1-34/
35.
正答: scikit-
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)
正答: このスクリプトで行う回帰は住宅価格を特徴量から求める単回帰で
https://study.prime-strategy.co.jp/coverage/py3an1-36/
37.
次元削減に関する次の記述のうち、正しいものはどれか。
正答: 主成分分析(principal component analysis)は、scikit-
38.
モデルの評価指標に関する次の記述のうち、
正答: 適合率、再現率、F値、正解率は、
→混同行列で計算する適合率、再現率、F値、正解率は、(回帰ではなく)分類モデルの評価指標です。
https://study.prime-strategy.co.jp/coverage/py3an1-38/
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)
正答: このスクリプトを複数回実行した場合、
→GridSearchCVクラスはハイパーパラメータ、今回は決定木の深さを最適化するために用います。
決定木の深さの候補として、3つの値(「3」「4」「5」)からなるリストと引数名を対応付ける辞書データをparam_grid変数に格納します。
fitメソッドに学習データを与えて、cvにデータを学習させ分類モデルを構築します。
ここで、推測された最適な決定木の深さが「3」であることを確認しておきます。
なお先ほどGridSearchCVの引数cvに、10分割の交差検証を指定したため、最適な決定木の深さの値は毎回変わります。
https://study.prime-strategy.co.jp/coverage/py3an1-39/
40.
クラスタリングに関する次の記述のうち、正しいものはどれか。
正答: k-meansは、最初にランダムにクラスタ中心を割り当て、
→k-meansの実行にはclusterモジュールのKMeansクラスを用います。
https://study.prime-strategy.co.jp/coverage/py3an1-40/