データ分析・上級問題チェック

問題 37 /40

scikit-learnの次のコードに関する説明で、誤っているものはどれか。 from sklearn.decomposition import PCA from sklearn.datasets import load_iris iris = load_iris() X = iris.data pca = PCA(n_components=2) X_trans = pca.fit_transform(X)

選択 1

主成分分析をしている。

選択 2

「X = iris.data」は説明変数であり、目的変数の「iris.target」がないので学習できない。

選択 3

「PCA(n_components=2)」で、2次元のデータに変換することを指定している。

選択 4

「pca.fit_transform(X)」で、学習と変換を同時に行なっている。

解説

選択肢2が正解です。 主成分分析は教師なし学習のため、目的変数がなくても学習できます。 問題文の「iris.data」は、「がく片の長さ」など4つの次元(説明変数)が格納されています。
主成分分析のPCAクラスを利用すると、4つの説明変数の特徴を抽出しながら、次元を減らすことができます。 ------------------------------- from sklearn.decomposition import PCA from sklearn.datasets import load_iris # irisデータをロード。 iris = load_iris() # 4つの説明変数をXに代入。 X = iris.data # 主成分分析のPCAクラスをインスタンス化。「n_components=2」で説明変数を2つに削減することを指定。 pca = PCA(n_components=2) # 4つの説明変数の主成分を分析し(fit)、2つの説明変数に削減(transform)。 X_trans = pca.fit_transform(X) ------------------------------- この「X_trans」を可視化すると、次の図になります。
irisデータは「iris.target」に正解データがありますが、今回のように主成分分析をすることで、正解データがなくてもirisを3種類にクラスタリングできます。 このように主成分分析は、教師なし学習のクラスタリング、前処理としての次元削減、特徴量の可視化など、様々な目的で利用できます。 (公式書籍 p.246-251)