Я работаю над примером PCA с Scikit-Learn и SVD в следующем наборе данных.Однако я подумал, что должен получить одинаковые компоненты PCA с обоими методами в конце, но я обнаружил, что знаки поменялись местами.Я следил за разными ресурсами, но правильно предполагаю.Не совсем понял, зачем получаю этот знак разворота.Ниже то, что я сделал.Xpca
и Xsvd
должны быть одинаковыми, как я думал.
Полезные ссылки 1 , 2
import pandas as pd
data = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", header=None)
data.columns = ["V"+str(i) for i in range(1, len(data.columns)+1)] # rename column names to be similar to R naming convention
data.V1 = data.V1.astype(str)
X = data.loc[:, "V2":] # independent variables data
y = data.V1 # dependent variable data
# Using Scikit-Learn
from sklearn.preprocessing import scale
from sklearn.decomposition import PCA
standardisedX = scale(X)
standardisedX = pd.DataFrame(standardisedX, index=X.index, columns=X.columns)
pca = PCA().fit(standardisedX)
Xpca = pd.DataFrame(pca.transform(standardisedX))
# Using SVD
U, S, V = np.linalg.svd(standardisedX, full_matrices=False, compute_uv=True)
Xsvd = pd.DataFrame(U.dot(np.diag(S)))