PCAによる次元削除について勉強しています。
PCAが最小二乗法によって情報損失量の二乗和の最小を求めて次元削減を行っているというイメージはでき手法についてプログラムを作成しているのですが、以下のデータ設定においての次元削減の手法のプログラミングがわからずエラーが出ております。
x,y,z軸で測定したデータ各200個ずつのデータを一つのデータとしてnpyファイルデータを測定しているデータを読み込んでいます。
pcaをかけて次元削減を目指すことでdeeplearningにおける正答率などの向上をめざしています。
python
1data=np.load("acdata0.npy") 2data=np.array(data) 3print(data.shape) 4#この時点でdataのshapeは(200,3,1)の次元になっております。reshape(3,200)などをかけても(3,200,1)となってしまいdimentionが消せずに困っております。 5 6#このままpcaにかけると 7from sklearn import cross_validation, preprocessing,decomposition 8pca=decomposition.PCA(n_components=2) 9pca.fit(data) 10 11 12Found array with dim 3. Estimator expected <= 2. 13#以上のdimensionのエラーがでます。 14 15#data.ravel()を用いて(600,)の形にすると 16pca.fit(data) 17 18Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample. 19#ravel()によるreshapeを行うと以上のエラーとなる。
おそらく自分の中でのpcaについての考え方が間違っているのだとは思うのですが、xyz各200個のデータ(200,3,1)のデータをravel()などで(600,)の配列にする前にpcaをかけて次元を減らす手法などはございますでしょうか。この問題について何かアドバイスがいただけますと幸いです。
追記
この場合のpcaによる次元削減においては1つのarrayデータにx200個,y200個,z200個のデータが存在しているため、600次元のデータとはなっていると考えています。もしかするとまとめてではなく、x、y,zを各々を抽出してpcaで線形単回帰をおこなっていくべきなのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/21 17:13
2018/06/21 17:29