PCA : 主成分分析

主成分の説明として正しいものを選択肢から選んでください.

[選択肢]
1. 主成分は他の主成分と直行している.
2. 主成分は、元のでデータセットの情報を保持している平均値を算出し、その値に近いデータを集めていくことでもとまる.
3. 主成分は、元のデータの分散を維持できるより高い次元の軸のことである.
4. 主成分は、それぞれのデータの集合に対して、最大 3 つまでしか存在しない.

PCA : 主成分分析

主成分の説明として正しいものを選択肢から選んでください.

[選択肢]
1. 主成分は他の主成分と並行になるようにもとまる.
2. 主成分は、元のでデータセットの情報を保持している平均値を算出し、その値に近いデータを集めていくことでもとまる.
3. 主成分は、元のデータの分散を維持できるより低い次元の軸のことである.
4. 主成分は、それぞれのデータの集合に対して、最大 3 つまでしか存在しない.

主成分の決定 – 特異値分解 (SVD)

次のコードで空欄になっている行に入る適切な選択肢を選び、3 次元データに対する PCA を実装してください.

import numpy as np
# Q1:主成分分析用のクラスをインポートしてください.
fromsklearn.decomposition import ##########

[Q1 選択肢]
1. PCA
2. PCAClassifier
3. PrincipalComonetAnalysis
4. t-SNE

np.random.seed(4)
m = 60
w1, w2 = 0.1, 0.3
noise = 0.1

angles = np.random.rand(m) * 3 * np.pi / 2 – 0.5
X = np.empty((m, 3))
X[:, 0] = np.cos(angles) + np.sin(angles)/2 + noise * np.random.randn(m) / 2
X[:, 1] = np.sin(angles) * 0.7 + noise * np.random.randn(m) / 2
X[:, 2] = X[:, 0] * w1 + X[:, 1] * w2 + noise * np.random.randn(m)

# Q1:PCA() クラスを用いて、3 次元データ X を 2 次元へ次元削減してください.
pca = ##########
X2D = pca.fit_transform(X)
print(X2D[:5])

[Q1の選択肢]
1. PCA(n_components = 2)
2. PCA(2)
3. PCA(n_dims = 2)

因子寄与率

因子寄与率を説明している以下の文で空欄に入る適切な単語を選択肢 1 ~ 3 から選んでください.

因子寄与率とは、データセット全体の ( Q1___ ) に対する個々の主成分の軸の ( Q1___ ) の割合である.

1. 分布間距離 ( KL divergence)
2. 期待値
3. 分散

因子寄与率

因子寄与率を説明している以下の文で空欄に入る適切な単語を選択肢から選んでください.

因子寄与率とは、データセットに含まれる各データの ( Q1 ____ ) の割合をデータセットの(Q2 _____ ) 分だけ算出したもである.

[Q1–2選択肢]
1. 要素数
2. 期待値
3. 次元数
4. 特徴量
5. 分散

因子寄与率の実装

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、変数 pca から各軸の因子寄与率を求めてください.

import numpy as np
from sklearn.decomposition import PCA

np.random.seed(0)
m = 60
w1, w2 = 0.1, 0.3
noise = 0.1

angles = np.random.rand(m) * 3 * np.pi / 2 – 0.5
X = np.empty((m, 3))
X[:, 0] = np.cos(angles) + np.sin(angles)/2 + noise * np.random.randn(m) / 2
X[:, 1] = np.sin(angles) * 0.7 + noise * np.random.randn(m) / 2
X[:, 2] = X[:, 0] * w1 + X[:, 1] * w2 + noise * np.random.randn(m)

pca = PCA(n_components = 2)
X2D = pca.fit_transform(X)
print(X2D[:5])

# Q1
##########

[Q1の選択肢]
1. pca.explained_variance_ratio_
2. pca.explained_ratio_
3. pca.explained_variance_

次数の選択 – 屈曲点

次のコードで空欄になっている行に入る適切なものを 1 – 3 から選び、PCA で次元削減し、
mnist 訓練セットの分散が 90% を維持するために必要な次元を求めてください.
また、PCA クラスの n_components を設定して同様に次元を求めてください.

import numpy as np

from sklearn.decomposition import PCA
from six.moves import urllib
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split

mnist = fetch_openml(‘mnist_784’, version=1)
mnist.target = mnist.target.astype(np.int64)

