标准定标器在 PCA 之前产生不同的值

Standard scaler produces different values before PCA

我正在做生物识别中的分类问题。我正在将测试集中每个探针的欧氏距离与图库进行比较。

每次我 运行 代码都会得到不同的结果。如果我移除定标器,我得到的总是相同的结果。

为什么缩放器会产生不同的值? (略有不同,有时多识别10个探针,有时少10个)。感谢所有回答的人。

scaler = StandardScaler()
training_walks_matrix = load('training_imputeZero.npy')
training_scaled = scaler.fit_transform(training_walks_matrix)
testing_walks_matrix = load('testing_imputeZero.npy')
testing_scaled = scaler.transform(testing_walks_matrix)
pca = PCA(n_components=50).fit(training_scaled)
training_walks_matrix = pca.transform(training_scaled)
testing_walks_matrix = pca.transform(testing_scaled)

我唯一可以怀疑的是,在您的案例中,可能在幕后使用了 arpackrandomized 求解器,因为这是自动定义的。在这种情况下,您需要修复随机种子才能重现结果。

尝试通过在 PCA 实例的输入参数 random_state 中传递一个值来修复随机种子。

myseed = 0

scaler = StandardScaler()
training_walks_matrix = load('training_imputeZero.npy')
training_scaled = scaler.fit_transform(training_walks_matrix)
testing_walks_matrix = load('testing_imputeZero.npy')
testing_scaled = scaler.transform(testing_walks_matrix)

#here
pca = PCA(n_components=50, random_state=myseed).fit(training_scaled)

training_walks_matrix = pca.transform(training_scaled)
testing_walks_matrix = pca.transform(testing_scaled)