前提・実現したいこと
学習用のAのデータセットと、予測したいBのデータセットを用意しました。
Aのデータセットは26995個のデータが入っており、Bのデータセットは100個のデータが入っています。
それぞれのデータセットの次元は、3072次元です。
Aのデータセットの次元削減したデータを学習させたモデルをサーバーに保存しておき、
そのモデルをBのデータセットの予測に使用したいと思っています。
Bのデータセットの予測のときに、Aのデータセットの次元削減と同じパラメータで、次元削減を行っているのですが、
異なる分布になっているようで、うまく予測ができない状態となっています。
当方初心者なので、エラーが出ていればそこの修正をすればいいのですが、どこを直したら良いのかもわからずです。。。
すみませんが、どなたかご教示いただけますと幸いです。
次元削減を行っているソースコード
ABそれぞれのデータセットの次元削減で下記の関数を使用しています。
python
1from sklearn.decomposition import PCA 2 3#データを投げると、10次元に削減したデータを返す関数 4def dimensionality_reduction(self, data): 5 pca = PCA(n_components=10, random_state=510, svd_solver="full") 6 data_pca = pca.fit_transform(data) 7 return data_pca
Aのデータを fit_transform() したあと、Bのデータは学習済みのPCAオブジェクトを使って transform() していますか?
つまり、Bのデータで fit_transform() を呼び出していたりしないでしょうか?
ご回答くださいましてありがとうございます。
おっしゃる通り、Bのデータでfit_transform()を呼び出しておりました。
ドキュメント読んでみると、fitとtransformがそれぞれあるようなのですが、
AのデータセットをfitさせたPCAオブジェクトをダンプしておいてBのデータセットの次元削減時に
ダンプしたPCAオブジェクトを読み込んで使用するということでしょうか・・・?
回答に記載しました。
回答2件
あなたの回答
tips
プレビュー