前提
大学のpythonの課題で答えが開示されたのですがarr1がどうしてそうなるのかわからないです。
問題からarr1が(9,5,9),(0.5,0.5,0.2)になることがわかるのですか?
どう考えるのでしょうか教えていただければと思います。
初質問なので足りないところあればいってください
よろしくお願いします。
問題
•以下のプログラムを作成せよ 1.平均(8, 8, 8)、各軸方向の標準偏差が(1, 1, 0.5)の分布に従って三次元ベクトルを100個、乱数を用いて作成(乱数シードは"314"を指定すること) 2.1.のデータ群に対し主成分分析を行った際の第一、第二主成分を出力 実行例: [-0.65195589 0.65607819 -0.38015118] [-0.70294748 -0.71092027 -0.02138237]
課題の解答
Python
1import numpy as np 2import sklearn 3from sklearn.decomposition import PCA 4 5np.random.seed(314) 6arr0 = np.random.normal((8,8,8), (1,1,0.5), (100,3)) 7arr1 = np.random.normal((9,7,9), (0.5,0.5,0.2), (100,3)) ←ここです 8arr2 = np.concatenate([arr0,arr1]) 9N=2 10 11pca = PCA(n_components=int(N)) 12pca.fit(arr2) 13 14print(pca.components_[0]) 15print(pca.components_[1])
自分の回答
Python
1import numpy as np 2from sklearn.decomposition import PCA 3 4# 乱数シードを指定 5np.random.seed(314) 6 7# 平均(8, 8, 8)、各軸方向の標準偏差が(1, 1, 0.5)の分布に従って三次元ベクトルを100個作成 8data = np.random.normal(loc=[8, 8, 8], scale=[1, 1, 0.5], size=(100, 3)) 9 10# 主成分分析を実行 11pca = PCA(n_components=2) 12pca.fit(data) 13 14 15# 第一、第二主成分を出力 16print(pca.components_[0]) 17print(pca.components_[1])
得られた出力↓
[-0.82369139 0.55806426 -0.10048272] [-0.56232634 -0.82671648 0.01813685]
補足情報(FW/ツールのバージョンなど)
Google Colaboratory使用
あなたの回答
tips
プレビュー