X = mnist[“data”]
y = mnist[“target”]

X_train, X_test, y_train, y_test = train_test_split(X, y)

pca = PCA()
pca.fit(X_train)

# Q1:因子寄与率を足し合わせてください.
##########

[Q1の選択肢]
1. cumsum = np.cumsum(pca.predict(X_test))
2. cumsum = np.cumsum(pca.explained_variance_ratio_)
3. cumsum = np.cumsum(y_test)

# Q2:訓練セットの分散が 90% を維持するために必要な次元を求めてください.
##########
print(d)

[Q2の選択肢]
1. d = np.argmax(cumsum >= 0.90) + 1
2. d = np.argmax(cumsum >= 0.90)
3. d = np.argmax(cumsum = 0.90)

#Q3:変数 X_train を PCA で次元圧縮してください.
##########
pca.fit_transform(X_train)

[Q3の選択肢]
1. pca = PCA(n_components = 0.90)
2. pca = PCA(n_components >= 0.90)
3. pca = PCA(n_components <= 0.90) #Q4:Q2 と同じ結果を出力してください. print(##########) [Q4の選択肢] 1. pca 2. pca_predict_components(X_test) 3. pca.n_components_

次数の選択 – 屈曲点

次のコードで空欄になっている行に入る適切なものを 1 – 3 から選び、PCA で次元削減し、
mnist 訓練セットの分散が 90% を維持するために必要な次元を求めてください.
また、PCA クラスの n_components を設定して同様に次元を求めてください.

import numpy as np

from sklearn.decomposition import PCA
from six.moves import urllib
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split

mnist = fetch_openml(‘mnist_784’, version=1)
mnist.target = mnist.target.astype(np.int64)

X = mnist[“data”]
y = mnist[“target”]

X_train, X_test, y_train, y_test = train_test_split(X, y)

pca = PCA()
pca.fit(X_train)

# Q1:因子寄与率を足し合わせてください.
##########

[Q1の選択肢]
1. cumsum = np.cumsum(pca.predict(X_test))
2. cumsum = np.cumsum(y_test)
3. cumsum = np.cumsum(pca.explained_variance_ratio_)

# Q2:訓練セットの分散が 90% を維持するために必要な次元を求めてください.
##########
print(d)

[Q2の選択肢]
1. d = np.argmax(cumsum = 0.90)
2. d = np.argmax(cumsum >= 0.90) + 1
3. d = np.argmax(cumsum >= 0.90)

#Q3:変数 X_train を PCA で次元圧縮してください.
##########
pca.fit_transform(X_train)

[Q3の選択肢]
1. pca = PCA(n_components >= 0.90)
2. pca = PCA(n_components <= 0.90) 3. pca = PCA(n_components = 0.90) #Q4:Q2 と同じ結果を出力してください. print(##########) [Q4の選択肢] 1. pca.n_components_ 2. pca_predict_components(X_test) 3. pca

PCA 逆変換 – 次元圧縮

PCA による次元圧縮を説明している以下の文で空欄に入る適切な単語を選択肢 1 ~ 3 から選んでください.

PCA では次元削減ができるが、PCA 射影の逆変換を行えば次元削減されたデータセットを再構築できる.
オリジナルデータと再構築されたデータの平均二乗誤差を ( Q1 ___ ) と呼ぶ.

1. 圧縮誤差
2. PCA 誤差
3. 再構築誤差

因子寄与率の実装

次のコードで空欄になっている行に入る適切な選択肢を 1 ~ 3 から選び、変数 pca から各軸の因子寄与率を求めてください.

import numpy as np
from sklearn.decomposition import PCA

np.random.seed(0)
m = 60
w1, w2 = 0.1, 0.3
noise = 0.1

angles = np.random.rand(m) * 3 * np.pi / 2 – 0.5
X = np.empty((m, 3))
X[:, 0] = np.cos(angles) + np.sin(angles)/2 + noise * np.random.randn(m) / 2
X[:, 1] = np.sin(angles) * 0.7 + noise * np.random.randn(m) / 2
X[:, 2] = X[:, 0] * w1 + X[:, 1] * w2 + noise * np.random.randn(m)

pca = PCA(n_components = 2)
X2D = pca.fit_transform(X)
print(X2D[:5])

# Q1
##########

[Q1の選択肢]
1. pca.explained_ratio_
2. pca.explained_variance_ratio_
3. pca.explained_variance_