2017-08-22 8 views
1

元のデータセットに8つの機能があり、n_components = 3sklearn.decomposition.PCAを使用しています)とPCAを適用したとします。その後、私は3つのPCAコンポーネント(これは私の新しい機能です)を使用してモデルを訓練します。予測中に主成分分析を使用する方法

予測しながらPCAを適用する必要がありますか? データポイントを1つしか予測していなくても、この操作を行う必要はありますか?

私が予測するとき、すべてのデータポイントは2Dマトリックスの行です(予測するすべてのデータポイントで構成されています)。だから、ただ1つのデータポイントにPCAを適用すると、対応する行ベクトルはゼロベクトルに変換されます。

答えて

1

モデルをPCAの最初の3つのコンポーネントに合わせた場合は、新しいデータを適切に変換する必要があります。彼らは最初のtrainigにPCAに合わせて、コードで

pca = PCA(n_components=n_components, svd_solver='randomized', 
      whiten=True).fit(X_train) 

X_train_pca = pca.transform(X_train) 
X_test_pca = pca.transform(X_test) 


clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid) 
clf = clf.fit(X_train_pca, y_train) 

y_pred = clf.predict(X_test_pca) 

:たとえば、hereから撮影したこのコードを検討してください。次に、それらは訓練とテストの両方を変換し、変換されたデータにモデルを適用します(その場合はSVM)。

X_testが1データポイントのみで構成されていても、PCAを使用できます。データを2Dマトリックスに変換するだけです。たとえば、データポイントが[1,2,0,5]の場合、X_test=[[1,2,0,5]]です。つまり、1行の2D行列です。

+0

しかし、私が予測している新しいサンプルが単一の行ベクトルであればどうでしょうか?それから私はその単一の行でPCAを使用する場合、その行列のすべての要素はゼロになるでしょうか? –

+0

@TanmayBhatnagar私の更新された答えの最後の段落を参照してください。 –

関連する問題